Create Payout Order
Creates a payout order. After success, the platform freezes the payout amount and network fee, then returns order details.
If fromAddress is not provided, the system automatically selects an address with enough balance. If none is available, it returns insufficient address balance.
Request Headers
| Field | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Merchant API Key. Use the value beginning with mch_ from the merchant API settings page. |
| x-merchant-uid | string | Yes | Merchant UID. |
| x-timestamp | string | Yes | 13-digit millisecond timestamp. The default allowed clock drift is 5 minutes. |
| x-nonce | string | Yes | Unique random string for each request, up to 128 characters. Reuse is rejected. |
| x-signature | string | Yes | Hex signature generated with HMAC-SHA256. The payload contains Merchant UID, timestamp, nonce, method, path, canonical query, and canonical body. |
Request Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| chainCode | string | Yes | Chain code. Supported values: TRON / BSC / SOL. |
| tokenSymbol | string | Yes | Token symbol. |
| fromAddress | string | No | Specified sender address. If omitted, the system assigns one automatically. |
| toAddress | string | Yes | Receiving address. |
| amount | string | Yes | Payout amount, up to 6 decimal places. |
| deleteSourceAfterSuccess | boolean | No | Optional JSON boolean, false by default. When true, soft-delete the source only after this payout is confirmed on-chain; failure or cancellation does not delete it. Payouts require no balance reserve. |
| merchantOrderNo | string | Yes | Merchant-side order number. |
| notifyUrl | string | Yes | Order-specific callback URL. A public HTTPS URL owned by the merchant is recommended. |
Request Example
{
"chainCode": "TRON",
"tokenSymbol": "USDT",
"fromAddress": "TNjBrNq2a9FK2vwu4W9C1QdLKSZ42Yx5YY",
"toAddress": "TS7b7iD8G2PaPqK1TqSmLJ9nrrYH4oKX1S",
"amount": "35.50",
"deleteSourceAfterSuccess": false,
"merchantOrderNo": "PO202604150001",
"notifyUrl": "https://merchant.example.com/api/uugate/payout-notify"
}Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
| orderNo | string | Yes | Platform payout order number. |
| merchantOrderNo | string | null | Yes | Merchant order number. |
| fromAddress | string | null | Yes | Actual sender address. |
| toAddress | string | Yes | Receiving address. |
| amount | string | Yes | Payout amount. |
| txHash | string | null | Yes | On-chain hash returned after broadcast. |
| status | string | Yes | submitted / broadcasted / confirmed / failed. |
| submittedAt | string | null | Yes | Submitted time. |
| broadcastedAt | string | null | Yes | Broadcast time. |
| confirmedAt | string | null | Yes | Confirmation time. |
| failedAt | string | null | Yes | Failed time. |
| createdAt | string | null | Yes | Created time. |
Response Example
{
"orderNo": "PO1776193200A1B2C3D4",
"merchantOrderNo": "PO202604150001",
"fromAddress": "TNjBrNq2a9FK2vwu4W9C1QdLKSZ42Yx5YY",
"toAddress": "TS7b7iD8G2PaPqK1TqSmLJ9nrrYH4oKX1S",
"amount": "35.500000",
"txHash": "b3d4fb0cb11eb86bb906d1e0ee3b84e17f40d5441d1e4c651ea46920a48a9a01",
"status": "broadcasted",
"submittedAt": "2026-04-15T03:00:00Z",
"broadcastedAt": "2026-04-15T03:00:08Z",
"confirmedAt": null,
"failedAt": null,
"createdAt": "2026-04-15T03:00:00Z"
}Code Examples
cURL Request Example
curl -X POST 'https://api.uugate.com/openapi/payout/orders' \
-H 'Content-Type: application/json' \
-H 'x-api-key: mch_xxxxxxxxxxxxxxxxxxxx' \
-H 'x-merchant-uid: 880001' \
-H 'x-timestamp: 1776193200000' \
-H 'x-nonce: 2f5c7b147c3748f0a8b3d9bb38aa91a4' \
-H 'x-signature: <SIGNATURE_HEX>' \
-d '{
"chainCode": "TRON",
"tokenSymbol": "USDT",
"fromAddress": "TNjBrNq2a9FK2vwu4W9C1QdLKSZ42Yx5YY",
"toAddress": "TS7b7iD8G2PaPqK1TqSmLJ9nrrYH4oKX1S",
"amount": "35.50",
"deleteSourceAfterSuccess": false,
"merchantOrderNo": "PO202604150001",
"notifyUrl": "https://merchant.example.com/api/uugate/payout-notify"
}'Notes
- The public API supports single payouts only. Batch payouts are available only in the merchant dashboard.
- A payout of 10 requires at least 10 in available source balance, with no additional reserve, regardless of deleteSourceAfterSuccess. The payout amount is not reduced; the fee account must still cover the network fee.
- Pass true / false, not strings. Retries with the same merchantOrderNo must keep this parameter unchanged. Source deletion cannot be selected while other transfers are unfinished.
- Successful creation or broadcast is not on-chain confirmation. Soft deletion preserves order history, ledgers and key references. Failure or cancellation does not delete the source.
- The create API automatically attempts submission. Use status from the response or a later query; an HTTP 2xx alone is not on-chain success.