Gateway deposit (QR)

Live
POST/api/v1/deposits/gateway

Create 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

FieldTypeRequiredDescription
AuthorizationstringYesUsed — send Bearer <member access_token>
X-Api-KeystringYesAgent API key (ak_…) from the bo screen
X-TimestampstringYesSigning time in unix milliseconds (±300s skew allowed)
X-NoncestringYesUnique per-request value (UUIDv4) for replay protection
X-SignaturestringYeshex(HMAC-SHA256(secret, canonical)) — see the Authentication page
X-Player-IPstring—The player's real IP (IPv4/IPv6) — recommended (used in login history)
X-Player-UAstring—The player's User-Agent (optional — recorded in login history)
X-Request-Idstring—Your correlation id — echoed back as request_uuid (recommended)
x-langstring—th (default) or en — the language of message

Request bodyapplication/json

FieldTypeRequiredDescription
amountnumberYesDeposit amount (THB)
Request example
{
  "amount": 500
}

Response

Fields in data

FieldTypeRequiredDescription
order_idstring (uuid)—The created deposit order id
qrcodestring | null—The QR payload (PromptPay string) to render as a QR image for the member — null if the gateway did not issue one
expires_atstring (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

codeNameHTTPMessage
1002FORBIDDEN403ForbiddenThe member is under a SEAMLESS-wallet agent — the wallet lives on the agent side, so depositing through the member API is unavailable
4001VALIDATION_ERROR400Validation errorInvalid amount, e.g. missing, zero/negative, or outside the accepted range
4002BAD_REQUEST400Bad requestThe request's agent could not be resolved (unknown domain/credential)
5005GATEWAY_TEMP_UNAVAILABLE503Payment gateway temporarily unavailableThe upstream gateway is temporarily failing — retry, or offer another deposit method
5007GATEWAY_NOT_CONFIGURED422Payment gateway not configuredYour site has no payment gateway configured for deposits
9002SERVICE_UNAVAILABLE503Service unavailableThe internal payment service is temporarily unreachable — retry later