Boldrails

Thailand · PromptPay · Thai QR Payment

PromptPay API for businesses accepting payments in Thailand

A PromptPay API is a programmatic way to create a Thai QR Payment request and be told when it is paid. PromptPay is Thailand's account-to-account rail, launched in 2016 and settled in THB. Boldrails provides that API, the completion webhook and the payout side. Thailand is on request.

  • Collection and payout
  • THB settlement
  • Server-side completion webhook
  • KYB in 3 to 14 days

Onboarding takes 3 to 14 days, depending on your case.

Thai QR collection and payout, one APIPromptPay QRThai QR PaymentTHB settlementBulk THB payoutsKYB in 3 to 14 days

Overview

What is the PromptPay API?

A PromptPay API is a programmatic way to create a Thai QR Payment request and find out when it has been paid. PromptPay is Thailand's account-to-account rail. The Bank of Thailand says it launched in 2016 as national payment infrastructure. It moves money in THB only. Boldrails provides that API, plus the completion webhook behind it and the THB payout side. Thailand is on request, and we confirm the route for your business at onboarding.

Payers are identified by a proxy instead of an account number. The Bank of Thailand lists five: citizen ID, mobile number, another identification number, bank account number and e-Wallet ID. All of it runs on shared national infrastructure the Bank of Thailand oversees. Thai QR Payment is the QR service inside that family. That is what your customer scans.

So a PromptPay API is really two halves: the QR your payer sees, and the server-side confirmation your finance team can reconcile. Almost all of the engineering sits in the second half.

Sources: Bank of Thailand, PromptPay

Routes

Is there an official PromptPay API for merchants?

No. PromptPay has no open public merchant API you can sign up for and call. What you find when you search for one falls into three routes, and only one of them tells you that you got paid.

RouteWhat it gives youWhat it does not give you
Open-source QR library (free, npm or PHP)An EMVCo merchant-presented QR payload you can render anywhere, in a few lines of code.No confirmation, no reconciliation, no webhook, no settlement and no refund path. The payload carries your PromptPay ID in clear, so every payer sees the phone number, national ID or e-Wallet ID behind it.
A Thai bank's own APIA real API, bound to that bank's own accounts, and mostly built for outbound transfers and corporate cash management.Requires a Thai bank account at that bank. It is a disbursement rail, not a general collection API.
A licensed payment gatewayCollection, completion webhook, reconciliation, settlement and payouts under one integration.Requires KYB and an onboarding review before you can go live.

Two more things worth knowing. The PromptPay QR follows the EMVCo merchant-presented QR specification, with a national standard set by the Bank of Thailand. That is why any Thai bank app can read it. And the amount field in that payload is optional, so a static QR built by a free library will not tell your system what the payer actually sent. Gateways such as Omise/Opn and Stripe sit in the third route. So does Boldrails, with collection and bulk THB payout on one integration.

Diagram of three merchant payment paths, two ending in a dead end and one reaching a completed state, in violet and gold on a lavender canvas.

Sources: promptpay-qr, EMVCo payload reference; Krungsri, PromptPay API

Integration

How to accept PromptPay payments with Boldrails

Six steps, and the code is the short part. This is how a Thai QR Payment API integration runs with us.

  1. 1

    Apply and complete KYB

    Send us your company documents, your vertical and your processing history. Onboarding takes 3 to 14 days, depending on your case.

  2. 2

    Get sandbox keys

    You get test credentials before production. Run the whole flow in test mode: create a request, render the QR, fire the callback, then check what your system does with a duplicate.

  3. 3

    Create a THB payment request

    Call our API with the amount in THB and your own order reference. We return the Thai QR Payment payload for that request.

  4. 4

    Render the QR

    Show it in checkout, or hand it to the payer in your app. Any Thai bank app reads it, so your customer installs nothing.

  5. 5

    Take the completion callback

    We post the result to your endpoint. Match it to your order reference and mark the order paid. The webhook, not the QR, is the source of truth.

  6. 6

    Go live and reconcile

    Switch to live keys, then watch charge status and settlement in the dashboard. Our REST API works from PHP, Node, Python or anything that speaks HTTPS.

Most PromptPay API callback questions come down to one rule: register your endpoint once, verify the signature, and treat that event as final. The same integration also carries bulk THB payouts. Money you collect and money you send out share one set of credentials.

Provider comparison

PromptPay refunds, expiry and limits differ by provider

Nobody publishes this side by side, so here it is. Every populated cell is what that provider publishes; "not published" means the provider publishes nothing, not that the capability is missing.

