Skip to main content
This endpoint allows you to process payouts in Thai Baht (THB) to recipients with a bank account in Thailand, funded from a US Dollar (USD) balance.

Endpoint

POST: {{baseURL}}/v2/payout

Supported Payment Channels

THB payouts support the following payment channel:
ChannelDescriptionUse Case
BANK_TRANSFERStandard bank transfer to Thai banksDomestic transfers within Thailand

Request Details

Headers

Include these headers in your request:
HeaderValueRequired
Content-Typeapplication/jsonβœ… Yes
x-api-keyYOUR_API_KEYβœ… Yes

Sample Requests

Use BANK_TRANSFER for standard domestic THB bank transfers.
curl --location --request POST '{{baseURL}}/v2/payout' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
  "recipient": {
    "name": "Nguyễn Văn Nam",
    "nickName": "DemoVNNickname",
    "gender": "M",
    "type": "INDIVIDUAL",
    "stored": false,
    "account": {
        "bankName": "AGRICULTURE & AGRICULTL COOP",
        "sortCode": "00301",
        "bankCity": "Bangkok",
        "accountNumber": "0012345678",
        "branchCode": "Bangkok"
    },
    "sourceOfFunds": "income",
    "paymentChannel": "BANK_TRANSFER",
    "currency": "THB",
    "country": "TH"
  },
  "quoteId": "779997685019",
  "reason": "Gift",
  "remark": "TestTHB"
}'

Request Body Breakdown

FieldTypeDescriptionRequired
quoteIdStringThe unique ID of the quote for this payout.βœ… Yes
reasonStringThe purpose of the transfer.βœ… Yes
remarkStringAn optional, additional note about the transaction.❔ No
recipientObjectAn object containing all details about the beneficiary.βœ… Yes
recipient.nameStringThe full name of the recipient.βœ… Yes
recipient.nickNameStringThe recipient’s nickname (if any).❔ No
recipient.typeStringThe type of recipient. Enum: INDIVIDUAL, BUSINESS.βœ… Yes
recipient.accountObjectAn object containing the recipient’s bank account details.βœ… Yes
recipient.account.bankNameStringThe name of the recipient’s bank.βœ… Yes
recipient.account.accountNumberStringThe recipient’s bank account number.βœ… Yes
recipient.account.sortCodeStringThe bank code/sort code (e.g., 00301).βœ… Yes
recipient.paymentChannelStringThe payment method. Must be BANK_TRANSFER.βœ… Yes
recipient.sourceOfFundsStringCode indicating the source of funds.βœ… Yes

Success Response (200 OK)

If the payout is successfully created, the API returns the following response:
copy
{
  "message": "Transaction created successfully",
  "status": "success",
  "data": {
    "id": "THB-PAYOUT-ID-67890",
    "reason": "Gift",
    "referenceNumber": "THBPAYOUTREF456",
    "type": "SEND",
    "state": "COMPLETED",
    "quote": {
      "id": "779997685019",
      "source": {
        "currency": "USD",
        "country": "US",
        "amount": 100
      },
      "target": {
        "currency": "THB",
        "country": "TH",
        "amount": 3304.41
      },
      "rate": 33.04,
      "fee": {
        "amount": 0.77
      }
    },
    "recipient": {
      "name": "Nguyễn Văn Nam",
      "type": "INDIVIDUAL",
      "account": {
          "name": "Nguyễn Văn Nam",
          "bankName": "AGRICULTURE & AGRICULTL COOP",
          "accountNumber": "0012345678"
      },
      "paymentChannel": "BANK_TRANSFER",
      "currency": "THB",
      "country": "TH"
    },
    "created": "2026-02-04T09:41:02.000Z",
    "processed": "2026-02-04T09:42:02.000Z"
  }
}

Payout Transaction States

The payout transaction can have one of the following states:
StateDescription
COMPLETEDThe payout was successfully processed.
PENDINGThe payout is still being processed.
FAILEDThe payout failed to process.
REFUNDEDThe payout has been sent back to sender.

Error Handling

Status CodeMeaningExample Response
400Insufficient BalanceInsufficient Balance
401UnauthorizedInvalid API key provided.
403ForbiddenIP not whitelisted
404Not FoundThe requested endpoint does not exist.
422Unprocessable EntityInvalid quote ID provided.
500Internal Server ErrorAn internal error occurred.

Best Practices

βœ… Ensure quoteId is valid and linked to an existing quote. βœ… Confirm that the recipient’s bank account number and bank code are correct. βœ… Use a valid API key in the headers. βœ… Handle error responses correctly in your integration.
Testing Failed Payouts: In the sandbox environment, you can simulate a failed payout by setting "remark": "fail" in your request. This triggers a payout.failed webhook, allowing you to test your error handling.