POST
/api/withdrawals

Request Withdrawal

Create a withdrawal to a Thai bank account. The merchant's balance is validated and the payout is queued for the specified beneficiary account.

Overview

Submit a withdrawal request with your beneficiary bank details and amount. The system validates your merchant account (via Bearer secret), ensures the merchant is active, checks your balance, resolves the Thai bank by exact name, and creates a withdrawal with status pending.

Note: The bank_name field must match one of the supported Thai bank names exactly (case-sensitive). Withdrawals remain pending until processed.

How It Works

  1. Merchant sends POST request
  2. System validates merchant (ACTIVE), balance, and bank name
  3. Withdrawal created with status pending
  4. Response returns withdrawal details

Request Body

Required Fields

bank_account – Beneficiary bank account number

account_name – Account holder name

bank_name – Must exactly match supported Thai banks

amount – Minimum 100 THB, must not exceed balance

Numeric strings for amount are accepted and converted

Extra fields are ignored

Supported Thai Banks

TMBThanachart Bank Public Company Limited
Bangkok Bank Public Company Limited
KASIKORNBANK Public Company Limited
KRUNG THAI BANK
Siam Commercial Bank Public Company Limited
CITIBANK N.A.
SUMITOMO MITSUI BANKING CORPORATION
STANDARD CHARTERED BANK (THAI) PLC
CIMB THAI BANK PUBLIC COMPANY LIMITED
UNITED OVERSEAS BANK (THAI) PCL.
BANK OF AYUDHYA PUBLIC COMPANY LTD.
MEGA INTERNATIONAL COMMERCIAL BANK PUBLIC CO.,LTD.
GOVERNMENT SAVING BANK
HONGKONG & SHANGHAI CORPORATION LTD.
DEUTSCHE BANK AKTIENGESELLSCHAFT
GOVERNMENT HOUSING BANK
BANK FOR AGRICULTURAL AND AGRICULTURAL CO-OPERATIV
MIZUHO BANK,LTD.
BNP PARIBAS, BANGKOK BRANCH
BANK OF CHINA LIMITED
ISLAMIC BANK OF THAILAND
TISCO BANK PUBLIC COMPANY LIMITED
KIATNAKIN PHATRA BANK PUBLIC COMPANY LIMITED
INDUSTRIAL AND COMMERCIAL BANK OF CHINA (THAI) PU
THE THAI CREDIT RETAIL BANK PUBLIC COMPANY LIMITED
LAND AND HOUSES RETAIL BANK PUBLIC COMPANY LIMITED
ANZ Bank (Thai) Public Company Limited

Code Examples

curl -X POST "https://api.1401.com/api/withdrawals" \
  -H "Authorization: Bearer YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "bank_account": "1234567890",
  "account_name": "John Doe",
  "bank_name": "Bangkok Bank Public Company Limited",
  "amount": 500
}'

Response

Status Codes

201
Withdrawal created successfully
400
Invalid request or insufficient balance
401
Authentication failed
404
Merchant or bank not found
Success Response
Example response for a successful request
{
  "bank_account": "1234567890",
  "account_name": "John Doe",
  "amount": 500,
  "bank_code": "BBL",
  "bank_name": "Bangkok Bank Public Company Limited",
  "payment_id": "cm1htmcgm0021u0ji1rtn2tzr"
}
Error Response
Example response for an error
{
  "statusCode": 401,
  "message": "MERCHANT_SECRET_REQUIRED",
  "error": "Unauthorized"
}

Error Examples

Error Response
Example response for an error
{
  "statusCode": 400,
  "message": "INSUFFICIENT_BALANCE",
  "error": "Bad Request"
}
Error Response
Example response for an error
{
  "statusCode": 400,
  "message": "amount must not be less than 100",
  "error": "Bad Request"
}
Error Response
Example response for an error
{
  "statusCode": 404,
  "message": "BANK_NOT_FOUND",
  "error": "Not Found"
}
Error Response
Example response for an error
{
  "statusCode": 404,
  "message": "MERCHANT_NOT_FOUND",
  "error": "Not Found"
}
Error Response
Example response for an error
{
  "statusCode": 401,
  "message": "INVALID_MERCHANT_SECRET",
  "error": "Unauthorized"
}

Withdrawal Flow

  1. Request validated (merchant must be ACTIVE)
  2. Withdrawal created (pending)
  3. Platform processes payout

Best Practices

  • Keep Bearer token secure
  • Use exact bank names (case-sensitive)
  • Check balance before request
  • Store response for tracking

Related Endpoints

Use merchant panel or contact support to check withdrawal status. A GET withdrawal endpoint may be added later.