Wat de EMV QR-specificatie omvat
De EMV QR-codespecificatie van EMVCo definieert hoe betaalgegevens in een gewone QR-code worden opgebouwd. Er zijn twee modi. In Merchant-Presented Mode (MPM) toont de handelaar een code en scant de klant die met een bank- of walletapp. In Consumer-Presented Mode (CPM) toont de app van de klant een code en scant de handelaar die aan de kassa.
De specificatie creëert geen betaalnetwerk. Het is een gedeeld gegevensformaat, zodat een nationaal systeem of een kaartnetwerk eigen rekeninggegevens kan toevoegen terwijl de rest van de inhoud gelijk blijft. Daarom lijken Pix in Brazilië, PromptPay in Thailand, SGQR in Singapore, DuitNow in Maleisië, QRIS in Indonesië, VietQR in Vietnam en Bharat QR in India structureel op elkaar.
Hoe de inhoud is opgebouwd
Een MPM-inhoud is een reeks gegevensobjecten, elk geschreven als een ID van twee cijfers, een lengte van twee cijfers en de waarde. 5303840 betekent bijvoorbeeld ID 53 (transactievaluta), lengte 03, waarde 840 (Amerikaanse dollars in numerieke ISO 4217-vorm). Objecten volgen elkaar zonder scheidingstekens op, en sommige ID’s zijn sjablonen die eigen geneste objecten in hetzelfde formaat bevatten.
De inhoud moet beginnen met ID 00 en eindigen met ID 63, een controlesom. De controlesom is een CRC-16/CCITT-FALSE-waarde die als vier hexadecimale tekens is geschreven en berekend over alles wat eraan voorafgaat, inclusief de tekens 6304. Een scanner die een andere controlesom berekent, verwerpt de code, wat de meeste typ- of kopieerfouten opvangt.
- 00: indicator van het inhoudsformaat, altijd 01
- 01: startpunt van de transactie, 11 voor statisch of 12 voor dynamisch
- 26–51: sjablonen voor rekeninggegevens van de handelaar
- 52: handelaarcategoriecode (MCC)
- 53: valuta (numeriek ISO 4217) en 54: bedrag
- 58: landcode, 59: naam van de handelaar, 60: plaats
- 62: aanvullende gegevens zoals een factuur- of referentienummer; 63: CRC
Statische en dynamische codes
Een statische EMV QR-code (startpunt 11) wordt één keer gedrukt en hergebruikt, en de klant typt het bedrag in. Een dynamische code (startpunt 12) wordt voor één transactie gegenereerd en bevat meestal het bedrag en een referentie, zodat de klant alleen bevestigt. Gedrukte stickers op de toonbank zijn doorgaans statisch, terwijl codes op een afrekenscherm of factuur doorgaans dynamisch zijn.