PromptPay is one national rail, but refunds are not. On the same rail, one provider publishes that PromptPay charges cannot be voided or refunded, another supports full and partial refunds but only when the payer supplies their originating bank account number, and a third lists refunds as not available. Refund capability on PromptPay is a provider decision, not a property of the rail.
CapabilityOmise/OpnStripeXenditKrungsri (bank)Boldrails
DirectionCollectionCollectionCollectionPayout, direct creditCollection and payout
RefundsCannot be voided or refundedFull and partial, payer must supply the originating bank accountListed as not availableNot applicable, outboundConfirmed per account at onboarding
Published min amountTHB 20.00not publishednot publishednot publishednot published
Published max amountTHB 150,000.00 per chargenot publishednot publishedTHB 2,000,000 per transactionnot published
Published QR expiry24 hours by default, configurable, capped at 24 hoursnot publishednot publishedNot applicablenot published
Settlement timingnot publishednot publishedInstant in Thailandnot publishedConfirmed at onboarding
Disputesnot publishedDocumented as "not applicable"not publishedNot applicableNo card-style dispute mechanism on this rail
Foreign-entity eligibilityThailand, enablement by requestThailand-based accounts, US accounts in private previewnot publishedRequires an account at that bankRoute confirmed per business at onboarding

Every cell above was read from that provider's own published documentation on 1 August 2026. And providers change these terms without notice. Check the refund path against the current documentation before you write a line of code.

PromptPay carries no card-style chargeback mechanism, because the payer authorises the payment inside their own bank app. Exceptional cases still get reviewed by the provider. For merchants carrying card-dispute exposure, that is the reason to run a QR rail next to cards.

Eligibility

Can a foreign company accept PromptPay?

Ask this before you plan the build. Every publicly documented route presupposes a Thai-registered entity, a Thai bank account, or both. One global provider documents eligibility as Thailand-based accounts, with US-based accounts in private preview. A Thai bank's PromptPay API requires an account at that bank.

So what does the law actually say? Payment services in Thailand are regulated under the Payment System Act B.E. 2560 (2017). Accepting electronic payment for and on behalf of others is a designated payment service under that Act, licensed by the Minister of Finance on the Bank of Thailand's advice and supervised by the Bank of Thailand. Operating a designated payment system is restricted to licensed or registered juristic persons. That restriction is about who may run the system, not a ban on foreign ownership. The practical constraint on a foreign merchant is the entity and bank relationship each route asks for.

Boldrails is a licensed principal and holds the necessary licences required in the markets we serve. Thailand is on request. Tell us your entity, your volume and your vertical, and we confirm the route for your business at onboarding.

This Thailand eligibility and regulatory framing reflects Bank of Thailand materials and provider documentation as of 1 August 2026.

Sources: Bank of Thailand, Payment Systems Act oversight

Diagram of a corporate entity connecting to a national payment network through a single checkpoint, in violet with one gold checkpoint on a lavender canvas.

Pricing

What does it cost to accept PromptPay?

Two different costs get mixed up here, so we separate them. The Bank of Thailand publishes a standard transfer fee schedule for consumers sending money. That is not a merchant rate. Merchant acceptance pricing is a per-transaction rate set by each provider. In Thailand it is almost always quoted privately.

CostWho pays itAmount bandFee
Bank of Thailand standard transfer feeThe consumer sending the transferUp to THB 5,000Free
Bank of Thailand standard transfer feeThe consumer sending the transferTHB 5,000 to 30,000Under THB 2
Bank of Thailand standard transfer feeThe consumer sending the transferTHB 30,000 to 100,000Under THB 5
Bank of Thailand standard transfer feeThe consumer sending the transferAbove THB 100,000Under THB 10
Merchant acceptance rate (MDR)The merchantPer transactionSet by each provider, quoted privately
Published payout fee, one providerThe merchantUp to THB 2,000,000THB 20 per transfer
Published payout fee, one providerThe merchantAbove THB 2,000,000THB 150 per transfer

The Bank of Thailand notes on that same fee page that most banks have waived the consumer fees since 2018. Thai pricing is customarily quoted exclusive of 7% VAT. Payout fees are charged separately from acceptance. We quote your THB rate once we have seen your volume, your vertical and your refund pattern.

Sources: Bank of Thailand, PromptPay fee schedule

Who it's for

Who we serve in Thailand

We build for merchants that mainstream Thai onboarding tends to turn away, and for platforms moving THB in both directions.

  • E-commerce stores and marketplaces

  • Brokers and trading platforms

  • Crypto businesses and exchanges

  • Subscription and digital-goods platforms

  • Platforms running bulk THB payouts

  • High-volume merchants declined elsewhere

Thailand is on request. We confirm the route for your business at onboarding. We would rather say that plainly than list a market we cannot serve you in. PromptPay sits alongside our other mobile money and wallet rails, and the same credentials carry bulk THB payouts. Wallet money moves differently from bank money, so the TrueMoney wallet route sits on its own page. Holding stablecoin balances and need THB out the other side? Our crypto-to-fiat settlement desk handles the conversion.

FAQ

PromptPay API questions

Reviewed by Claude Igrow, Payments Specialist. Last updated: 1 August 2026.

Thai QR collection and payout