# Creating payout

<mark style="color:green;">`POST`</mark> `/api/public/v1/payouts`

Creates a payout and immediately queues it for broadcast on the specified network. The response always returns `status: processing`. The `txid` field is `null` on creation and is populated once the transaction is sent — poll [Read Payout](/payouts/reading-payout.md) to track progress.

{% hint style="danger" %}
Treat a successful response as irreversible. Once the API accepts the request, the payout is queued and cannot be recalled.
{% endhint %}

### XRP destination tag

XRP payouts require a destination tag appended to the wallet address as `address?dt=tag`. The destination tag identifies the specific recipient within a shared XRP wallet — without it, the funds cannot be attributed to the correct account.

Collect the destination tag from your recipient before creating the payout. If the recipient does not have a destination tag, pass `0`:

```
rwCQVZLSMNY6DgMH61317qvH3nHYqm68PF?dt=0
```

{% hint style="danger" %}
Funds sent without a valid destination tag cannot be attributed to a specific account and may be permanently lost.
{% endhint %}

**cURL**

```bash
## Create payout XRP

curl -X "POST" "https://api.sandbox.txn.io/api/public/v1/payouts" \
     -H 'Content-Type: application/vnd.api+json' \
     -H 'Authorization: Bearer <api_key>' \
     -d $'{
  "data": {
    "type": "payouts",
    "attributes": {
      "reference": "b8ad764b-7951-4cbc-9a15-efa91d47fe4e",
      "amount": "1000",
      "currency": "TRY",
      "chargeCurrency": "EUR",
      "accountChargedId": "13a85b45-8543-41c7-b963-394d4ea128ae",
      "absorbPayoutFee": true,
      "absorbNetworkFee": false,
      "address": "rLsBa2vWV2uuPx2UKbocAZG2WHXoaGyMPf?dt=61",
      "payNetwork": "txrp",
      "paymentMethod": "on_chain",
    }
  }
}'
```

**Headers**

<table><thead><tr><th width="320">Name</th><th>Value</th></tr></thead><tbody><tr><td>Content-Type</td><td><code>application/vnd.api+json</code></td></tr><tr><td>Authorization</td><td><code>Bearer &#x3C;api_key></code></td></tr></tbody></table>

**Request Body**

<table><thead><tr><th>Name</th><th width="100">Type</th><th width="105">Required</th><th>Description</th></tr></thead><tbody><tr><td>data.type</td><td>string</td><td>Yes</td><td>Can only be <code>payouts</code>.</td></tr><tr><td>data.attributes.reference</td><td>string</td><td>No</td><td>Your internal correlation key for this payout — use your order ID, user ID, or any value that lets you match this payout to a record in your system. Must be unique per payout.</td></tr><tr><td>data.attributes.amount</td><td>number</td><td>Yes</td><td>Payout amount in <code>currency</code>. Contact Txn support for minimum and maximum values per currency.</td></tr><tr><td>data.attributes.currency</td><td>string</td><td>Yes</td><td>Currency of the payout amount. When <code>chargeCurrency</code> is omitted, also determines which of your Txn account balances is debited. See <a href="/pages/SA7q0b6VrvXO3W09TQfS">Supported Currencies</a>.</td></tr><tr><td>data.attributes.chargeCurrency</td><td>string</td><td>No</td><td>Specifies from which merchant's currency account the payout amount and fees should be taken. Can be any tradable fiat or cryptocurrency listed on the <a href="/pages/SA7q0b6VrvXO3W09TQfS">Supported currencies</a> page — display fiat currencies are not accepted. If omitted, defaults to the <code>data.attributes.currency</code> account; in that case <code>currency</code> must itself be a tradable fiat or cryptocurrency, otherwise <code>chargeCurrency</code> must be supplied.</td></tr><tr><td>data.attributes.accountChargedId</td><td>string</td><td></td><td>ID of the account to debit the payout from. Can be a master or subaccount ID. Defaults to your master account. Requires <code>chargeCurrency</code>.</td></tr><tr><td>data.attributes.payNetwork</td><td>string</td><td>Yes</td><td>Network code for the cryptocurrency to send. See <a href="/pages/SA7q0b6VrvXO3W09TQfS">Supported Currencies</a>.</td></tr><tr><td>data.attributes.address</td><td>string</td><td>Yes</td><td>Recipient's wallet address. For XRP, include the destination tag as <code>address?dt=tag</code>.</td></tr><tr><td>data.attributes.absorbFees</td><td>boolean</td><td>No</td><td><mark style="color:red;">Deprecated.</mark> Use <code>absorbPayoutFee</code> and <code>absorbNetworkFee</code> instead.</td></tr><tr><td>data.attributes.absorbPayoutFee</td><td>boolean</td><td>No</td><td>If <code>false</code> or omitted, the payout fee is deducted from the amount the recipient receives. If <code>true</code>, the fee is charged to your account balance instead.</td></tr><tr><td>data.attributes.absorbNetworkFee</td><td>boolean</td><td>No</td><td>If <code>false</code> or omitted, the network fee is deducted from the amount the recipient receives. If <code>true</code>, the fee is charged to your account balance instead.</td></tr><tr><td>data.attributes.paymentMethod</td><td>string</td><td>No</td><td><code>on_chain</code> sends cryptocurrency directly to the recipient's wallet. <code>binance_pay</code> routes the payment off-chain through Binance Pay and requires <code>receiverBinanceId</code>. Defaults to <code>on_chain</code>.</td></tr><tr><td>data.attributes.receiverBinanceId</td><td>string</td><td>No</td><td>Recipient's Binance ID (8–10 digits). Required for <code>binance_pay</code> payouts. Validate it first using the <a href="/pages/ZmNuWGIc9tmIwns5ay5k">Validate Binance ID</a> endpoint.</td></tr></tbody></table>

