Skip to content
barcoder

Standards/promptpay-qr

PromptPay QR

TypeQR Code
PrimaryTH
MentionedLATH
Completeness89%high

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:

  • JavaScriptdtinth/promptpay-qr314★, 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.0saladpuk/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].
  • GoFrontware/promptpay — Go library for generating PromptPay QR codes [9].
  • Dart/Flutteremv_qr_builder package 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

  1. PromptPay — Bank of Thailand
  2. PromptPay — Wikipedia
  3. EMV QR Code Specifications — EMVCo
  4. Does PromptPay have a future? — Medium / MobileTopUp
  5. Thailand PromptPay Case Study — World Bank Fast Payments
  6. The What, Why and How of EMV QR Codes — EMVCo
  7. dtinth/promptpay-qr — GitHub
  8. saladpuk/PromptPay — GitHub
  9. Frontware/promptpay — GitHub
  10. emv_qr_builder — pub.dev
  11. TH-thailand.md
  12. Pix entry — comparison

Deployments

Found in the following country reports (grep across reports/countries/):

source · docs/standards/promptpay-qr/index.md