SEA Payment QR Decoder — QRIS, PromptPay, PayNow, DuitNow, VietQR
Decode QRIS, PromptPay, PayNow, SGQR, DuitNow, and VietQR merchant QR payloads — auto-detect the rail, resolve every EMVCo field, and validate or fix the CRC, 100% in your browser.
000201…), or load an example.Paste a payload above, or try a rail example.
About SEA Payment QR Decoder — QRIS, PromptPay, PayNow, DuitNow, VietQR
Southeast Asia's payment rails — QRIS (Indonesia), PromptPay (Thailand), PayNow and SGQR (Singapore), DuitNow (Malaysia), and VietQR (Vietnam) — all encode their merchant QR codes with the same EMVCo Merchant-Presented Mode format: a string of tag-length-value (TLV) data objects. This tool parses that string into a labelled tree, so you can see exactly what a QR contains: payload format, static vs dynamic, merchant name and city, transaction amount, currency and country, plus the rail-specific merchant account fields hidden inside templates 26–51.
It auto-detects the rail by reading the Globally Unique Identifier (GUID) or Application Identifier (AID) in sub-tag 00 of each merchant account template — for example ID.CO.QRIS.WWW for QRIS, A000000677010111 for PromptPay, SG.PAYNOW for PayNow, A0000006150001 for DuitNow, and A000000727 (NAPAS) for VietQR — then applies the correct field labels for that rail, including VietQR's nested beneficiary-organization block. Currency numbers are resolved to ISO 4217 codes and country to ISO 3166.
The CRC (tag 63) is a CRC-16/CCITT-FALSE checksum over the whole payload. This tool recomputes it to tell you whether a QR is intact, and can repair a broken or truncated CRC. You can also change the transaction amount — it re-serializes the TLV, flips the static/dynamic flag, and appends a fresh CRC, giving you a valid payload string back. Everything runs locally in your browser; no payment data is ever sent to a server.
How to use SEA Payment QR Decoder — QRIS, PromptPay, PayNow, DuitNow, VietQR
Paste the QR payload
Copy the raw text encoded in a merchant payment QR (starts with 000201...) and paste it in, or load one of the rail examples.
Read the decoded fields
The rail is detected automatically and every TLV tag is expanded with a human-readable label — merchant, amount, currency, country, and rail-specific account fields.
Check the CRC
The tag-63 checksum is recomputed and compared. A valid badge means the QR is intact; an invalid one flags corruption or truncation.
Fix or edit
Repair a broken CRC, or change the transaction amount to get a fresh, valid payload string you can copy.
Frequently asked questions
Related miscellaneous tools
QR Code Generator
Generate QR codes with customizable error correction levels, styles, and colors. Supports single and bulk generation with PNG and PDF export options.
Barcode Generator
Generate barcodes in multiple formats (CODE128, CODE39, EAN13, EAN8, UPC, ITF, MSI, Pharmacode). Create single or multiple barcodes with customizable options and export to PNG or PDF.