**Response Body**

<table><thead><tr><th>Name</th><th width="96">Type</th><th>Description</th></tr></thead><tbody><tr><td>data.id</td><td>string</td><td>Payout ID.</td></tr><tr><td>data.type</td><td>string</td><td>Always <code>payouts</code>.</td></tr><tr><td>data.attributes.reference</td><td>string</td><td>Your internal correlation key, as set at creation.</td></tr><tr><td>data.attributes.status</td><td>string</td><td>Payout status. Refer to <a href="/pages/ISxxub0HyhX1k8q53l50">Payout Status Flow</a>.</td></tr><tr><td>data.attributes.address</td><td>string</td><td>Recipient's wallet address.</td></tr><tr><td>data.attributes.createdAt</td><td>string</td><td>ISO 8601 timestamp of when the payout was created.</td></tr><tr><td>data.attributes.expiresAt</td><td>string</td><td>ISO 8601 timestamp of when the exchange rate lock expires.</td></tr><tr><td>data.attributes.absorbFees</td><td>boolean</td><td>Deprecated. Use <code>absorbPayoutFee</code> and <code>absorbNetworkFee</code> instead.</td></tr><tr><td>data.attributes.absorbPayoutFee</td><td>boolean</td><td>If <code>false</code>, the payout fee was deducted from the amount the recipient received. If <code>true</code>, the fee was charged to your account balance.</td></tr><tr><td>data.attributes.absorbNetworkFee</td><td>boolean</td><td>If <code>false</code>, the network fee was deducted from the amount the recipient received. If <code>true</code>, the fee was charged to your account balance.</td></tr><tr><td>data.attributes.amount</td><td>number</td><td>Payout amount in <code>currency</code>.</td></tr><tr><td>data.attributes.currency</td><td>string</td><td>Payout amount currency code.</td></tr><tr><td>data.attributes.payCurrency</td><td>string</td><td>Currency code of the cryptocurrency sent to the recipient.</td></tr><tr><td>data.attributes.payAmount</td><td>string</td><td>Amount of cryptocurrency sent to the recipient.</td></tr><tr><td>data.attributes.txid</td><td>string</td><td>On-chain transaction hash. Share with the recipient as proof of payment.</td></tr><tr><td>data.attributes.payNetwork</td><td>string</td><td>Network code of the cryptocurrency sent. See <a href="/pages/SA7q0b6VrvXO3W09TQfS">Supported Currencies</a>.</td></tr><tr><td>data.attributes.payNetworkName</td><td>string</td><td>Human-readable network name, e.g. <code>Tron</code>.</td></tr><tr><td>data.attributes.networkFee</td><td>string</td><td>Network fee amount in <code>networkFeeCurrency</code>.</td></tr><tr><td>data.attributes.networkFeeCurrency</td><td>string</td><td>Currency of the network fee.</td></tr><tr><td>data.attributes.payoutFee</td><td>string</td><td>Txn service fee amount in <code>payoutFeeCurrency</code>.</td></tr><tr><td>data.attributes.payoutFeeCurrency</td><td>string</td><td>Currency of the Txn service fee.</td></tr><tr><td>data.attributes.displayFee</td><td>string</td><td>Payout fee expressed in <code>currency</code>.</td></tr><tr><td>data.attributes.displayFeeCurrency</td><td>string</td><td>Currency of <code>displayFee</code>. Always matches <code>currency</code>.</td></tr><tr><td>data.attributes.amountCharged</td><td>string</td><td>Total amount debited from your account, including all fees, in <code>amountChargedCurrency</code>.</td></tr><tr><td>data.attributes.amountChargedCurrency</td><td>string</td><td>Currency of <code>amountCharged</code>. Matches <code>chargeCurrency</code>.</td></tr><tr><td>data.attributes.payChargeRate</td><td>string</td><td>Exchange rate between <code>payCurrency</code> and <code>amountChargedCurrency</code> applied by Txn.</td></tr><tr><td>data.attributes.payChargeRateCurrency</td><td>string</td><td>Quote currency of <code>payChargeRate</code>.</td></tr><tr><td>data.attributes.exchangeRate</td><td>string</td><td>Exchange rate between <code>payCurrency</code> and <code>currency</code> applied by Txn.</td></tr><tr><td>data.attributes.paymentMethod</td><td>string</td><td>Payment method used: <code>on_chain</code> or <code>binance_pay</code>.</td></tr><tr><td>data.attributes.receiverBinanceId</td><td>string</td><td>Recipient's Binance ID. Present only for <code>binance_pay</code> payouts.</td></tr><tr><td>data.attributes.approvalStatus</td><td>string</td><td>Approval workflow status. Present only for dashboard-initiated payouts subject to an approval rule. Always <code>null</code> for API-created payouts.</td></tr><tr><td>data.attributes.binanceStatus</td><td>string</td><td>Binance Pay processing status. Present only for <code>binance_pay</code> payouts.</td></tr></tbody></table>

