Gateway deposit (QR)
LivePOST
/api/v1/deposits/gatewayCreate a payment-gateway deposit
Show the QR to the member before expires_at. On successful payment the wallet is credited automatically (check via the balance/transactions endpoints) — no further confirmation call is needed.
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| Authorization | string | Yes | Used — send Bearer <member access_token> |
| X-Api-Key | string | Yes | Agent API key (ak_…) from the bo screen |
| X-Timestamp | string | Yes | Signing time in unix milliseconds (±300s skew allowed) |
| X-Nonce | string | Yes | Unique per-request value (UUIDv4) for replay protection |
| X-Signature | string | Yes | hex(HMAC-SHA256(secret, canonical)) — see the Authentication page |
| X-Player-IP | string | — | The player's real IP (IPv4/IPv6) — recommended (used in login history) |
| X-Player-UA | string | — | The player's User-Agent (optional — recorded in login history) |
| X-Request-Id | string | — | Your correlation id — echoed back as request_uuid (recommended) |
| x-lang | string | — | th (default) or en — the language of message |
Request bodyapplication/json
| Field | Type | Required | Description |
|---|---|---|---|
| amount | number | Yes | Deposit amount (THB) |
Request example
{
"amount": 500
}Response
Fields in data
| Field | Type | Required | Description |
|---|---|---|---|
| order_id | string (uuid) | — | The created deposit order id |
| qrcode | string | null | — | The QR payload (PromptPay string) to render as a QR image for the member — null if the gateway did not issue one |
| expires_at | string (ISO 8601) | — | when the QR expires |
Response example
{
"success": true,
"code": 0,
"message": "สำเร็จ",
"data": {
"order_id": "a1c3e5b7-2d4f-4a6c-8e0b-9d1f3a5c7e9b",
"qrcode": "00020101021229370016A000000677010111011300668123456785802TH53037645406500.006304ABCD",
"expires_at": "2026-07-05T12:30:00.000Z"
},
"request_uuid": "9f2b7d1e-4a83-4c1f-b2ce-6d5a0e8f3c21"
}Possible error codes
| code | Name | HTTP | Message |
|---|---|---|---|
| 1002 | FORBIDDEN | 403 | ForbiddenThe member is under a SEAMLESS-wallet agent — the wallet lives on the agent side, so depositing through the member API is unavailable |
| 4001 | VALIDATION_ERROR | 400 | Validation errorInvalid amount, e.g. missing, zero/negative, or outside the accepted range |
| 4002 | BAD_REQUEST | 400 | Bad requestThe request's agent could not be resolved (unknown domain/credential) |
| 5005 | GATEWAY_TEMP_UNAVAILABLE | 503 | Payment gateway temporarily unavailableThe upstream gateway is temporarily failing — retry, or offer another deposit method |
| 5007 | GATEWAY_NOT_CONFIGURED | 422 | Payment gateway not configuredYour site has no payment gateway configured for deposits |
| 9002 | SERVICE_UNAVAILABLE | 503 | Service unavailableThe internal payment service is temporarily unreachable — retry later |