API reference
This page is generated from the OpenAPI document of the current API version.
- Base URL:
https://api.example.com(every path starts with/v1) - Download the spec:
/openapi.json(OpenAPI 3.0), for Postman, Insomnia or client generators - Every request must be signed as described in Authentication and request signing; responses use the envelope from the Overview
- For the meaning of each
error.code, see Errors
Payins
Section titled “Payins”List payins
Section titled “List payins”GET /v1/payinsNewest first.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
limit | query | number | - | Default 20. Range 1-100. |
cursor | query | string | - | Opaque cursor from pagination.nextCursor of the previous page. |
status | query | pending, processing, in_review, succeeded, expired, canceled, rejected, failed[] | - | Comma-separated statuses. |
reference | query | string | - | Exact match on your reference. |
payerId | query | string | - | e.g. payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d |
createdFrom | query | string | - | ISO-8601, inclusive. e.g. 2026-01-01T00:00:00Z |
createdTo | query | string | - | ISO-8601, inclusive. e.g. 2026-01-31T23:59:59Z |
Response 200 - data is a list of PayinObject with pagination
{ "data": [ { "object": "payin", "id": "pin_3f2b1c0d9e8f4a7b8c6d5e4f3a2b1c0d", "reference": "order-10001", "payerId": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "payer": { "object": "payer", "id": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "bankCode": "SCB", "bankName": "Siam Commercial Bank", "accountNumber": "1234567890", "accountName": "สมชาย สบายดี", "accountNameEn": "Somchai Sabuydee", "status": "active", "referralCode": null, "createdAt": "2026-01-01T00:00:00.000Z" }, "requestedAmount": "150.00", "amount": "150.37", "fee": "2.25", "currency": "THB", "method": "promptpay_qr", "status": "pending", "failureReason": null, "webhookUrl": "https://partner.example.com/webhooks", "payerAccount": { "bankCode": "SCB", "accountNumber": "1234567890", "accountName": "Somchai Sabuydee" }, "createdAt": "2026-01-01T00:00:00.000Z", "updatedAt": "2026-01-01T00:00:00.000Z", "returnUrl": "https://partner.example.com/return", "checkoutUrl": "https://pay.example.com/3f2b1c0d-...", "paymentImage": "data:image/png;base64,iVBORw0KGgo...", "payTo": { "bankCode": "KBANK", "bankName": "Kasikorn Bank", "accountNumber": "0987654321", "accountName": "Example Co., Ltd.", "promptpayId": "0812345678", "walletAddress": "0xabc...", "network": "BSC", "qrPayload": "00020101021229370016A000000677010111011300668123456785802TH53037645406150.3763046572" } } ], "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e", "pagination": { "limit": 20, "hasMore": true, "nextCursor": "eyJvIjoyMH0" }}Possible error HTTP statuses: 400, 401, 403, 500
Create a payin
Section titled “Create a payin”POST /v1/payinsIdentify the payer with exactly one of payerId or an inline payer (bank account; an existing payer with the same bank code and account number is reused, otherwise one is created). Returns the payin with payTo (incl. qrPayload) and checkoutUrl; add ?include=paymentImage for the PNG image. The response may contain warnings (e.g. payer_name_differs).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
include | query | string | - | Comma-separated extra fields. paymentImage: add the PNG data URI of the QR code / transfer card. Unknown values are ignored. e.g. paymentImage |
Idempotency-Key | header | string | - | Optional, recommended. A unique key (8-255 characters of A-Z a-z 0-9 _ - : .) per create request, e.g. a UUID. Retrying with the same key and the same request within 24 hours returns the original response (header Idempotent-Replayed: true) instead of creating a second one. |
Request body (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
payerId | string | - | An existing payer. Send exactly one of payerId and payer. e.g. payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d |
payer | InlinePayerDto | - | The payer’s bank account, instead of payerId. Send exactly one of payerId and payer. If you already have a payer with the same bankCode and accountNumber it is reused (its stored name is kept; a payer_name_differs warning is returned if the name differs), otherwise a new active payer is created as with POST /v1/payers. The response contains its payerId. |
amount | string | yes | Decimal string. Unique decimals may be added; see amount in the response. e.g. 150.00 |
currency | THB, USD, USDT, LAK | yes | e.g. THB |
method | auto, promptpay_qr, bank_transfer, crypto, lao_qr | - | Default auto. |
reference | string | - | Your order id. Max 128 chars. e.g. order-10001 |
webhookUrl | string | yes | e.g. https://partner.example.com/webhooks/payments |
returnUrl | string | - | Where the checkout page sends the payer afterwards. e.g. https://partner.example.com/orders/10001 |
{ "payerId": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "payer": { "bankCode": "SCB", "accountNumber": "1234567890", "accountName": "สมชาย สบายดี", "accountNameEn": "Somchai Sabuydee" }, "amount": "150.00", "currency": "THB", "method": "auto", "reference": "order-10001", "webhookUrl": "https://partner.example.com/webhooks/payments", "returnUrl": "https://partner.example.com/orders/10001"}Response 201 - data is PayinObject
{ "data": { "object": "payin", "id": "pin_3f2b1c0d9e8f4a7b8c6d5e4f3a2b1c0d", "reference": "order-10001", "payerId": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "payer": { "object": "payer", "id": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "bankCode": "SCB", "bankName": "Siam Commercial Bank", "accountNumber": "1234567890", "accountName": "สมชาย สบายดี", "accountNameEn": "Somchai Sabuydee", "status": "active", "referralCode": null, "createdAt": "2026-01-01T00:00:00.000Z" }, "requestedAmount": "150.00", "amount": "150.37", "fee": "2.25", "currency": "THB", "method": "promptpay_qr", "status": "pending", "failureReason": null, "webhookUrl": "https://partner.example.com/webhooks", "payerAccount": { "bankCode": "SCB", "accountNumber": "1234567890", "accountName": "Somchai Sabuydee" }, "createdAt": "2026-01-01T00:00:00.000Z", "updatedAt": "2026-01-01T00:00:00.000Z", "returnUrl": "https://partner.example.com/return", "checkoutUrl": "https://pay.example.com/3f2b1c0d-...", "paymentImage": "data:image/png;base64,iVBORw0KGgo...", "payTo": { "bankCode": "KBANK", "bankName": "Kasikorn Bank", "accountNumber": "0987654321", "accountName": "Example Co., Ltd.", "promptpayId": "0812345678", "walletAddress": "0xabc...", "network": "BSC", "qrPayload": "00020101021229370016A000000677010111011300668123456785802TH53037645406150.3763046572" } }, "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e", "warnings": [ { "code": "payer_name_differs", "message": "An existing payer with this bank account was used. Its stored account name differs from the one sent and was kept; it is used for payment matching.", "param": "payer.accountName" } ]}Possible error HTTP statuses: 400, 401, 403, 404, 409, 422, 500
Retrieve a payin
Section titled “Retrieve a payin”GET /v1/payins/{id}Includes payTo (incl. qrPayload); add ?include=paymentImage for the PNG image.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | e.g. pin_3f2b1c0d9e8f4a7b8c6d5e4f3a2b1c0d |
include | query | string | - | Comma-separated extra fields. paymentImage: add the PNG data URI of the QR code / transfer card. Unknown values are ignored. e.g. paymentImage |
Response 200 - data is PayinObject
{ "data": { "object": "payin", "id": "pin_3f2b1c0d9e8f4a7b8c6d5e4f3a2b1c0d", "reference": "order-10001", "payerId": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "payer": { "object": "payer", "id": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "bankCode": "SCB", "bankName": "Siam Commercial Bank", "accountNumber": "1234567890", "accountName": "สมชาย สบายดี", "accountNameEn": "Somchai Sabuydee", "status": "active", "referralCode": null, "createdAt": "2026-01-01T00:00:00.000Z" }, "requestedAmount": "150.00", "amount": "150.37", "fee": "2.25", "currency": "THB", "method": "promptpay_qr", "status": "pending", "failureReason": null, "webhookUrl": "https://partner.example.com/webhooks", "payerAccount": { "bankCode": "SCB", "accountNumber": "1234567890", "accountName": "Somchai Sabuydee" }, "createdAt": "2026-01-01T00:00:00.000Z", "updatedAt": "2026-01-01T00:00:00.000Z", "returnUrl": "https://partner.example.com/return", "checkoutUrl": "https://pay.example.com/3f2b1c0d-...", "paymentImage": "data:image/png;base64,iVBORw0KGgo...", "payTo": { "bankCode": "KBANK", "bankName": "Kasikorn Bank", "accountNumber": "0987654321", "accountName": "Example Co., Ltd.", "promptpayId": "0812345678", "walletAddress": "0xabc...", "network": "BSC", "qrPayload": "00020101021229370016A000000677010111011300668123456785802TH53037645406150.3763046572" } }, "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e"}Possible error HTTP statuses: 400, 401, 403, 404, 500
Cancel a pending or expired payin
Section titled “Cancel a pending or expired payin”POST /v1/payins/{id}/cancelParameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | e.g. pin_3f2b1c0d9e8f4a7b8c6d5e4f3a2b1c0d |
Response 200 - data is PayinObject
{ "data": { "object": "payin", "id": "pin_3f2b1c0d9e8f4a7b8c6d5e4f3a2b1c0d", "reference": "order-10001", "payerId": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "payer": { "object": "payer", "id": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "bankCode": "SCB", "bankName": "Siam Commercial Bank", "accountNumber": "1234567890", "accountName": "สมชาย สบายดี", "accountNameEn": "Somchai Sabuydee", "status": "active", "referralCode": null, "createdAt": "2026-01-01T00:00:00.000Z" }, "requestedAmount": "150.00", "amount": "150.37", "fee": "2.25", "currency": "THB", "method": "promptpay_qr", "status": "pending", "failureReason": null, "webhookUrl": "https://partner.example.com/webhooks", "payerAccount": { "bankCode": "SCB", "accountNumber": "1234567890", "accountName": "Somchai Sabuydee" }, "createdAt": "2026-01-01T00:00:00.000Z", "updatedAt": "2026-01-01T00:00:00.000Z", "returnUrl": "https://partner.example.com/return", "checkoutUrl": "https://pay.example.com/3f2b1c0d-...", "paymentImage": "data:image/png;base64,iVBORw0KGgo...", "payTo": { "bankCode": "KBANK", "bankName": "Kasikorn Bank", "accountNumber": "0987654321", "accountName": "Example Co., Ltd.", "promptpayId": "0812345678", "walletAddress": "0xabc...", "network": "BSC", "qrPayload": "00020101021229370016A000000677010111011300668123456785802TH53037645406150.3763046572" } }, "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e"}Possible error HTTP statuses: 400, 401, 403, 404, 409, 500
Upload a payment slip for a payin
Section titled “Upload a payment slip for a payin”POST /v1/payins/{id}/slipmultipart/form-data with a single file part. The signature body hash is the SHA-256 of the file bytes.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | e.g. pin_3f2b1c0d9e8f4a7b8c6d5e4f3a2b1c0d |
Request body (multipart/form-data)
| Field | Type | Required | Description |
|---|---|---|---|
file | file | yes |
For multipart send only the file part and sign the SHA-256 of the file bytes.
Response 200 - data is SlipUploadResult
{ "data": { "object": "slip_upload", "matched": true, "slipStatus": "matched", "payin": { "object": "payin", "id": "pin_3f2b1c0d9e8f4a7b8c6d5e4f3a2b1c0d", "reference": "order-10001", "payerId": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "payer": { "object": "payer", "id": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "bankCode": "SCB", "bankName": "Siam Commercial Bank", "accountNumber": "1234567890", "accountName": "สมชาย สบายดี", "accountNameEn": "Somchai Sabuydee", "status": "active", "referralCode": null, "createdAt": "2026-01-01T00:00:00.000Z" }, "requestedAmount": "150.00", "amount": "150.37", "fee": "2.25", "currency": "THB", "method": "promptpay_qr", "status": "pending", "failureReason": null, "webhookUrl": "https://partner.example.com/webhooks", "payerAccount": { "bankCode": "SCB", "accountNumber": "1234567890", "accountName": "Somchai Sabuydee" }, "createdAt": "2026-01-01T00:00:00.000Z", "updatedAt": "2026-01-01T00:00:00.000Z", "returnUrl": "https://partner.example.com/return", "checkoutUrl": "https://pay.example.com/3f2b1c0d-...", "paymentImage": "data:image/png;base64,iVBORw0KGgo...", "payTo": { "bankCode": "KBANK", "bankName": "Kasikorn Bank", "accountNumber": "0987654321", "accountName": "Example Co., Ltd.", "promptpayId": "0812345678", "walletAddress": "0xabc...", "network": "BSC", "qrPayload": "00020101021229370016A000000677010111011300668123456785802TH53037645406150.3763046572" } } }, "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e"}Possible error HTTP statuses: 400, 401, 403, 404, 409, 422, 500
Payouts
Section titled “Payouts”List payouts
Section titled “List payouts”GET /v1/payoutsNewest first.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
limit | query | number | - | Default 20. Range 1-100. |
cursor | query | string | - | Opaque cursor from pagination.nextCursor of the previous page. |
status | query | pending, processing, in_review, succeeded, expired, canceled, rejected, failed[] | - | Comma-separated statuses. |
reference | query | string | - | Exact match on your reference. |
payerId | query | string | - | e.g. payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d |
createdFrom | query | string | - | ISO-8601, inclusive. e.g. 2026-01-01T00:00:00Z |
createdTo | query | string | - | ISO-8601, inclusive. e.g. 2026-01-31T23:59:59Z |
Response 200 - data is a list of PayoutObject with pagination
{ "data": [ { "object": "payout", "id": "pin_3f2b1c0d9e8f4a7b8c6d5e4f3a2b1c0d", "reference": "order-10001", "payerId": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "payer": { "object": "payer", "id": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "bankCode": "SCB", "bankName": "Siam Commercial Bank", "accountNumber": "1234567890", "accountName": "สมชาย สบายดี", "accountNameEn": "Somchai Sabuydee", "status": "active", "referralCode": null, "createdAt": "2026-01-01T00:00:00.000Z" }, "requestedAmount": "150.00", "amount": "150.37", "fee": "2.25", "currency": "THB", "method": "promptpay_qr", "status": "pending", "failureReason": null, "webhookUrl": "https://partner.example.com/webhooks", "payerAccount": { "bankCode": "SCB", "accountNumber": "1234567890", "accountName": "Somchai Sabuydee" }, "createdAt": "2026-01-01T00:00:00.000Z", "updatedAt": "2026-01-01T00:00:00.000Z" } ], "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e", "pagination": { "limit": 20, "hasMore": true, "nextCursor": "eyJvIjoyMH0" }}Possible error HTTP statuses: 400, 401, 403, 500
Create a payout
Section titled “Create a payout”POST /v1/payoutsIdentify the payer (the destination account) with exactly one of payerId or an inline payer; an existing payer with the same bank code and account number is reused, otherwise one is created. The response may contain warnings (e.g. payer_name_differs).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Idempotency-Key | header | string | - | Optional, recommended. A unique key (8-255 characters of A-Z a-z 0-9 _ - : .) per create request, e.g. a UUID. Retrying with the same key and the same request within 24 hours returns the original response (header Idempotent-Replayed: true) instead of creating a second one. |
Request body (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
payerId | string | - | An existing payer. Send exactly one of payerId and payer. e.g. payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d |
payer | InlinePayerDto | - | The payer’s bank account, instead of payerId. Send exactly one of payerId and payer. If you already have a payer with the same bankCode and accountNumber it is reused (its stored name is kept; a payer_name_differs warning is returned if the name differs), otherwise a new active payer is created as with POST /v1/payers. The response contains its payerId. |
amount | string | yes | e.g. 500.00 |
currency | THB, USD, USDT, LAK | yes | e.g. THB |
method | auto, bank_transfer, crypto, lao_qr | - | Default auto. |
reference | string | - | Max 128 chars. e.g. withdraw-20001 |
webhookUrl | string | - | e.g. https://partner.example.com/webhooks/payments |
walletAddress | string | - | Crypto payouts: destination wallet. |
network | string | - | Crypto payouts: network, e.g. BSC. |
{ "payerId": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "payer": { "bankCode": "SCB", "accountNumber": "1234567890", "accountName": "สมชาย สบายดี", "accountNameEn": "Somchai Sabuydee" }, "amount": "500.00", "currency": "THB", "method": "auto", "reference": "withdraw-20001", "webhookUrl": "https://partner.example.com/webhooks/payments", "walletAddress": "string", "network": "string"}Response 201 - data is PayoutObject
{ "data": { "object": "payout", "id": "pin_3f2b1c0d9e8f4a7b8c6d5e4f3a2b1c0d", "reference": "order-10001", "payerId": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "payer": { "object": "payer", "id": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "bankCode": "SCB", "bankName": "Siam Commercial Bank", "accountNumber": "1234567890", "accountName": "สมชาย สบายดี", "accountNameEn": "Somchai Sabuydee", "status": "active", "referralCode": null, "createdAt": "2026-01-01T00:00:00.000Z" }, "requestedAmount": "150.00", "amount": "150.37", "fee": "2.25", "currency": "THB", "method": "promptpay_qr", "status": "pending", "failureReason": null, "webhookUrl": "https://partner.example.com/webhooks", "payerAccount": { "bankCode": "SCB", "accountNumber": "1234567890", "accountName": "Somchai Sabuydee" }, "createdAt": "2026-01-01T00:00:00.000Z", "updatedAt": "2026-01-01T00:00:00.000Z" }, "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e", "warnings": [ { "code": "payer_name_differs", "message": "An existing payer with this bank account was used. Its stored account name differs from the one sent and was kept; it is used for payment matching.", "param": "payer.accountName" } ]}Possible error HTTP statuses: 400, 401, 403, 404, 409, 422, 500
Retrieve a payout
Section titled “Retrieve a payout”GET /v1/payouts/{id}Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | e.g. pout_0f1e2d3c4b5a69788796a5b4c3d2e1f0 |
Response 200 - data is PayoutObject
{ "data": { "object": "payout", "id": "pin_3f2b1c0d9e8f4a7b8c6d5e4f3a2b1c0d", "reference": "order-10001", "payerId": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "payer": { "object": "payer", "id": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "bankCode": "SCB", "bankName": "Siam Commercial Bank", "accountNumber": "1234567890", "accountName": "สมชาย สบายดี", "accountNameEn": "Somchai Sabuydee", "status": "active", "referralCode": null, "createdAt": "2026-01-01T00:00:00.000Z" }, "requestedAmount": "150.00", "amount": "150.37", "fee": "2.25", "currency": "THB", "method": "promptpay_qr", "status": "pending", "failureReason": null, "webhookUrl": "https://partner.example.com/webhooks", "payerAccount": { "bankCode": "SCB", "accountNumber": "1234567890", "accountName": "Somchai Sabuydee" }, "createdAt": "2026-01-01T00:00:00.000Z", "updatedAt": "2026-01-01T00:00:00.000Z" }, "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e"}Possible error HTTP statuses: 400, 401, 403, 404, 500
Cancel a payout
Section titled “Cancel a payout”POST /v1/payouts/{id}/cancelPossible while pending, failed, queued, or submitted for more than 30 minutes.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | e.g. pout_0f1e2d3c4b5a69788796a5b4c3d2e1f0 |
Response 200 - data is PayoutObject
{ "data": { "object": "payout", "id": "pin_3f2b1c0d9e8f4a7b8c6d5e4f3a2b1c0d", "reference": "order-10001", "payerId": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "payer": { "object": "payer", "id": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "bankCode": "SCB", "bankName": "Siam Commercial Bank", "accountNumber": "1234567890", "accountName": "สมชาย สบายดี", "accountNameEn": "Somchai Sabuydee", "status": "active", "referralCode": null, "createdAt": "2026-01-01T00:00:00.000Z" }, "requestedAmount": "150.00", "amount": "150.37", "fee": "2.25", "currency": "THB", "method": "promptpay_qr", "status": "pending", "failureReason": null, "webhookUrl": "https://partner.example.com/webhooks", "payerAccount": { "bankCode": "SCB", "accountNumber": "1234567890", "accountName": "Somchai Sabuydee" }, "createdAt": "2026-01-01T00:00:00.000Z", "updatedAt": "2026-01-01T00:00:00.000Z" }, "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e"}Possible error HTTP statuses: 400, 401, 403, 404, 409, 500
Payers
Section titled “Payers”List payers
Section titled “List payers”GET /v1/payersNewest first.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
limit | query | number | - | Default 20. Range 1-100. |
cursor | query | string | - | Opaque cursor from pagination.nextCursor of the previous page. |
accountNumber | query | string | - | Contains match. |
accountName | query | string | - | Case-insensitive contains match. |
bankCode | query | string | - | e.g. SCB |
Response 200 - data is a list of PayerObject with pagination
{ "data": [ { "object": "payer", "id": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "bankCode": "SCB", "bankName": "Siam Commercial Bank", "accountNumber": "1234567890", "accountName": "สมชาย สบายดี", "accountNameEn": "Somchai Sabuydee", "status": "active", "referralCode": null, "createdAt": "2026-01-01T00:00:00.000Z" } ], "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e", "pagination": { "limit": 20, "hasMore": true, "nextCursor": "eyJvIjoyMH0" }}Possible error HTTP statuses: 400, 401, 403, 500
Create a payer
Section titled “Create a payer”POST /v1/payersRequest body (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
bankCode | string | yes | Bank code from GET /v1/banks. e.g. SCB |
accountNumber | string | yes | Digits only. e.g. 1234567890 |
accountName | string | yes | e.g. สมชาย สบายดี |
accountNameEn | string | - | e.g. Somchai Sabuydee |
status | active, inactive | - | Default active. |
referralCode | string | - | Referral code, if any. |
{ "bankCode": "SCB", "accountNumber": "1234567890", "accountName": "สมชาย สบายดี", "accountNameEn": "Somchai Sabuydee", "status": "active", "referralCode": "string"}Response 201 - data is PayerObject
{ "data": { "object": "payer", "id": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "bankCode": "SCB", "bankName": "Siam Commercial Bank", "accountNumber": "1234567890", "accountName": "สมชาย สบายดี", "accountNameEn": "Somchai Sabuydee", "status": "active", "referralCode": null, "createdAt": "2026-01-01T00:00:00.000Z" }, "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e"}Possible error HTTP statuses: 400, 401, 403, 422, 500
Retrieve a payer
Section titled “Retrieve a payer”GET /v1/payers/{id}Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | e.g. payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d |
Response 200 - data is PayerObject
{ "data": { "object": "payer", "id": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "bankCode": "SCB", "bankName": "Siam Commercial Bank", "accountNumber": "1234567890", "accountName": "สมชาย สบายดี", "accountNameEn": "Somchai Sabuydee", "status": "active", "referralCode": null, "createdAt": "2026-01-01T00:00:00.000Z" }, "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e"}Possible error HTTP statuses: 400, 401, 403, 404, 500
Update a payer
Section titled “Update a payer”PATCH /v1/payers/{id}Omitted fields keep their value.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | e.g. payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d |
Request body (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
bankCode | string | - | Bank code from GET /v1/banks. e.g. SCB |
accountNumber | string | - | Digits only. e.g. 1234567890 |
accountName | string | - | e.g. สมชาย สบายดี |
accountNameEn | string | - | e.g. Somchai Sabuydee |
status | active, inactive | - | Default active. |
referralCode | string | - | Referral code, if any. |
{ "bankCode": "SCB", "accountNumber": "1234567890", "accountName": "สมชาย สบายดี", "accountNameEn": "Somchai Sabuydee", "status": "active", "referralCode": "string"}Response 200 - data is PayerObject
{ "data": { "object": "payer", "id": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "bankCode": "SCB", "bankName": "Siam Commercial Bank", "accountNumber": "1234567890", "accountName": "สมชาย สบายดี", "accountNameEn": "Somchai Sabuydee", "status": "active", "referralCode": null, "createdAt": "2026-01-01T00:00:00.000Z" }, "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e"}Possible error HTTP statuses: 400, 401, 403, 404, 422, 500
Delete a payer
Section titled “Delete a payer”DELETE /v1/payers/{id}Only payers without payments can be deleted.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | e.g. payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d |
Response 200 - data is DeletedObject
{ "data": { "id": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "deleted": true }, "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e"}Possible error HTTP statuses: 400, 401, 403, 404, 409, 500
List a payer’s payins and payouts
Section titled “List a payer’s payins and payouts”GET /v1/payers/{id}/paymentsItems are payin or payout objects (see object). Newest first.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | e.g. payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d |
limit | query | number | - | Default 20. Range 1-100. |
cursor | query | string | - | Opaque cursor from pagination.nextCursor of the previous page. |
status | query | pending, processing, in_review, succeeded, expired, canceled, rejected, failed[] | - | Comma-separated statuses. |
reference | query | string | - | Exact match on your reference. |
payerId | query | string | - | e.g. payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d |
createdFrom | query | string | - | ISO-8601, inclusive. e.g. 2026-01-01T00:00:00Z |
createdTo | query | string | - | ISO-8601, inclusive. e.g. 2026-01-31T23:59:59Z |
Response 200 - data is a list of PayinObject with pagination
{ "data": [ { "object": "payin", "id": "pin_3f2b1c0d9e8f4a7b8c6d5e4f3a2b1c0d", "reference": "order-10001", "payerId": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "payer": { "object": "payer", "id": "payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d", "bankCode": "SCB", "bankName": "Siam Commercial Bank", "accountNumber": "1234567890", "accountName": "สมชาย สบายดี", "accountNameEn": "Somchai Sabuydee", "status": "active", "referralCode": null, "createdAt": "2026-01-01T00:00:00.000Z" }, "requestedAmount": "150.00", "amount": "150.37", "fee": "2.25", "currency": "THB", "method": "promptpay_qr", "status": "pending", "failureReason": null, "webhookUrl": "https://partner.example.com/webhooks", "payerAccount": { "bankCode": "SCB", "accountNumber": "1234567890", "accountName": "Somchai Sabuydee" }, "createdAt": "2026-01-01T00:00:00.000Z", "updatedAt": "2026-01-01T00:00:00.000Z", "returnUrl": "https://partner.example.com/return", "checkoutUrl": "https://pay.example.com/3f2b1c0d-...", "paymentImage": "data:image/png;base64,iVBORw0KGgo...", "payTo": { "bankCode": "KBANK", "bankName": "Kasikorn Bank", "accountNumber": "0987654321", "accountName": "Example Co., Ltd.", "promptpayId": "0812345678", "walletAddress": "0xabc...", "network": "BSC", "qrPayload": "00020101021229370016A000000677010111011300668123456785802TH53037645406150.3763046572" } } ], "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e", "pagination": { "limit": 20, "hasMore": true, "nextCursor": "eyJvIjoyMH0" }}Possible error HTTP statuses: 400, 401, 403, 404, 500
List supported banks
Section titled “List supported banks”GET /v1/banksResponse 200 - data is an array of BankObject
{ "data": [ { "object": "bank", "code": "SCB", "name": "Siam Commercial Bank", "localName": "ธนาคารไทยพาณิชย์" } ], "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e"}Possible error HTTP statuses: 400, 401, 403, 500
Account
Section titled “Account”Retrieve your account, limits and balance
Section titled “Retrieve your account, limits and balance”GET /v1/accountResponse 200 - data is AccountObject
{ "data": { "object": "account", "name": "Example Partner", "status": "active", "payinsEnabled": true, "payoutsEnabled": true, "ipAllowListEnabled": true, "limits": { "payinMinimum": "100.00", "payinMaximum": "50000.00", "payoutMinimum": "100.00", "payoutMaximum": "50000.00", "dailyWithdrawalLimit": "0.00" }, "balance": { "currency": "THB", "total": "125000.00", "available": "120000.00" }, "createdAt": "2026-01-01T00:00:00.000Z" }, "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e"}Possible error HTTP statuses: 400, 401, 403, 500
End-of-day balance history
Section titled “End-of-day balance history”GET /v1/account/balance-historyfrom/to inclusive (YYYY-MM-DD, UTC+7), at most 31 days per request; longer ranges return 400 date_range_too_large. Entries are in date order.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
from | query | string | - | YYYY-MM-DD (UTC+7), inclusive. Default: 6 days before to (a 7-day range). The range may span at most 31 days. e.g. 2026-01-01 |
to | query | string | - | YYYY-MM-DD (UTC+7), inclusive. Default: today. e.g. 2026-01-31 |
Response 200 - data is an array of BalanceHistoryEntry
{ "data": [ { "date": "2026-01-01", "balance": "120000.00" } ], "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e"}Possible error HTTP statuses: 400, 401, 403, 500
Reports
Section titled “Reports”Totals of succeeded payments for a date range
Section titled “Totals of succeeded payments for a date range”GET /v1/reports/daily-summaryfrom/to inclusive (YYYY-MM-DD, UTC+7), at most 31 days per request; longer ranges return 400 date_range_too_large.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
from | query | string | - | YYYY-MM-DD (UTC+7), inclusive. Default: 6 days before to (a 7-day range). The range may span at most 31 days. e.g. 2026-01-01 |
to | query | string | - | YYYY-MM-DD (UTC+7), inclusive. Default: today. e.g. 2026-01-31 |
Response 200 - data is DailySummaryObject
{ "data": { "object": "daily_summary", "from": "2026-01-01", "to": "2026-01-07", "currency": "THB", "payinsSucceeded": "100000.00", "payoutsSucceeded": "40000.00", "withdrawalsSucceeded": "20000.00", "topupsSucceeded": "0.00", "fees": "1500.00" }, "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e"}Possible error HTTP statuses: 400, 401, 403, 500
Withdrawals
Section titled “Withdrawals”Request a withdrawal of your balance
Section titled “Request a withdrawal of your balance”POST /v1/withdrawalsOnly the documented fields are accepted; anything else is rejected.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Idempotency-Key | header | string | - | Optional, recommended. A unique key (8-255 characters of A-Z a-z 0-9 _ - : .) per create request, e.g. a UUID. Retrying with the same key and the same request within 24 hours returns the original response (header Idempotent-Replayed: true) instead of creating a second one. |
Request body (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
amount | string | yes | Amount to withdraw from your balance (THB) e.g. 10000.00 |
currency | THB, USD, USDT | - | Currency to be paid out in. Default THB. |
channel | bank_transfer, crypto | yes | |
bankName | string | - | bank_transfer: bank name. e.g. SCB |
bankAccountName | string | - | bank_transfer: account name. |
bankAccountNumber | string | - | bank_transfer: account number. |
walletAddress | string | - | crypto: wallet address. |
network | string | - | crypto: network, e.g. TRC20. |
note | string | - | Max 500 chars. |
{ "amount": "10000.00", "currency": "THB", "channel": "bank_transfer", "bankName": "SCB", "bankAccountName": "string", "bankAccountNumber": "string", "walletAddress": "string", "network": "string", "note": null}Response 201 - data is WithdrawalObject
{ "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": null, "accountName": null, "accountNumber": null }, "wallet": { "address": null, "network": null }, "note": null, "createdAt": "2026-01-01T00:00:00.000Z" }, "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e"}Possible error HTTP statuses: 400, 401, 403, 409, 422, 500
Verify a payment slip
Section titled “Verify a payment slip”POST /v1/slips/verifySend either JSON { "payload": "<QR payload>" } or multipart/form-data with a single file part (JPG/PNG, max 5 MB). For multipart the signature body hash is the SHA-256 of the file bytes.
Request body (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
payload | string | - | QR payload read from the slip (JSON requests) |
checkDuplicate | boolean | - | Ask the provider to flag duplicate slips. |
{ "payload": "0041000600000101030040220...", "checkDuplicate": true}Request body (multipart/form-data)
| Field | Type | Required | Description |
|---|---|---|---|
file | file | yes | JPG or PNG, max 5 MB. |
For multipart send only the file part and sign the SHA-256 of the file bytes.
Response 200 - data is SlipVerificationObject
{ "data": { "object": "slip_verification", "verified": true, "failureCode": null, "payload": "0041000600000101030040220...", "bankReference": "202601011234567890", "transferredAt": "2026-01-01T00:04:12.000Z", "amount": "100.00", "currency": "THB", "sender": { "bankCode": null, "bankName": null, "accountNumber": null, "accountName": null, "accountNameEn": null }, "receiver": { "bankCode": null, "bankName": null, "accountNumber": null, "accountName": null, "accountNameEn": null } }, "requestId": "req_8f2k3j4h5g6f7d8s9a0q1w2e"}Possible error HTTP statuses: 400, 401, 403, 422, 429, 500
Objects
Section titled “Objects”Shapes of the objects returned in data.
PartnerErrorDetail
Section titled “PartnerErrorDetail”| Field | Type | Required | Description |
|---|---|---|---|
type | invalid_request_error, authentication_error, permission_error, rate_limit_error, api_error | yes | |
code | string | yes | e.g. payer_not_found |
message | string | yes | e.g. No such payer. |
param | string | - | e.g. payerId |
PartnerErrorBody
Section titled “PartnerErrorBody”| Field | Type | Required | Description |
|---|---|---|---|
error | PartnerErrorDetail | yes | |
requestId | string | yes | e.g. req_8f2k3j4h5g6f7d8s9a0q |
Pagination
Section titled “Pagination”| Field | Type | Required | Description |
|---|---|---|---|
limit | number | yes | e.g. 20 |
hasMore | boolean | yes | e.g. true |
nextCursor | string | null | yes | Pass as cursor to fetch the next page. e.g. eyJvIjoyMH0 |
PayerObject
Section titled “PayerObject”| Field | Type | Required | Description |
|---|---|---|---|
object | string | yes | e.g. payer |
id | string | yes | e.g. payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d |
bankCode | string | null | yes | e.g. SCB |
bankName | string | null | yes | e.g. Siam Commercial Bank |
accountNumber | string | yes | e.g. 1234567890 |
accountName | string | yes | e.g. สมชาย สบายดี |
accountNameEn | string | null | yes | e.g. Somchai Sabuydee |
status | active, inactive | yes | e.g. active |
referralCode | string | null | yes | |
createdAt | string | yes | e.g. 2026-01-01T00:00:00.000Z |
BankAccountRef
Section titled “BankAccountRef”| Field | Type | Required | Description |
|---|---|---|---|
bankCode | string | null | yes | e.g. SCB |
accountNumber | string | null | yes | e.g. 1234567890 |
accountName | string | null | yes | e.g. Somchai Sabuydee |
| Field | Type | Required | Description |
|---|---|---|---|
bankCode | string | null | - | e.g. KBANK |
bankName | string | null | - | e.g. Kasikorn Bank |
accountNumber | string | null | - | e.g. 0987654321 |
accountName | string | null | - | e.g. Example Co., Ltd. |
promptpayId | string | null | - | e.g. 0812345678 |
walletAddress | string | null | - | Crypto payins only. e.g. 0xabc... |
network | string | null | - | Crypto payins only. e.g. BSC |
qrPayload | string | null | yes | The QR text the payer must scan, so you can render your own QR code: the EMVCo/PromptPay payload (incl. the amount) for promptpay_qr, the Lao QR payload for lao_qr. null for bank_transfer and crypto. e.g. 00020101021229370016A000000677010111011300668123456785802TH53037645406150.3763046572 |
PayinObject
Section titled “PayinObject”| Field | Type | Required | Description |
|---|---|---|---|
object | string | yes | e.g. payin |
id | string | yes | e.g. pin_3f2b1c0d9e8f4a7b8c6d5e4f3a2b1c0d |
reference | string | null | yes | Your own reference (order id) e.g. order-10001 |
payerId | string | null | yes | e.g. payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d |
payer | PayerObject | null | - | |
requestedAmount | string | yes | Amount requested. e.g. 150.00 |
amount | string | yes | Amount to be transferred. For payins this includes the unique decimals the payer must send. e.g. 150.37 |
fee | string | yes | e.g. 2.25 |
currency | string | yes | e.g. THB |
method | promptpay_qr, bank_transfer, crypto, lao_qr, auto | null | yes | |
status | pending, processing, in_review, succeeded, expired, canceled, rejected, failed | yes | |
failureReason | string | null | yes | |
webhookUrl | string | null | yes | e.g. https://partner.example.com/webhooks |
payerAccount | BankAccountRef | null | yes | |
createdAt | string | yes | e.g. 2026-01-01T00:00:00.000Z |
updatedAt | string | yes | e.g. 2026-01-01T00:00:00.000Z |
returnUrl | string | null | yes | e.g. https://partner.example.com/return |
checkoutUrl | string | null | yes | e.g. https://pay.example.com/3f2b1c0d-... |
paymentImage | string | null | - | PNG data URI (QR code or transfer card). Only present on create and retrieve when requested with ?include=paymentImage. |
payTo | PayTo | null | - | Where the payer must send money. Returned on create and retrieve only. |
PartnerWarningObject
Section titled “PartnerWarningObject”| Field | Type | Required | Description |
|---|---|---|---|
code | payer_name_differs | yes | e.g. payer_name_differs |
message | string | yes | e.g. An existing payer with this bank account was used. Its stored account name differs from the one sent and was kept; it is used for payment matching. |
param | string | - | e.g. payer.accountName |
SlipUploadResult
Section titled “SlipUploadResult”| Field | Type | Required | Description |
|---|---|---|---|
object | string | yes | e.g. slip_upload |
matched | boolean | yes | True if the slip matched and the payin succeeded. |
slipStatus | string | null | yes | e.g. matched |
payin | PayinObject | yes |
PayoutObject
Section titled “PayoutObject”| Field | Type | Required | Description |
|---|---|---|---|
object | string | yes | e.g. payout |
id | string | yes | e.g. pin_3f2b1c0d9e8f4a7b8c6d5e4f3a2b1c0d |
reference | string | null | yes | Your own reference (order id) e.g. order-10001 |
payerId | string | null | yes | e.g. payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d |
payer | PayerObject | null | - | |
requestedAmount | string | yes | Amount requested. e.g. 150.00 |
amount | string | yes | Amount to be transferred. For payins this includes the unique decimals the payer must send. e.g. 150.37 |
fee | string | yes | e.g. 2.25 |
currency | string | yes | e.g. THB |
method | promptpay_qr, bank_transfer, crypto, lao_qr, auto | null | yes | |
status | pending, processing, in_review, succeeded, expired, canceled, rejected, failed | yes | |
failureReason | string | null | yes | |
webhookUrl | string | null | yes | e.g. https://partner.example.com/webhooks |
payerAccount | BankAccountRef | null | yes | |
createdAt | string | yes | e.g. 2026-01-01T00:00:00.000Z |
updatedAt | string | yes | e.g. 2026-01-01T00:00:00.000Z |
DeletedObject
Section titled “DeletedObject”| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | e.g. payer_7c0a4b8e2f3d4a1b9c8d7e6f5a4b3c2d |
deleted | boolean | yes | e.g. true |
BankObject
Section titled “BankObject”| Field | Type | Required | Description |
|---|---|---|---|
object | string | yes | e.g. bank |
code | string | yes | e.g. SCB |
name | string | yes | e.g. Siam Commercial Bank |
localName | string | null | yes | e.g. ธนาคารไทยพาณิชย์ |
AccountLimits
Section titled “AccountLimits”| Field | Type | Required | Description |
|---|---|---|---|
payinMinimum | string | null | yes | e.g. 100.00 |
payinMaximum | string | null | yes | e.g. 50000.00 |
payoutMinimum | string | null | yes | e.g. 100.00 |
payoutMaximum | string | null | yes | e.g. 50000.00 |
dailyWithdrawalLimit | string | null | yes | Daily withdrawal limit, 0 means unlimited. e.g. 0.00 |
AccountBalance
Section titled “AccountBalance”| Field | Type | Required | Description |
|---|---|---|---|
currency | string | yes | e.g. THB |
total | string | yes | e.g. 125000.00 |
available | string | yes | e.g. 120000.00 |
AccountObject
Section titled “AccountObject”| Field | Type | Required | Description |
|---|---|---|---|
object | string | yes | e.g. account |
name | string | yes | e.g. Example Partner |
status | string | yes | e.g. active |
payinsEnabled | boolean | yes | |
payoutsEnabled | boolean | yes | |
ipAllowListEnabled | boolean | yes | |
limits | AccountLimits | yes | |
balance | AccountBalance | yes | |
createdAt | string | yes | e.g. 2026-01-01T00:00:00.000Z |
BalanceHistoryEntry
Section titled “BalanceHistoryEntry”| Field | Type | Required | Description |
|---|---|---|---|
date | string | yes | Day (UTC+7) e.g. 2026-01-01 |
balance | string | yes | Balance at end of day (THB) e.g. 120000.00 |
DailySummaryObject
Section titled “DailySummaryObject”| Field | Type | Required | Description |
|---|---|---|---|
object | string | yes | e.g. daily_summary |
from | string | yes | e.g. 2026-01-01 |
to | string | yes | e.g. 2026-01-07 |
currency | string | yes | e.g. THB |
payinsSucceeded | string | yes | e.g. 100000.00 |
payoutsSucceeded | string | yes | e.g. 40000.00 |
withdrawalsSucceeded | string | yes | e.g. 20000.00 |
topupsSucceeded | string | yes | e.g. 0.00 |
fees | string | yes | e.g. 1500.00 |
WithdrawalObject
Section titled “WithdrawalObject”| Field | Type | Required | Description |
|---|---|---|---|
object | string | yes | e.g. withdrawal |
id | string | yes | e.g. wd_0a1b2c3d4e5f60718293a4b5c6d7e8f9 |
status | pending, processing, succeeded, rejected | yes | |
channel | bank_transfer, crypto | yes | |
requestedAmount | string | yes | Requested amount (THB) e.g. 10000.00 |
fee | string | yes | Fee (THB) e.g. 50.00 |
netAmount | string | yes | Requested amount minus fee (THB) e.g. 9950.00 |
currency | string | yes | Currency paid out. e.g. THB |
payoutAmount | string | yes | Amount paid out in currency. e.g. 9950.00 |
exchangeRate | string | null | yes | e.g. 1.000000 |
bankAccount | object | null | yes | Destination bank account (bank_transfer) |
bankAccount.bankName | string | null | - | |
bankAccount.accountName | string | null | - | |
bankAccount.accountNumber | string | null | - | |
wallet | object | null | yes | Destination wallet (crypto) |
wallet.address | string | null | - | |
wallet.network | string | null | - | |
note | string | null | yes | |
createdAt | string | yes | e.g. 2026-01-01T00:00:00.000Z |
SlipParty
Section titled “SlipParty”| Field | Type | Required | Description |
|---|---|---|---|
bankCode | string | null | yes | |
bankName | string | null | yes | |
accountNumber | string | null | yes | |
accountName | string | null | yes | |
accountNameEn | string | null | yes |
SlipVerificationObject
Section titled “SlipVerificationObject”| Field | Type | Required | Description |
|---|---|---|---|
object | string | yes | e.g. slip_verification |
verified | boolean | yes | |
failureCode | slip_not_found, duplicate_slip, amount_mismatch, receiver_mismatch, invalid_image, invalid_payload, verification_unavailable | null | yes | |
payload | string | null | yes | |
bankReference | string | null | yes | Bank transaction reference. |
transferredAt | string | null | yes | |
amount | string | null | yes | e.g. 100.00 |
currency | string | null | yes | e.g. THB |
sender | SlipParty | null | yes | |
receiver | SlipParty | null | yes |