**Response**

{% tabs %}
{% tab title="HTTP 201" %}

```json
{
  "data": {
    "id": "20d3a6a7-e3ed-402b-b786-19d50a9b607a",
    "type": "payouts",
    "attributes": {
      "absorbFees": null,
      "absorbNetworkFee": true,
      "absorbPayoutFee": true,
      "address": "TTbGTMwUwA3mncLP7xqCZei1ekaNSgeAJe",
      "amount": "50.00",
      "amountCharged": "51.39",
      "amountChargedCurrency": "EUR",
      "approvalStatus": null,
      "binanceStatus": null,
      "createdAt": "2026-05-15T18:45:39.275Z",
      "currency": "EUR",
      "displayFee": "0.50",
      "displayFeeCurrency": "EUR",
      "exchangeRate": "0.8866755",
      "expiresAt": "2026-05-15T18:46:09.275Z",
      "networkFee": "1.000000",
      "networkFeeCurrency": "USDT",
      "payAmount": "56.390416",
      "payChargeRate": "0.8866755",
      "payChargeRateCurrency": "EUR",
      "payCurrency": "USDT",
      "payNetwork": "ttrx:usdt",
      "payNetworkName": "Tron (TRC20)",
      "paymentMethod": "on_chain",
      "payoutFee": "0.50",
      "payoutFeeCurrency": "EUR",
      "receiverBinanceId": null,
      "reference": "70327e5f-9a3e-4720-b2e4-e899fcbbb956",
      "status": "processing",
      "txid": null
    },
    "relationships": {
      "accountCharged": {
        "data": {
          "id": "13a85b45-8543-41c7-b963-394d4ea128ae",
          "type": "accounts"
        }
      },
      "author": {
        "data": {
          "id": "3cd066e3-94f7-4182-a242-bf3b4e8ea2da",
          "type": "apiKeys"
        }
      }
    }
  },
  "included": [
    {
      "id": "13a85b45-8543-41c7-b963-394d4ea128ae",
      "type": "accounts",
      "attributes": {
        "balance": "39207.72",
        "bankDepositAvailable": true,
        "bankReference": "BDR6421088115176062",
        "bankWithdrawalAvailable": true,
        "currencyCode": "EUR",
        "currencyType": "fiat",
        "label": "master",
        "master": true,
        "totalBalance": null,
        "transferAvailable": true
      },
      "relationships": {
        "company": { "meta": { "included": false } },
        "networks": { "meta": { "included": false } },
        "txnBankCredentials": { "meta": { "included": false } }
      }
    },
    {
      "id": "3cd066e3-94f7-4182-a242-bf3b4e8ea2da",
      "type": "apiKeys",
      "attributes": {
        "createdAt": "2026-05-07T10:39:48.046Z",
        "name": "My API Key"
      }
    }
  ],
  "meta": {},
  "jsonapi": {
    "version": "1.0"
  }
}
```

{% endtab %}

{% tab title="HTTP 201 (with chargeCurrency)" %}
500 CNY display amount, EUR account debited, USDT sent via Tron. `currency`, `amountChargedCurrency`, and `payCurrency` are all different.

