Payouts API
Create a payout
Sending crypto from the merchant business wallet balance to an external address.
Request body fields
| Parameter | Type | Required | DESCRIPTION |
|---|---|---|---|
| order_id | integer | yes | A unique payout ID on the merchant side. The status and the webhook are matched by it later |
| currency | string | yes | Payout currency, USDT for example |
| network | string | yes | The network the transaction is sent in, TRON for example |
| amount | number | yes | The amount to pay out in the currency given. The minimum is the equivalent of 7 USD (checked separately from the number format) |
| address | string | yes | The recipient address in the chosen network |
| url_callback | string | no | URL for webhook notifications about this payout |
{
"order_id": 13,
"currency": "USDT",
"network": "SOL",
"amount": 7,
"address": "8Q3zsm*****tVUzasKQ"
}
{
"uuid": "019f89aa-bfe9-7308-8e40-fb5b1345a5a4",
"order_id": "13",
"address": "8Q3zsm*****tVUzasKQ",
"amount": "7",
"currency": "USDT",
"network": "SOL",
"status": "SUCCESS",
"is_final": true,
"transaction_data": {
"txid": "DgR9Tg*****AFe5nA9j6zJ6",
"from": "FPoyLa*****iSHRMR1x",
"to": "8Q3zsm*****tVUzasKQ",
"coin": "USDT",
"amount": "7"
},
"created_at": "2026-07-22 11:51:36"
}
Response fields
| Parameter | DESCRIPTION |
|---|---|
| uuid | Payout UUID |
| order_id | Your payout ID from the request |
| address | Recipient address |
| amount | Payout amount |
| currency | Payout currency |
| network | The network the transaction was sent in |
| status | Payout status — see the "Payout statuses" section |
| is_final | The final-status flag |
| transaction_data | Blockchain transaction details (see the table below) |
| created_at | The date and time the payout was created |
The transaction_data object
| Parameter | DESCRIPTION |
|---|---|
| txid | The transaction hash in the blockchain |
| from | The sender address (the Speend wallet the payout went out from) |
| to | The recipient address — the same as address in the request |
| coin | Transaction currency |
| amount | The amount sent in the blockchain transaction |
Idempotency
422 errors
| Situation | Message |
|---|---|
| The order_id field was not sent (the same goes for currency, network, amount and address — every field is required) | The order id field is required. |
| The currency sent is not supported for payouts | The selected currency is invalid. |
| The network sent is not supported for payouts, or does not match the currency given | The selected network is invalid. |
| The currency + network combination does not exist | currency with such network does not exist |
| The address is on the blacklist | address is black listed |
| The address does not match the format of the chosen network | address is invalid |
| The payout amount converted to USD is below 7 | Amount is too low |
| The merchant balance does not hold enough funds for the payout | insufficient balance |
| The payout amount is over the limit allowed without merchant confirmation | The withdrawal amount exceeds the maximum allowed without merchant approval. Please contact the merchant. |
Payout status
Getting the current status and details of a payout created earlier.
Request body fields
| Parameter | Type | Required | DESCRIPTION |
|---|---|---|---|
| order_id | string | yes | Your payout ID from the creation request |
{
"order_id": "13"
}
{
"uuid": "019f89aa-bfe9-7308-8e40-fb5b1345a5a4",
"order_id": "13",
"address": "8Q3zsm*****tVUzasKQ",
"amount": "7",
"currency": "USDT",
"network": "SOL",
"status": "SUCCESS",
"is_final": true,
"transaction_data": {
"txid": "DgR9Tg*****AFe5nA9j6zJ6",
"from": "FPoyLa*****iSHRMR1x",
"to": "8Q3zsm*****tVUzasKQ",
"coin": "USDT",
"amount": "7"
},
"created_at": "2026-07-22 11:51:36"
}
Response fields
The response fields are exactly those of payout/create (see the previous section).
The status lifecycle
The successful path:
Alternative (unsuccessful) outcomes — possible at any of the intermediate steps above:
| Status | Meaning | is_final |
| REQUESTED | The payout is created, the request is accepted | false |
| AWAITING_CONFIRMATION | Waiting for the merchant to confirm the payout (the confirmation window in the merchant dashboard) | false |
| ON_QUEUE | The payout is accepted for processing and is waiting in the queue | false |
| ON_QUEUE_CONVERSION | The currency conversion stage — topping up the donor wallet through an exchange | false |
| ON_NETWORK_QUEUE | The network transfer stage — the transaction is being sent on-chain | false |
| SUCCESS | The payout was sent successfully and is confirmed in the blockchain | true |
| CANCELED | The payout was cancelled | true |
| FAILED | The payout failed (an error at the processing or sending stage) | true |
| AML_FAILED | The payout was rejected by an AML check (compliance scoring of the recipient address) | true |
422 errors
| Situation | Message |
|---|---|
| The order_id field was not sent | The order id field is required. |
| order_id was sent as a number instead of a string | The order id must be a string. |
| order_id was sent as a number instead of a string | Withdrawal not found. |