How to Generate a Merchant EMV QR
This walkthrough uses the same Merchant-Presented Mode (MPM) rules published by EMVCo: a TLV string, a numeric currency, a point-of-initiation method, and a CRC-16 over the payload. EMV QR Hub is an independent toolkit — not an EMVCo product — and generation happens in your browser.
What you are actually generating
An EMVCo MPM QR is not a picture of a logo. The QR encodes one ASCII payload. Wallets parse that string left to right as Tag-Length-Value blocks. If a tag is missing, a length is wrong, or the CRC does not match, many apps refuse the payment before the customer ever sees an amount screen.
Public MPM conventions (see emvco.com for the current QR specification set) require at least: Payload Format Indicator (Tag 00, value 01), Point of Initiation Method (Tag 01), one Merchant Account Information template (IDs 26–51), Merchant Category Code (52), Transaction Currency (53), Country Code (58), Merchant Name (59), Merchant City (60), and CRC (63).
Static versus dynamic before you type an amount
Tag 01 value 11 means a reusable (static) QR. Tag 01 value 12 means a one-time (dynamic) QR. Put 11 when the sticker on the counter should work for many customers who type the amount in their app. Put 12 when your backend mints a fresh payload for one invoice and Tag 54 already holds the amount.
A common production bug is shipping Tag 54 on a static 11 payload, or omitting Tag 54 on a dynamic 12 payload. Wallets disagree on how to recover. Decide the POI first, then decide whether Tag 54 exists.
Currency is numeric ISO 4217
Tag 53 must be the three-digit numeric code: 356 for INR, 764 for THB, 702 for SGD, 840 for USD. Alphabetic codes such as INR or USD are a frequent generator bug. The decoder on this site flags non-numeric Tag 53 because many wallets will not charge the payment.
Worked static example
Example static payload (illustrative, not a live merchant): 00020101021126360014A000000677010111011300660000000005204581253033565802IN5910EMVQRHUB6007DELHI6304A13F
Read it as: 00/02/01 (format 01), 01/02/11 (static), 26/… (account template), 52/04/5812 (MCC), 53/03/356 (INR), 58/02/IN, 59/10/EMVQRHUB, 60/07/DELHI, 63/04/… (CRC). There is no Tag 54, which is correct for a static sticker.
Worked dynamic example
A dynamic cousin adds Tag 01 value 12 and Tag 54 for the amount, for example 54/05/125.00 meaning 125.00 in the Tag 53 currency. Optional Tag 62 can carry an invoice reference so operations can reconcile the scan with an order number.
Generate the CRC last. Tag 63 is always four hex characters computed over the payload including the 6304 prefix and excluding the checksum value itself. If you edit any earlier field, recompute CRC — do not copy a checksum from another sample.
Verify before you print or display
Paste the string into the QR Decoder on this site. Confirm CRC valid, POI matches your intent, Tag 53 is numeric, and name/city are not truncated in a way you did not expect.
Then scan with at least one consumer app that your customers actually use. CRC-valid is necessary, not sufficient: the MAI GUID still has to belong to a network that app can pay.
What this tool will not do for you
EMV QR Hub does not acquire merchants, does not talk to a switch, and does not replace your acquirer’s onboarding. It builds and checks the payload grammar. For the official specification text, use EMVCo’s QR documentation on emvco.com.
Print and scan distance
After you generate, print at the size you will deploy and scan from a typical customer distance. A correct payload in a 2 cm print with a heavy logo still fails in the aisle.
Version control the payload
Store the exact string you printed. When you change city spelling, you must reprint. Decoding a photo of an old sticker against a new generator output is how teams argue for days.
Print size, distance, and versioning the string you actually deployed
After you generate, print at the size you will deploy and scan from a typical customer distance. A correct payload in a 2 cm print with a heavy logo still fails in the aisle. Store the exact ASCII string you printed. When you change city spelling, MCC, or MAI, reprint and destroy the old object. Decoding a photo of last year’s sticker against a new generator output is how teams argue for days.
Fill Tag 59/60/58/52 from the merchant file, not from a demo. Tag 53 from the numeric list. Decide Tag 01 before Tag 54. Nested MAI GUID from the acquirer. Then CRC last. Verify in Decode, then in two consumer apps. This tool will not acquire you or talk to a switch.
What “done” means for a sticker versus a POS
Sticker done: static 11, no 54, payload stored, print tested, staff photo in the ops folder. POS done: 12 with 54, bill number if recon needs it, old sticker retired the same day, 1-unit test after each software push. If both objects are live, you are not done. If cookbook names remain, you are not done.
For the official field list, download EMVCo’s QR specification set from emvco.com. EMV QR Hub is independent, operated by Pankaj Kalra. This walkthrough is the longest how-to in the academy because generation is where most CRC and POI defects are born — decode only reports them.