```json
{
  "data": {
    "id": "9d12fe2c-c8ac-44c7-b2f0-b9d11aa62f53",
    "type": "payouts",
    "attributes": {
      "absorbFees": null,
      "absorbNetworkFee": true,
      "absorbPayoutFee": true,
      "address": "TTbGTMwUwA3mncLP7xqCZei1ekaNSgeAJe",
      "amount": "500.00",
      "amountCharged": "64.84",
      "amountChargedCurrency": "EUR",
      "approvalStatus": null,
      "binanceStatus": null,
      "createdAt": "2026-05-19T15:40:37.788Z",
      "currency": "CNY",
      "displayFee": "5.00",
      "displayFeeCurrency": "CNY",
      "exchangeRate": "7.01285182",
      "expiresAt": "2026-05-19T15:41:07.788Z",
      "networkFee": "1.000000",
      "networkFeeCurrency": "USDT",
      "payAmount": "71.297671",
      "payChargeRate": "0.8881381",
      "payChargeRateCurrency": "EUR",
      "payCurrency": "USDT",
      "paymentMethod": "on_chain",
      "payNetwork": "ttrx:usdt",
      "payNetworkName": "Tron (TRC20)",
      "payoutFee": "0.63",
      "payoutFeeCurrency": "EUR",
      "receiverBinanceId": null,
      "reference": "docs-cny-eur-example-001",
      "status": "processing",
      "txid": null
    },
    "relationships": {
      "accountCharged": {
        "data": {
          "id": "13a85b45-8543-41c7-b963-394d4ea128ae",
          "type": "accounts"
        }
      },
      "author": {
        "data": {
          "id": "b56961f4-46cf-4e60-bb32-b36addb09f66",
          "type": "apiKeys"
        }
      }
    }
  },
  "included": [
    {
      "id": "13a85b45-8543-41c7-b963-394d4ea128ae",
      "type": "accounts",
      "attributes": {
        "balance": "38968.92",
        "bankDepositAvailable": true,
        "bankReference": "BDR6421088115176062",
        "bankWithdrawalAvailable": true,
        "currencyCode": "EUR",
        "currencyType": "fiat",
        "label": "master",
        "master": true,
        "totalBalance": null,
        "transferAvailable": true
      },
      "relationships": {
        "company": { "meta": { "included": false } },
        "networks": { "meta": { "included": false } },
        "txnBankCredentials": { "meta": { "included": false } }
      }
    },
    {
      "id": "b56961f4-46cf-4e60-bb32-b36addb09f66",
      "type": "apiKeys",
      "attributes": {
        "createdAt": "2024-06-17T19:41:33.398Z",
        "name": "Test API key"
      }
    }
  ],
  "meta": {},
  "jsonapi": {
    "version": "1.0"
  }
}
```

{% endtab %}

{% tab title="HTTP 422" %}

```json
{
  "errors": [
    {
      "status": 422,
      "title": "amount is below minimum",
      "detail": "amount: 10.0, minimum: 50.00",
      "code": "amount_below_minimum"
    }
  ]
}
```

Amount too low.
{% endtab %}

{% tab title="HTTP 422" %}

```json
{
  "errors": [
    {
      "status": 422,
      "title": "amount is above maximum",
      "detail": "amount: 500000.0, maximum: 100000.00",
      "code": "amount_above_maximum"
    }
  ]
}
```

Amount too high.
{% endtab %}

{% tab title="HTTP 422" %}

```json
{
  "errors": [
    {
      "status": 422,
      "title": "Invalid address",
      "code": "invalid_address"
    }
  ]
}
```

Invalid address format.
{% endtab %}

{% tab title="HTTP 422" %}

```json
{
  "errors": [
    {
      "status": 422,
      "title": "Invalid attribute",
      "detail": "Reference has already been taken",
      "code": "payout_invalid",
      "source": {
        "pointer": "/data/attributes/externalId"
      }
    }
  ]
}
```

Duplicate reference.
{% endtab %}

{% tab title="HTTP 422" %}

```json
{
  "errors": [
    {
      "status": 422,
      "title": "account has insufficient balance",
      "code": "account_has_insufficient_balance"
    }
  ]
}
```

Your source account has insufficient funds.
{% endtab %}

{% tab title="HTTP 422" %}

```json
{
  "errors": [
    {
      "status": 422,
      "title": "We couldn’t send funds to this address, please try another address",
      "code": "address_has_high_risk_score"
    }
  ]
}
```

Destination wallet address risk profile is too high.
{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.txn.io/payouts/creating-payout.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
