# PromptPay QR in Thailand — how the national payment code works

> PromptPay is Thailand's national instant-payment system, launched in 2017 under the Bank of Thailand's National e-Payment plan. Its QR codes are EMVCo merchant-presented payloads that address a proxy — a mobile number, national ID number or e-wallet ID — and every Thai banking app can read every code.

Source: https://useqr.app/docs/payments/promptpay-qr-thailand · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## The system

PromptPay launched in 2017 as the centrepiece of the Bank of Thailand's National e-Payment
master plan: an instant account-to-account transfer system where you register a **proxy** —
something people already know about you — against your bank account, instead of handing out
account numbers. The registered proxy types are a **mobile phone number**, the **13-digit
national ID number**, and **e-wallet IDs**; businesses register a tax ID.

The Thai QR payment standard sits on top: one code format, standardised by the Bank of
Thailand on the [EMVCo merchant-presented
specification](/docs/payments/emvco-merchant-presented-qr), readable by every participating
Thai banking and wallet app. A street vendor's laminated code and a department store's
till-generated code are the same format.

## What is in a PromptPay code

Structurally it is standard EMVCo TLV: two-digit ids, two-digit lengths, values, ending in a
[CRC16 checksum](/glossary/crc16). The PromptPay credit-transfer data sits in merchant
account template **29**, whose first sub-field carries the scheme's application identifier
(`A000000677010111`) followed by the proxy — a phone number is stored in international form
with a `0066` prefix, so `081-234-5678` becomes `0066812345678`. Field `54` carries a
prefilled amount when the merchant fixes one; without it the payer types the amount, which
is the normal market-stall flow.

Decode any PromptPay sticker with [/validate](/validate) or your camera and
[/scan](/scan) to see this structure directly — it reads like the
[PIX payload](/docs/payments/pix-qr-code-format), because both profile the same base
standard.

## Adoption — the street-level reality

Thailand is one of the most QR-saturated payment environments anywhere: codes at
street-food stalls, taxis, temples' donation boxes, market stands, 7-Eleven counters and
utility bills. Two design choices drove this. Registering a phone number as a proxy made
receiving payments as easy as being reachable, and person-to-person PromptPay transfers are
free at typical amounts — so tipping a vendor and paying a friend use the same rail. For a
merchant, acceptance hardware is a piece of laminated paper.

## What a foreign visitor can do

A tourist's home banking app cannot read a PromptPay code by itself — the code addresses a
Thai domestic system. What exists instead is a growing set of **bilateral cross-border
linkages**: the PromptPay–PayNow link with
[Singapore](/docs/payments/paynow-qr-singapore), launched in 2021 as the first of its kind,
lets users of each system pay the other's QR codes from their home apps, and further ASEAN
QR linkages (Malaysia, Indonesia and others) have followed under regional payment
connectivity agreements. Whether *your* bank or wallet participates is the operative
question — check your own app's documentation rather than assuming. Cash and cards remain
the fallback; the Bank of Thailand is the authority for current linkage status.

## Generating and printing

UseQR does not offer a dedicated PromptPay builder. If you have a code from your Thai bank,
treat printing it like any [payment QR deployment](/docs/payments/qr-payment-standards-compared):
**≥ 4–5 cm** at counter distance, [quiet zone](/glossary/quiet-zone) intact, your name
printed large so customers can match it against the app's confirmation screen — the
sticker-overlay scam is the dominant fraud on every merchant-presented scheme, PromptPay
included.

## FAQ

### What is in a PromptPay QR code?
An EMVCo merchant-presented payload — tag-length-value fields with a CRC16 checksum — whose
template 29 carries the PromptPay application ID and a proxy such as a phone number in
0066 international form, plus optional amount, merchant name and city.

### Can every Thai banking app read every PromptPay code?
Yes. The Bank of Thailand standardised a single Thai QR payment format, so any participating
bank or wallet app reads any merchant's code. Merchants need one code, not one per app.

### Can tourists pay PromptPay QR codes?
Only through cross-border linkages. Singapore's PayNow users have been able to pay Thai QR
codes since 2021, and further ASEAN app linkages have followed. Whether your specific home
app participates is the deciding factor — check before relying on it.

### Is PromptPay free?
Person-to-person transfers are free at typical amounts, which is central to its adoption.
Merchant pricing depends on the receiving bank and account type; the QR code itself costs
nothing to display.

## Try it

- https://useqr.app/validate
- https://useqr.app/scan
