Withdrawals
Pay a customer from available USD. There is no checkout popup — your CRM calls the API.
Available balance
Paid orders credit a USD available balance. Read it with GET /v1/balance. Each withdrawal debits that balance. The dashboard Available card and Withdrawals list show the same number. You cannot overdraw: create returns 40000 with Insufficient available balance.
Create
POST http://127.0.0.1:43120/v1/payouts with a unique payout_id per workspace. Amounts are USD decimal strings. asset and network must match a row in data.payout_coins from GET /v1/coins (ticker + network name).
bash
curl -X POST "http://127.0.0.1:43120/v1/payouts" \
-H "Authorization: Bearer pk_..." \
-H "Content-Type: application/json" \
-d '{
"payout_id": "wd_001",
"amount": "25.00",
"asset": "USDT",
"network": "Tron",
"address": "T...",
"payer_id": "user_1001"
}'Confirm
- Handle
payout.submitted, thenpayout.completedorpayout.failed. Ack with the plain text bodysuccess. See Webhooks. - Or poll POST /v1/payouts/info with
payout_id.
On failed, available USD is credited back. Treat only completed as money left the merchant.
Errors
| Code | Typical cause |
|---|---|
40000 | Missing fields, amount ≤ 0, unknown asset/network, invalid address, insufficient balance |
40100 | Missing or invalid API key |
40400 | Query with an unknown payout_id |