Payment methods
Choose QR, card, Alipay, or WeChat Pay.
Current availability
TEST simulates payments without contacting a bank. LIVE creation requires approved, unexpired KYC and an enabled bank merchant configuration for the requested method. Each request must fit its currency amount range. Bank callback verification, polling and LIVE cancellation remain unavailable pending bank authentication implementation; creation alone does not confirm settlement.
| Method | Create route |
|---|---|
| LDB QR | POST /api/v1/payments/generate-ldb-qr |
| Indochina Bank QR | POST /api/v1/payments/generate-ib-qr |
| LDB Card | POST /api/v1/payments/card |
| Alipay | POST /api/v1/payments/wallet |
| WeChat Pay | POST /api/v1/payments/wallet |
Common request rules
Use server-side HMAC authentication. Idempotency-Key is optional on create requests. Supply orderId for duplicate-order checks; a protected existing order returns 409 Conflict. Without a key or order ID, repeated calls can create separate payments. amount is a JSON number in the stated currency units (not an automatic cents conversion), at least 0.01, with at most six decimal places. The gateway accepts uppercase LAK, USD, and THB; this does not guarantee every live provider/method/currency combination is enabled.
currency is required. orderId, description, and metadata are optional, but supplying your order ID is recommended for reconciliation. Card order IDs, if supplied, must be 12–32 characters. Unknown body properties are rejected. Send paymentMethod only for the card or wallet routes, not the bank-specific QR routes.
Read the response
Successful API calls use { success, title, message, timestamp, data }. Read payment fields from data. Payment creation normally returns HTTP 201 and PENDING. transactionId is the gateway payment identifier; orderId is your reference; simulationId is the internal TEST identifier used by the portal simulator. Do not use them interchangeably.
See status and reconciliation before fulfilling an order.
Request metadata is stored with the transaction and included in callbacks. Payment-generation responses and idempotent replays do not return it.