How PromptPay Works – Complete Guide

Everything about Thailand's instant payment system: PromptPay keys, EMV QR payload, phone normalization, ASEAN cross-border network and supported banks.

What is PromptPay?

PromptPay (พร้อมเพย์) is Thailand's national instant payment system, jointly developed by the Bank of Thailand (BOT) and the Thai Bankers' Association (TBA). Launched in January 2017 as part of the government's National e-Payment Master Plan, PromptPay fundamentally changed how Thais send and receive money — replacing slow inter-bank transfers with a system that settles in under five seconds, around the clock, every day of the year.

The core innovation is the PromptPay ID — an alias linked to a bank account. Instead of sharing a bank account number and branch code, a recipient registers their Thai mobile phone number (starting with 06, 08 or 09) or their 13-digit National ID (บัตรประชาชน). Businesses register using a Tax ID (เลขนิติบุคคล). The sender only needs to know the PromptPay ID; the ITMX switching network routes the payment to the correct bank account automatically.

All Thai banks with significant customer bases are required by the Bank of Thailand to participate. PromptPay is free for consumers — and since 2019 the BOT eliminated interbank transfer fees entirely for PromptPay transactions, making it the default way Thais move money domestically.

A PromptPay QR Code encodes the payment using the same EMV Merchant Presented Mode (MPM) standard used by Brazil's PIX and Indonesia's QRIS. The payload is a TLV (Tag-Length-Value) encoded string with the PromptPay AID A000000677010111 and a CRC16-CCITT checksum that banks verify before processing any payment.

How PromptPay Works – Step by Step

  1. 1

    Recipient shares PromptPay QR or key

    The payee provides a phone number, National ID or a PromptPay QR code. Static QR codes work for any amount; dynamic QR codes include a pre-set amount for invoices and e-commerce.

  2. 2

    Payer opens any Thai banking app

    All 30+ participating banks are fully interoperable. A payment from KBank arrives instantly in an SCB account — there is no lock-in to any specific institution.

  3. 3

    Payer scans QR or enters phone/ID

    The app activates the camera for QR scanning, or the payer types the PromptPay key manually. The recipient's name is shown for confirmation.

  4. 4

    Payment details confirmed on screen

    The recipient's name (as registered with ITMX) is displayed. If a dynamic QR is used, the amount is pre-filled. Static QR requires the payer to enter the amount.

  5. 5

    Payer authenticates (biometric or PIN)

    Authentication happens entirely within the banking app. The PromptPay QR contains no passwords, PINs or sensitive banking credentials.

  6. 6

    Transfer completes instantly

    The ITMX infrastructure routes the payment through the PromptPay network. Funds settle in real time between the two bank accounts — typically within 5 seconds.

  7. 7

    Both parties receive app notification

    Sender and recipient both get instant push notifications. The payer's app shows a receipt with a transaction reference number for records.

PromptPay Keys – Phone vs National ID

A PromptPay key is an alias registered in the ITMX NPCI (National Payment Central Infrastructure) directory that maps to a specific bank account. Individuals typically use their phone number (easiest to share) or National ID (most stable). Companies use their Tax ID.

Key TypeFormatExampleBest For
Phone Number06/08/09 + 7 digits0812345678Individuals, easiest to share
National ID13 digits1234567890123Formal registration, individuals
Tax ID13 digits (starts 0)0105543012345Companies and juristic entities
E-Wallet ID00 + 13–15 digits0012345678901234Digital wallet accounts

The PromptPay QR Payload – EMV Format

PromptPay QR codes follow the EMV Merchant Presented QR Code (MPM) specification — the same international standard used by Brazil's PIX and India's BharatQR. Thailand's version uses merchant account tag 29 (vs. tag 26 for PIX) and the PromptPay AID A000000677010111.

The payload is a continuous TLV string. Here is a formatted example (line breaks added for readability):

000201                              ← Tag 00: Payload Format Indicator
010211                              ← Tag 01: Static QR (11)
2937                                ← Tag 29: Merchant Account (length 37)
  0016A000000677010111                ← Sub-tag 00: PromptPay AID
  01130066812345678                   ← Sub-tag 01: Normalized phone key
52040000                            ← Tag 52: Merchant Category Code
5303764                             ← Tag 53: Currency (THB = 764)
5406100.00                          ← Tag 54: Amount
5802TH                              ← Tag 58: Country Code
5903N/A                             ← Tag 59: Merchant Name
6007Bangkok                         ← Tag 60: Merchant City
62070503***                         ← Tag 62: Additional Data
6304ABCD                            ← Tag 63: CRC16 Checksum
TagExample ValueDescription
0001Payload Format Indicator – always 01
0111 / 12Point of Initiation: 11 = static, 12 = dynamic (with amount)
29Merchant Account Information (PromptPay sub-fields)
29.00A000000677010111PromptPay Application ID (AID)
29.010066812345678Normalized recipient key (phone or national ID)
520000Merchant Category Code (0000 = uncategorized)
53764Transaction Currency – ISO 4217 code for THB
54100.00Transaction Amount (omitted in static QR)
58THCountry Code – ISO 3166-1 alpha-2
59N/AMerchant Name (optional in PromptPay)
60BangkokMerchant City (optional)
62Additional Data Field Template (transaction ref)
63ABCDCRC16-CCITT Checksum – 4 uppercase hex characters

