MakeQR

PromptPay QR: How to Get and Use One

PromptPay is Thailand’s national payment rail, and its QR codes are the reason a Bangkok street stall can take a cashless payment without a card terminal. Like Singapore’s PayNow it routes to a registered proxy — a mobile number, a national ID, or an e-wallet identifier — rather than to an account number, and like Malaysia’s DuitNow it follows the EMVCo specification, which is what makes cross-border scanning possible where the operators have linked their networks. The one point that catches visitors is asymmetric: tourists from linked countries can often pay a PromptPay code with their home app, but receiving money through PromptPay requires a Thai bank account or licensed e-wallet, and no amount of generator software substitutes for that registration.

How PromptPay works

You register a proxy — most commonly your Thai mobile number or your national ID number — against a bank account. A PromptPay QR encodes that proxy in an EMVCo payload, and anyone with a Thai banking app can scan it and transfer instantly, with the funds arriving in seconds rather than clearing later.

Because the code names a proxy rather than an account, you can move the underlying account without invalidating codes already printed or shared. That is the same design PayNow uses, and it is a meaningful practical advantage over encoding account numbers directly.

Getting your code

Individuals: register your mobile number or ID with your Thai bank, then use the bank app’s “My QR” screen to display or download the code. There is no charge and it is available immediately.

Merchants: apply through your bank for a shop code. Merchant setups can issue dynamic codes carrying a fixed amount per bill, which removes the customer-typing step and gives you a reference on each transaction for reconciliation.

What tourists can and cannot do

Paying: visitors from countries whose payment operator has an active link with Thailand — arrangements exist with Singapore, Malaysia and others — can often scan a PromptPay code directly in their home banking app, with the currency conversion handled between the two schemes. This depends on the specific link and on your bank participating, so confirm before travelling rather than assuming.

Receiving: not possible without local registration. A PromptPay proxy must be linked to a Thai bank account or a licensed Thai e-wallet, so a visitor cannot set themselves up to receive PromptPay payments, and no generator changes that.

Re-encoding an existing payload

Because the static payload format is a published EMVCo standard, re-encoding a payload your bank has already issued you — to print it larger, or to place it in a design — is legitimate and works, provided the payload string is copied exactly. A single altered character invalidates the checksum at the end of the payload and the code stops resolving.

Building one from scratch is a different matter: the proxy has to be genuinely registered for the code to resolve to anything, so verify with a small real payment before printing at volume. A code that looks correct and pays nobody is an expensive thing to discover after the standees arrive.

Printing and safety

Print large, keep dark modules on white, leave the quiet zone clear, and prefer matte to glossy so the code survives overhead lighting. Test on more than one phone before a print run.

Read the payee name before confirming a payment — swapped stickers are the standard fraud in every QR payment market, and the displayed name is what catches them. Merchants should check their own standee regularly.

Need a general-purpose code instead? Use the free QR code generator — it runs entirely in your browser.

Frequently asked questions

Can I receive PromptPay payments without a Thai bank account?

No. PromptPay proxies must be linked to a Thai bank account or a licensed Thai e-wallet. Visitors can pay where a cross-border link exists, but receiving requires local registration.

Can I make a PromptPay QR with an online generator?

You can re-encode a payload your bank has already issued, exactly as given, to print it at a different size. Creating one from scratch only works if the proxy is genuinely registered, and the payload carries a checksum that fails if a single character is altered. Test with a real payment first.

What is the difference between a static and a dynamic PromptPay QR?

A static code carries your proxy and no amount, so the payer enters it. A dynamic code is generated per bill with the amount and a reference included, which removes typing errors and lets you reconcile payments against sales automatically.

Does a PromptPay QR expire?

A static code keeps working while the proxy stays registered to an active account. Dynamic per-transaction codes are session-bound by design, because each one represents a single bill.

Which proxy should I register?

A mobile number is the usual choice for individuals and is easy to share verbally as a fallback. National ID is also supported. Businesses should register through the bank as a merchant rather than using a personal proxy, so transactions settle correctly and carry references.

Advertisement