Point of Initiation: Static 11 vs Dynamic 12
People say “static QR” to mean a printed sticker. EMVCo encodes that decision in Tag 01: 11 means static, 12 means dynamic. Mixing Tag 01 with the wrong Tag 54 behavior is one of the highest-frequency MPM defects.
Tag 01 is a two-character method, not a slogan
Value 11: the same payload is intended to be reused. Value 12: the payload is generated for one transaction. Other values are not for merchant-presented stickers. If Tag 01 is missing, many parsers assume nothing and some wallets reject the QR.
How this differs from the “Static vs Dynamic QR” explainer
The academy page Static vs Dynamic QR talks about operations: reuse, amount entry, backend minting. This page is only the on-the-wire flag. You can run a “dynamic business” and still print a static 11 QR if the cashier never embeds the amount. Conversely, a POS that regenerates the QR each time must use 12.
Tag 54 coupling
Static 11: omit Tag 54 so the customer types the amount, unless your scheme documents a fixed-price static QR (rare). Dynamic 12: include Tag 54 with the exact amount. Putting both 11 and Tag 54 causes apps to disagree — some lock the amount, some ignore it, some error.
Worked fragments
Static start: 000201010211… (00=01, 01=11). Dynamic start: 000201010212… then later 5405 followed by the amount characters. After any edit, recompute Tag 63.
Testing
Generate one 11 payload without amount and one 12 payload with amount in the EMV studio. Decode both and confirm Tag 01. Scan both with a wallet: 11 should prompt for amount; 12 should show the embedded amount.
Spec source
Point of Initiation Method is defined in EMVCo’s QR Code Specification for Payment Systems. This site is independent of EMVCo and only explains how our generator/decoder treat 11 and 12.
Why wallets care
A wallet uses Tag 01 to decide whether to show an amount keypad. If you lie with 11 but include 54, some wallets hide the keypad and some ignore 54. That is not interoperability; that is undefined behavior you caused.
Migrating a shop from sticker to POS
The day you turn on billed QR you must change Tag 01 to 12, start sending 54, and stop printing the old 11 plate. Leaving both codes on the counter is how guests pay the wrong one.
Test record
Keep two payloads in your QA notes labelled 11-no-amount and 12-with-amount. Re-scan after every generator release. See also static vs dynamic for the business choice.
Tag 01 is the method the wallet branches on
Value 11: reusable, customer typically types the amount. Value 12: one-time / billed, Tag 54 should lock the amount. Wallets use this bit to decide whether to show a keypad. If you lie — 11 with 54, or 12 without — some apps hide the keypad, some ignore 54, some refuse. That inconsistency is not “interop”; it is undefined behaviour you caused.
This is different from the Static vs Dynamic explainer, which is about shop operations (stickers versus POS tickets). This page is about the two-character field. You need both pages: bits without operations still print the wrong object; operations without bits still encode the wrong method.
Worked fragments you can paste into Decode
A static fragment starts …010211… and has no 54 later. A billed fragment starts …010212… and includes a Tag 54 such as 5406125.00 for 125.00 in the Tag 53 currency. After you generate a full string in the studio, confirm those substrings match the product you meant. If you see 010211 and 54 in the same payload, fail the release.
Optional Tag 62 bill number does not turn a static code into a billed one. Only Tag 01=12 plus amount does. Bill number is recon metadata. Mixing those jobs is how cashiers think “we are dynamic” while customers still type totals.
Migrating a shop without a week of double-pay
Ship the POS change, switch Tag 01 to 12, emit 54, and physically retire the 11 sticker the same day. Leaving both on the counter is how guests pay the old plate. Train staff that a screen showing a QR is not automatically billed — they should glance at whether the amount is locked in the customer’s app.
Keep two payloads in QA notes labelled 11-no-amount and 12-with-amount. Re-scan after every generator release. Spec source: EMVCo QR documents on emvco.com. We implement the bits; we are not affiliated.
Training cashiers in one sentence
If the customer must type the amount, the code must be static 11 without 54. If the amount is on the receipt and must not change, the code must be billed 12 with 54. Anything else is a training failure waiting for a dispute. Post that sentence next to the till, not a paragraph about EMVCo.
Spec quotes belong on emvco.com
We do not paste normative POI text here. We describe behaviour wallets exhibit: 11 → keypad, 12 → locked Tag 54. When your legal team wants the exact wording, download QRCPS. When your QA team wants a test, use the studio and Decode on this site with labelled 11-no-amount and 12-with-amount fixtures.
Audit POI in production
Sample live stickers monthly: decode three random codes from the field. If any show 11+54 or 12 without 54, stop rollout and retrain stores. POI drift happens when marketing reprints without engineering review.
One-line QA gate
CI should fail if Tag 01 is not 11 or 12, or if (01==11 and Tag54 present) or (01==12 and Tag54 absent). That single rule prevents more production incidents than any CRC tweak.
