Sandbox lab

Click through checkout QR, inspect, rotate, and the two verify mistakes — no curl required.

Branch

Needs a sandbox API key. One-click paid order still creates a TH intent (THB 1,500) and verifies a stub slip that is not the checkout QR. Credit only if verification.verdict == "Approved".

1. Checkout playground
2. Inspect any payload
Cookbook (copy-paste API)

A PromptPay QR cannot expire inside the bank app. The clock lives in Payslip. Always verify with intentId. Fulfill only when data.verdict == "Approved".

POST /v2/intents
{ "marketCode":"TH","orderId":"ord-1001","amount":1500.50,"account":"0812345678","expiresInMinutes":15,"includeQr":true,"extraQr":[{ "marketCode":"VN","account":"9704180000000001" }] }

POST /v2/intents/{id}/rotate-qr
POST /v2/qr/inspect  { "payload":"000201…" }
GET  /v2/payees/{id}/static-qr

POST /v2/verify/bank
Idempotency-Key: ord-1001
{ "payload":"<slip QR, not the merchant QR>","intentId":"<id>","checkDuplicate":true,"liveFrames":["<2nd frame>"] }

Try a slip · Intents · OpenAPI