Standards/promptpay-qr
PromptPay QR
Overview
PromptPay is Thailand's national real-time interbank payment system, launched in December 2016 by the National ITMX (NITMX) under Bank of Thailand oversight [1, 2]. The PromptPay QR standard is its merchant-presented QR profile, based on the EMVCo MPM specification with a Thailand-specific assigned tag (TAC 30) [3, 4]. By December 2025 the system handled ~74 million daily transactions across 82.2 million registrations (90 M+ cumulative), with 2.26 billion transactions in a single month (November 2025) worth THB 4.19 trillion — making it one of the highest per-capita transaction-rate digital-payment rails in Southeast Asia, with ~400,000 registered businesses on PromptPay TH. PromptPay QR is cross-border-linked with seven ASEAN neighbours TH.
The underlying real-time switch was built by Vocalink (Mastercard), drawing on Vocalink's UK Faster Payments and India IMPS lineage [5].
History
In December 2016 the National Interbank Transaction Management and Exchange (NITMX, the Thai interbank switch) launched PromptPay as a person-to-person interbank credit transfer service operating 24/7/365 [1]. The interbank credit transfer service was activated on 27 January 2017 for general public use [1]. The original launch enabled transfers using a registered proxy (mobile phone number, national citizen ID, or business registration number) rather than requiring full bank account details — the same proxy-based addressing model that India's UPI uses with VPAs [2].
The QR-based payment overlay, branded MyPromptQR, was introduced in September 2019, enabling merchant-presented and consumer-presented QR payments on top of the underlying PromptPay rail [1]. The QR layer adopted the EMVCo Merchant-Presented Mode specification with Thailand-specific extensions.
Vocalink's role: Vocalink (then a Mastercard subsidiary) was contracted by the Thai Bankers' Association to design and build the underlying Real-Time Payments Switch and Multi-Proxy Platform. Vocalink spent 12 months in business-requirements assessment and built on its experience with the UK Faster Payments Service and India's IMPS [5].
Cross-border milestones TH:
- April 2021: PromptPay ↔ PayNow (Singapore) live for instant cross-border P2P.
- 2022–2024: PromptPay ↔ DuitNow (Malaysia), QRIS (Indonesia), KHQR (Cambodia), LaoQR (Laos).
- 2024–2025: Japan and China connectivity under development.
Technical specification
PromptPay QR is an EMVCo Merchant-Presented Mode (MPM) profile with a Thailand-specific application identifier [3, 4].
EMVCo MPM foundation [6]:
- Payload format: TLV (Tag-Length-Value) plain-text string
- Integrity: CRC-16/CCITT-FALSE appended as field
63 - Static and dynamic QR variants supported
- Underlying symbology: qr-code
Thailand-specific extensions [4]:
- EMVCo reserves tag numbers 26–52 for local card schemes; PromptPay uses TAC 30 for the Thai-PromptPay merchant-account-information template
- Internal switch messaging uses ISO 20022 [5]
- Currency code: 764 (THB)
Proxy identifier types for the PromptPay account encoded in the QR TH:
- Mobile phone number (Thailand-formatted)
- Citizen ID (13-digit Thai national ID)
- Business registration number (for merchants)
- E-wallet ID
Settlement uses the underlying PromptPay rail (NITMX switch operated under Bank of Thailand supervision) [1]. Person-to-person transfers are fee-free; merchant fees are minimal compared to card rails TH.
Use cases
- Person-to-person transfers — the launch use case. Free, instant, replaces cash for splitting bills, paying friends [2].
- Retail point of sale — every shop from street stalls to large chains displays a static PromptPay QR; market-share grew from negligible in 2017 to 42.7 % of 2024 transaction value via QR TH.
- Tourism — the 7-country cross-border QR mesh (SG, MY, ID, LA, KH, CN, JP-planned) makes PromptPay one of the most internationally interoperable national QR rails; tourists from member countries scan Thai PromptPay QRs with their home banking app TH.
- Government and tax payments — disbursements and collection between citizens and government [2].
- Bill payments — utilities, telecom, insurance.
- E-commerce checkout — dynamic PromptPay QR generated per-cart on Thai e-commerce sites.
Adoption metric: 92 % of the Thai population uses digital payments TH — a remarkable transition from a cash-dominant economy in under a decade.
Implementations
PromptPay's open EMVCo TLV structure produced a strong open-source library ecosystem.
Encoders / decoders:
- JavaScript — dtinth/promptpay-qr — 314★, 2022. The most-starred PromptPay library. Ships as a web app at
promptpay2.me, a CLI, and a JavaScript library. Encodes the EMV QRCPS Merchant Presented Mode payload, embeds a PromptPay proxy (mobile or citizen ID) and optional amount [7]. - C# / .NET Standard 2.0 — saladpuk/PromptPay — 91★, 2021. Read, write, and validate PromptPay QR codes per the EMVCo standard. Supports static and dynamic QR generation for credit transfers and bill payments [8].
- Go — Frontware/promptpay — Go library for generating PromptPay QR codes [9].
- Dart/Flutter —
emv_qr_builderpackage on pub.dev — EMVCo TLV builder with PromptPay support [10].
Bank apps (canonical production implementations): K PLUS (Kasikornbank), SCB EASY, Bangkok Bank Mobile, Krungthai NEXT, KMA (Krungsri), plus e-wallets TrueMoney, Rabbit LINE Pay, ShopeePay TH. All major Thai bank apps both scan and generate PromptPay QRs.
Decoders: any QR scanner produces the TLV string; the EMVCo parse is generic. The C# library above does full parse + validate.
Comparison
vs. sgqr (Singapore) and duitnow-qr (Malaysia) — Same EMVCo MPM technical foundation; same launch era (2018–2019); same central-bank-affiliated operator model. SGQR uniquely combines many schemes (card networks + e-wallets + bank rails) under one QR; PromptPay is bank-rail-only via NITMX; DuitNow is bank + e-wallet [sg-cro, my-cro, th-cro]. All three are connected in a multilateral ASEAN cross-border QR network.
vs. upi-qr (India) — Both are central-bank-driven national instant-payment rails with proxy-based addressing (Pix key / VPA / PromptPay ID). UPI uses a upi://pay?... deep link rather than EMVCo TLV; PromptPay uses EMVCo TLV. UPI scale is two orders of magnitude larger (250B vs ~28B annual transactions), reflecting India's population but also UPI's earlier launch and zero merchant fee [in-cro, th-cro].
vs. pix (Brazil) — Both used Vocalink/Mastercard advisory work in their design phase; both adopted EMVCo MPM for the QR layer; both are bank-rail-only proxy-addressed instant payment systems. Pix launched later (2020) but scaled faster due to mandatory bank participation [pix-ref].
Fun facts
PromptPay's growth made Thailand one of Southeast Asia's leading per-capita digital-payment markets, with ~74 million daily transactions across 82 million registrations (~1+ transaction per day per Thai resident) and 2.26 billion transactions in a single month (November 2025) TH. (Note: a previous version of this entry cited "538 transactions per person per year"; that figure actually describes Malaysia's 2025 cashless-payment-per-capita statistic and has been removed.)
The PromptPay rail was built by Vocalink, the same Mastercard subsidiary that built the UK's Faster Payments Service (FPS) and India's IMPS [5]. The 12-month design phase explicitly drew on those earlier implementations — PromptPay is the third instance of the same architectural lineage, and arguably the most successful per-capita of the three.
PromptPay was an unusually government-led top-down rollout: the Bank of Thailand and Thai Bankers' Association coordinated a single nationwide proxy registry (mobile/citizen-ID → bank account) and required all member banks to participate. This is part of why adoption was faster than India's UPI (which is also broad but multi-app from day one) and Brazil's Pix (which similarly mandated bank participation). The proxy-registry approach is now the reference pattern for new national instant-payment systems [5].
Status
Active, dominant, and internationally connected. Most recent transaction volumes:
- 77 million PromptPay registrations TH
- 75.9 million daily transactions TH
- ~74 million daily transactions across 82 million registrations TH
- 41.6 % of mobile payment market share TH
- 42.7 % of 2024 transaction value via QR code TH
Cross-border integrations remain a focus — Japan and China connections are under development; eight ASEAN+ countries are currently live or rolling out TH. Thailand is piloting a CBDC (digital baht) alongside, but this is positioned as complementary rather than a replacement for PromptPay TH.
No deprecation planned. Tourism-driven cross-border QR growth has been a particular driver: foreign tourists from connected countries can scan a Thai PromptPay QR with their home banking app and pay in local currency, removing one of the historical friction points of inbound tourism payment TH.
Sources
- PromptPay — Bank of Thailand
- PromptPay — Wikipedia
- EMV QR Code Specifications — EMVCo
- Does PromptPay have a future? — Medium / MobileTopUp
- Thailand PromptPay Case Study — World Bank Fast Payments
- The What, Why and How of EMV QR Codes — EMVCo
- dtinth/promptpay-qr — GitHub
- saladpuk/PromptPay — GitHub
- Frontware/promptpay — GitHub
- emv_qr_builder — pub.dev
- TH-thailand.md
- Pix entry — comparison
Deployments
Found in the following country reports (grep across reports/countries/):
- LA — LA-laos.md
- TH — TH-thailand.md