Skip to content

Thailand Payin

Create payin

POST /api/v1/merchant/payin/create

FieldRequiredNotes
merchantOrderNoyesUnique per merchant
amountyesTHB amount, up to 2 decimals
bankCodeyesFixed value: QR
notifyUrlnoWebhook URL
remarknoOrder remark
payer_mobilenoPayer mobile
payer_realnamenoPayer name
payer_emailnoPayer email
payer_id_nonoPayer ID number
extJson.accountNoyesQR collection account number

The legacy bankName field is still accepted for compatibility, but it is ignored for routing, fee matching, and upstream requests. New integrations should send bankCode only.

bankCode enum

When creating a Thailand payin order, send "bankCode": "QR" in the request body.

bankCodeNotes
QRThailand QR payin

Response includes orderNo (PI...), feeAmount, netAmount, payUrl, payQr, and status (processing after successful upstream creation).

Query payin

GET /api/v1/merchant/payin/query?orderNo= or ?merchantOrderNo=

Webhook (completed)

Full checklist: Webhook guide.

POST JSON with headers X-Merchant-No, X-Timestamp, X-Nonce, X-Sign.

json
{
  "orderType": "payin",
  "orderNo": "PI...",
  "merchantOrderNo": "...",
  "status": "completed",
  "amount": "2000.00",
  "feeAmount": "20.00",
  "netAmount": "1980.00",
  "completedAt": 1718198400
}

Respond 200 with body OK. Verify signature before updating order state.

Statuses: created, processing, partial_paid, completed, failed, timeout, cancelled.

Released under the MIT License.

2-1-2 Nihonbashi-Hongokucho,Chuo-ku,Tokyo