Phone Number Normalization

PromptPay QR codes do not embed the raw Thai phone number — they use a normalized international format. The rule is straightforward:

  • 1️⃣Start with a local Thai number: 0812345678
  • 2️⃣Remove the leading 0: 812345678
  • 3️⃣Prepend the country code prefix 0066: 0066812345678
  • 🔁If the input starts with +66 (international format), replace the + with 00: +66812345678 → 0066812345678

The resulting string (e.g. 0066812345678) is embedded as sub-tag 01 inside the tag-29 merchant account field. National IDs and Tax IDs are used as-is (13 digits, no transformation). Here is the normalization logic in TypeScript:

function normalizePromptPayKey(key: string): string {
  const digits = key.replace(/\D/g, '');

  // National ID or Tax ID (13 digits) — use as-is
  if (digits.length === 13) return digits;

  // Phone number normalization
  if (digits.startsWith('0') && digits.length === 10) {
    return '0066' + digits.slice(1);   // 0812345678 → 0066812345678
  }
  if (digits.startsWith('66') && digits.length === 11) {
    return '00' + digits;              // 66812345678 → 0066812345678
  }
  return digits;
}

PromptPay's ASEAN Cross-Border Network

PromptPay is no longer a purely domestic system. Thailand has established bilateral QR payment linkages with seven countries, allowing citizens to send and receive money across borders by scanning a QR code in their local banking app — with automatic currency conversion at interbank rates.

These linkages use each country's existing instant payment infrastructure, avoiding international wire transfer fees and delays. The framework is championed by the Bank for International Settlements (BIS) and the ASEAN central banks as a model for regional payment interoperability.

🇸🇬

Singapore

PayNow

Since 2021
🇲🇾

Malaysia

DuitNow

Since 2022
🇮🇩

Indonesia

QRIS

Since 2023
🇻🇳

Vietnam

VietQR

Since 2023
🇰🇭

Cambodia

Bakong

Since 2020
🇯🇵

Japan

JCB QR

Since 2023
🇨🇳

China

WeChat / Alipay

Since 2018

The most active corridor is Thailand–Singapore via the PromptPay–PayNow linkage, which enables Thai visitors to Singapore (and vice versa) to pay at any merchant that accepts the local QR code. The transaction is debited in the sender's currency and credited in the recipient's currency, with no hidden fees beyond the interbank exchange rate.

The China connection (WeChat Pay and Alipay, active since 2018) is particularly significant for Thai tourism, as Chinese tourists represent one of Thailand's largest visitor groups. Thai merchants displaying a PromptPay QR code can automatically accept payments from Chinese visitors without installing any additional hardware.

Supported Banks

All Thai banks authorized by the Bank of Thailand are required to offer PromptPay. This includes every commercial bank, savings bank and specialized financial institution with significant retail operations.

Bangkok Bank
KBank
SCB
Krungthai
ttb
Krungsri
CIMB Thai
UOB Thailand
GSB
BAAC
LH Bank
KKP
30+ more…

Full interoperability is guaranteed by the ITMX network — a payment sent from any participating bank app arrives in any other participating bank account within seconds. There is no need for both parties to use the same bank or app.

PromptPay's Impact on Thailand

👥
55M+
Registered users
🔄
~1B
Transactions / month
🏦
30+
Participating banks
🌏
7
ASEAN connections
  • 💸Interbank fees eliminated: The Bank of Thailand mandated free PromptPay transfers for amounts up to ฿5,000 in 2018, then extended this to all amounts in 2019 — effectively ending domestic transfer fees across all Thai banks.
  • 📈Digital payment acceleration: Thailand jumped from primarily cash-based to one of the most digitally-transacting populations in Southeast Asia in just a few years, driven almost entirely by PromptPay adoption.
  • 🏛️Government stimulus via PromptPay: During the COVID-19 pandemic, the Thai government distributed welfare and relief payments to millions of citizens directly via their National ID-linked PromptPay accounts — faster and cheaper than any alternative.
  • 🛒Commerce transformation: From street food vendors and market stalls to major e-commerce platforms like Lazada and Shopee Thailand, PromptPay QR became the default checkout option — eliminating the need for card readers.
  • 🌏Regional leadership: Thailand's PromptPay is cited by the Bank for International Settlements as one of the model systems for ASEAN payment interoperability, and has directly inspired similar linkages across the region.

Ready to generate your PromptPay QR Code?

Free, instant, works with all Thai banking apps. No sign-up required.