Die EMVCo-QR-Code-Spezifikation ist das TLV-kodierte Format, das den meisten nationalen mobilen Zahlungssystemen zugrunde liegt, PIX (Brasilien), PromptPay (Thailand), UPI (Indien), SGQR (Singapur), DuitNow (Malaysia), BPS PayNow (Singapur) und viele andere. Das EMVCo-Basisformat zu verstehen bedeutet, ein Dutzend regionaler Varianten auf einmal zu verstehen.
Händler-präsentierter vs. Verbraucher-präsentierter Modus
MPM (Händler-präsentierter Modus). Statischer oder dynamischer QR, der vom Händler angezeigt wird. Der Verbraucher scannt ihn mit seiner Banking-/Wallet-App und autorisiert die Zahlung. 99% der realen QR-Zahlungen verwenden MPM.
CPM (Verbraucher-präsentierter Modus). Die App des Verbrauchers generiert einen kurzlebigen QR (typischerweise 30–60 Sekunden); der Händler scannt ihn. Weniger verbreitet; wird verwendet, wo die Konnektivität des Verbrauchers unzuverlässig ist (ländliches Indien vor UPI-Ubiquität, einige ÖPNV-Systeme).
MPM-Struktur
Der MPM-Payload ist eine flache Sequenz von TLV-Datensätzen, die durch einen CRC abgeschlossen wird:
Tag
Name
Länge
Hinweise
00
Payload-Format-Indikator
2
Immer 01.
01
Initiierungspunkt-Methode
2
11 statisch / 12 dynamisch.
02–51
Händlerkontoinformationen
variabel
Schema-spezifisch. Jedes Schema reserviert sein eigenes Tag: PIX verwendet 26, UPI verwendet auch 26, SGQR verwendet 51.
52
Händlerkategoriecode (MCC)
4
ISO 18245 4-stelliger Code. Siehe Tabelle unten.
53
Transaktionswährung
3
ISO 4217 numerisch. 840=USD, 978=EUR, 356=INR, 986=BRL, 764=THB.
54
Transaktionsbetrag
variabel
Dezimalzahl als Zeichenkette. Weglassen für statische Betrags-beim-Scan-QRs.
58
Ländercode
2
ISO 3166 alpha-2.
59
Händlername
variabel
Max. 25 Zeichen laut Spec; viele Schemata lockern dies.
60
Händlerstadt
variabel
Max. 15 Zeichen.
62
Zusätzliches Datenfeld-Template
variabel
Rechnungsreferenz, Kundenbindung, Terminal-ID.
63
CRC
4
CRC16-CCITT über alles vor diesem Tag (einschließlich des Tags selbst, Länge 04, ohne den 4-stelligen Wert).
Regionale Schemata, die von EMVCo abgeleitet sind
Schema
Land
Händlerkonto-Tag
Hinweise
PIX
Brasilien
26
Sofortzahlungsschema der brasilianischen Zentralbank. Fügt CPF/CNPJ/E-Mail/Telefon-PIX-Schlüssel als Sub-TLVs unter Tag 26 hinzu.
PromptPay
Thailand
29 / 30
Verwendet 29 für nationale ID/Steuer-ID und 30 für Mobilnummer.
UPI
Indien
26
Gleiche EMVCo-Basis mit UPI-spezifischen Sub-TLVs (VPA, Empfängername).
SGQR
Singapur
51
Einheitlicher QR, der mehrere Zahlungsschienen (PayNow, NETS, UOB Pay) gleichzeitig kodiert.
Beginnt mit 000201010212 (POI-Methode 12 = dynamisch), enthält 540525.00.
Restaurantrechnung, INR 250, MCC 5812
merchant=Spice House city=MUMBAI country=IN currency=356 mcc=5812 amount=250
MCC-Feld: 52045812. Währung: 5303356.
Häufige Fallstricke
CRC falsch berechnet. Der CRC16-CCITT wird über den GESAMTEN Payload berechnet, einschließlich Tag 63 und Länge 04, alles bis auf den 4-stelligen CRC-Wert. Die meisten Fehler entstehen durch Berechnung nur über den Payload oder durch Einbeziehung des CRC-Werts selbst.
Längenfeld hat 2 Stellen. Selbst ein 1-Zeichen-Wert hat die Länge 01. Ein 100-Zeichen-Wert hätte die Länge ??, aber Moment, EMVCo begrenzt Werte auf 99 Zeichen, da die Länge 2-stellig ist. Längere Werte müssen auf mehrere Sub-TLVs aufgeteilt werden.
Währungscode ist numerisch, nicht alphabetisch. USD ist 840, nicht USD. EUR ist 978. BRL ist 986. ISO 4217 hat sowohl Alpha-3 als auch numerisch; EMVCo erfordert numerisch.
Ländercode ist alpha-2. US, IN, BR, TH. ISO 3166-1 alpha-2. Merkwürdigerweise entgegengesetzt zur Währungscode-Regel.
Statisch vs. dynamisch. Wenn Sie den Betrag (Tag 54) weglassen, verwenden Sie POI-Methode 11 (statisch). Statischer QR + Betragsfeld ist spec-konform, aber einige Apps lehnen ihn ab. Dynamischer QR ohne Betrag ist eine Spec-Verletzung.
Zeichenlimit Händlername. Laut Spec max. 25 Zeichen. Einige regionale Schemata lockern dies (PIX erlaubt 25, SGQR erlaubt 40). Passen Sie es pro Schema an, wenn Sie ein bestimmtes Land anvisieren.
MCC 0000. Die Spec erlaubt 0000 als unbekannt, aber viele Acquirer lehnen es bei der Abrechnung ab. Bevorzugen Sie immer einen echten MCC, wenn Sie einen haben.
Scanner-Kompatibilität
App / Gerät
Support
Hinweise
Banking-/Wallet-App
Nativ
Regionale Apps in jedem Land (Nubank / UPI-Apps / TrueMoney / GrabPay) verarbeiten den EMVCo-Payload nativ.
iOS-Kamera
Rohzeichenkette
Nicht als Zahlung erkannt. Benutzer muss seine Banking-App öffnen und von dort scannen.
Android-Kamera
Rohzeichenkette
Gleich, nicht verarbeitet.
Google Lens
Rohzeichenkette
Zeigt dekodierten Text an.
Industrielle Zahlungsterminals
Nativ
Moderne POS-Scanner enthalten EMVCo-Verarbeitung in der Firmware für die unterstützten regionalen Schemata.