Skip to content

Withdrawals

A withdrawal moves your own balance to your company’s bank account or wallet (unlike a payout, which pays one of your end users). The team reviews the request and transfers the funds.

POST /v1/withdrawals
FieldRequiredDescription
amountyesAmount to withdraw, in Thai baht (decimal string), deducted from your balance
currencynoCurrency you receive: THB (default), USD or USDT
channelyesbank_transfer or crypto
bankNamefor bank_transferBank name or code (max 100 characters)
bankAccountNamefor bank_transferAccount holder name
bankAccountNumberfor bank_transferAccount number: digits and -, 4-32 characters
walletAddressfor cryptoWallet address
networkfor cryptoNetwork, e.g. TRC20
notenoNote to the team (max 500 characters)

Only these fields are accepted; anything else is rejected with parameter_unknown.

Send an Idempotency-Key header so a retry after a timeout cannot request a second withdrawal. See Retry a create safely.

{
"amount": "10000.00",
"channel": "bank_transfer",
"bankName": "SCB",
"bankAccountName": "Example Co., Ltd.",
"bankAccountNumber": "123-4-56789-0",
"note": "January settlement"
}

Response (201):

{
"data": {
"object": "withdrawal",
"id": "wd_0a1b2c3d4e5f60718293a4b5c6d7e8f9",
"status": "pending",
"channel": "bank_transfer",
"requestedAmount": "10000.00",
"fee": "50.00",
"netAmount": "9950.00",
"currency": "THB",
"payoutAmount": "9950.00",
"exchangeRate": "1.000000",
"bankAccount": {
"bankName": "SCB",
"accountName": "Example Co., Ltd.",
"accountNumber": "123-4-56789-0"
},
"wallet": null,
"note": "January settlement",
"createdAt": "2026-01-01T00:00:00.000Z"
},
"requestId": "req_..."
}
FieldDescription
requestedAmountAmount requested (THB)
feeFee (THB)
netAmountAmount after the fee (THB)
currency, payoutAmountCurrency and amount you actually receive
exchangeRateRate used when withdrawing in USD or USDT
bankAccount / walletThe destination for the channel; the other one is null
StatusMeaning
pendingRequested, waiting for review
processingBeing transferred
succeededTransferred
rejectedRejected
HTTPcodeMeaning
400parameter_missingA destination field required by channel is missing; see error.param
400parameter_invalidMalformed amount or account number
400unsupported_currencyCurrency not supported
409pending_withdrawal_existsA withdrawal is already being processed; one at a time
422amount_invalidThe amount must be greater than 0
422insufficient_balanceNot enough available balance
422daily_limit_exceededToday’s dailyWithdrawalLimit would be exceeded