EMVCo QR Code Parser & Builder
Parse and build EMVCo Merchant-Presented Mode (MPM) QR payloads. Decodes every ID-length-value object and template, checks the CRC-16/CCITT-FALSE checksum and the core MPM v1.1 field rules, names the scheme from the template GUID (PromptPay, PIX, PayNow, DuitNow, QRIS, VietQR, Bharat QR…), and builds payloads from form inputs.
Follows EMVCo QR Code Specification for Payment Systems — Merchant-Presented Mode · BCB Pix ManualMPM v1.1 (Nov 2020); MPM only, CPM not covered·verified Oct 2026· double-checked Oct 2026— reproduces the specification example (CRC A13A over UTF-8) and 51 PIX, PromptPay, SGQR, QRIS and VietQR payloads; builders match promptpay-qr / @thai-qr-payment/payload and qrcode-pix; 44,000 fuzzed inputs
About EMVCo MPM
EMVCo Merchant-Presented Mode (MPM) is the QR payload behind national schemes such as PromptPay, PIX (BR Code), SGQR / PayNow, DuitNow, QRIS, VietQR and Bharat QR (UPI’s own QR is usually a upi:// link instead). Each data object is a 2-digit ID, a 2-digit length (characters, 01–99) and the value. Templates — 26–51 merchant account information, 62 additional data, 64 alternate language, 80–99 unreserved — hold sub-objects in the same format, each 26–51 template starting with a 00 GUID that names the scheme; IDs 02–25 are plain values reserved for card networks (02–03 Visa, 04–05 Mastercard, 09–10 Discover, 11–12 Amex, 13–14 JCB, 15–16 UnionPay). 00 (value 01) comes first and 63 last: four hex characters of CRC-16/CCITT-FALSE (polynomial 0x1021, initial value 0xFFFF) over the UTF-8 bytes of the whole payload up to and including 6304. A payload should not exceed 512 characters. Table 3.6 makes 52 (MCC), 59 (name) and 60 (city) mandatory, though some national schemes such as PromptPay leave them out.