Was die EMV-QR-Spezifikation abdeckt
Die EMV-QR-Code-Spezifikation von EMVCo legt fest, wie Zahlungsdaten in einem gewöhnlichen QR-Code angeordnet werden. Es gibt zwei Modi. Im Merchant-Presented Mode (MPM) zeigt der Händler einen Code, den der Kunde mit einer Banking- oder Wallet-App scannt. Im Consumer-Presented Mode (CPM) zeigt die App des Kunden einen Code, den der Händler an der Kasse scannt.
Die Spezifikation schafft kein Zahlungsnetz. Sie ist ein gemeinsames Datenformat, sodass ein nationales System oder ein Kartennetz eigene Kontodaten ergänzen kann, während der Rest der Nutzlast gleich bleibt. Deshalb sehen Pix in Brasilien, PromptPay in Thailand, SGQR in Singapur, DuitNow in Malaysia, QRIS in Indonesien, VietQR in Vietnam und Bharat QR in Indien alle im Aufbau ähnlich aus.
Wie die Nutzlast aufgebaut ist
Eine MPM-Nutzlast ist eine Zeichenkette aus Datenobjekten, jedes geschrieben als zweistellige ID, zweistellige Länge und Wert. Zum Beispiel bedeutet 5303840: ID 53 (Transaktionswährung), Länge 03, Wert 840 (US-Dollar in der numerischen Form nach ISO 4217). Die Objekte folgen ohne Trennzeichen aufeinander, und einige IDs sind Vorlagen, die eigene verschachtelte Objekte im selben Format enthalten.
Die Nutzlast muss mit ID 00 beginnen und mit ID 63 enden, einer Prüfsumme. Die Prüfsumme ist ein CRC-16/CCITT-FALSE-Wert, geschrieben als vier Hexadezimalzeichen, berechnet über alles davor einschließlich der Zeichen 6304. Berechnet ein Scanner eine andere Prüfsumme, verwirft er den Code, was die meisten Tipp- oder Kopierfehler abfängt.
- 00: Payload-Format-Indikator, immer 01
- 01: Auslöseart, 11 für statisch oder 12 für dynamisch
- 26–51: Vorlagen für Händlerkontoinformationen
- 52: Händlerkategoriecode (MCC)
- 53: Währung (numerisch nach ISO 4217) und 54: Betrag
- 58: Ländercode, 59: Händlername, 60: Ort
- 62: zusätzliche Daten wie Rechnungs- oder Referenznummer; 63: CRC
Statische und dynamische Codes
Ein statischer EMV-QR-Code (Auslöseart 11) wird einmal gedruckt und wiederverwendet, und der Kunde tippt den Betrag ein. Ein dynamischer Code (Auslöseart 12) wird für eine einzelne Transaktion erzeugt und trägt meist Betrag und Referenz, sodass der Kunde nur noch bestätigt. Gedruckte Aufkleber an der Theke sind typischerweise statisch, Codes auf einem Kassenbildschirm oder einer Rechnung typischerweise dynamisch.