Ein EPC-QR-Code enthält keinen Link. Er enthält eine SEPA-Überweisung, ausgeschrieben als kurzer Block reinen Textes, und eine Banking-App, die das Format erkennt, liest ihn und füllt das Überweisungsformular aus. Kein Server wird kontaktiert, nichts wird nachgeschlagen, und nichts vom Scan erreicht Sie.
Diese eine Tatsache entscheidet alles Übrige darüber, wie diese Codes genutzt werden. Sie können keinen kürzen, keinen umleiten, und Sie können die Scans nicht zählen, weil im gesamten Ablauf keine Anfrage vorkommt. Der Standard dahinter ist das EPC069-12 des European Payments Council, die Codes werden im deutschsprachigen Raum meist GiroCode genannt, und das Format lohnt sich, genau zu verstehen, bevor Sie Tausende davon auf Rechnungen drucken. Für den allgemeinen Fall, was ein Code tragen kann, behandelt was ein QR-Code ist die Payload-Frage.
Was die Payload tatsächlich enthält
Die Payload ist eine Zeilenfolge in fester Reihenfolge, jede ein eigenes Element. Ein Parser liest Zeile 1, erwartet BCD, liest Zeile 4, erwartet SCT, und gibt auf, wenn eines von beiden fehlt.
| Zeile | Inhalt | Limit |
|---|---|---|
| Service-Tag | BCD | fest, 3 Zeichen |
| Version | 001 oder 002 | 002 macht die BIC optional |
| Zeichensatz | 1 für UTF-8, bis 8 | eine Ziffer |
| Kennung | SCT | fest, 3 Zeichen |
| BIC | Kennung der Empfängerbank | 11 Zeichen, oft weggelassen |
| Empfängername | der Kontoinhaber | 70 Zeichen |
| IBAN | Empfängerkonto | 34 Zeichen |
| Betrag | EUR gefolgt vom Wert | 0,01 bis 999999999,99, in EUR |
| Verwendungszweck-Code | ISO-Zweck, selten genutzt | 4 Zeichen |
| Strukturierte Referenz | Gläubiger-Referenz, oder | 35 Zeichen |
| Unstrukturierter Text | stattdessen Freitext-Verwendungszweck | 140 Zeichen |
| Empfänger an Auftraggeber | dem Zahlenden angezeigter Hinweis | 70 Zeichen |
Zwei Regeln bringen Leute zu Fall. Die strukturierte Referenz und der unstrukturierte Text schließen sich gegenseitig aus: Füllen Sie eine, lassen Sie die andere leer. Und der Betrag ist optional, was die richtige Wahl für einen Spendencode ist, bei dem der Zahlende entscheidet, und die falsche Wahl für eine Rechnung, bei der Sie eine exakte Summe vorausgefüllt haben wollen.
Der gesamte Block ist auf 331 Bytes begrenzt. Die EPC069-12-Richtlinien legen außerdem die Fehlerkorrekturstufe auf M und die Symbolgröße auf Version 13 fest, sodass der gedruckte Code eine bekannte Obergrenze bei der Modulanzahl hat. Bauen Sie das eher im Code als per Klick-Generator, zeigt die Segno-Bibliotheksdokumentation die Feldreihenfolge und die Encoding-Regeln in einer Form, gegen die Sie testen können.
Warum Sie ihn nicht kürzen oder tracken können
Ein getrackter QR-Code funktioniert, indem er eine URL kodiert, die Ihnen gehört. Der Scan öffnet diese URL, Ihre Weiterleitung antwortet, Sie zählen die Anfrage, und der Besucher landet dort, wohin der Link gerade zeigt. Dynamische versus statische QR-Codes behandelt den Mechanismus vollständig.
Nichts davon trifft hier zu. Die Banking-App ist kein Browser. Sie parst Text, gleicht ihn mit dem Format ab und öffnet lokal auf dem Gerät ein Zahlungsformular. Es gibt keine HTTP-Anfrage abzufangen, also:
- Es gibt nirgendwo eine Scan-Zahl. Nicht in Ihrem Tool, nicht bei der Bank.
- Nichts lässt sich umleiten. Eine falsche IBAN bedeutet einen Neudruck.
- Die Payload in einen Kurzlink zu verpacken zerstört sie sofort, weil der Parser
httpssieht, wo erBCDerwartet.
Ich habe erlebt, wie ein Team eine Woche damit verbracht hat, Attribution auf einen Zahlungscode zu bekommen, bevor jemand die Spezifikation gelesen hat. Die ehrliche Antwort ist, dass die Zahlungsseite und die Messseite zwei verschiedene Codes sind, und wenn das Layout Platz für nur einen hat, gewinnt der Zahlungscode.
Was Sie messen können, ist alles drumherum. Trägt eine Sendung eine Rechnung mit Zahlungscode, setzen Sie einen separaten, getrackten Kurzlink auf den Brief - zum Kundenportal, zu den AGB oder zur Support-Seite - und lesen Sie das Engagement dort ab. Elidos QR-Code-Funktionen decken die trackbare Hälfte des Blatts ab, und der Zahlungscode bleibt exakt so, wie es der Standard verlangt.
Wo er funktioniert und wo nicht
Die Unterstützung liegt in den einzelnen Banking-Apps, weshalb die Abdeckung uneinheitlicher ist, als Länderlisten es versprechen. Österreichische und deutsche Apps lesen diese Codes seit Jahren, finnische und niederländische Apps sind weitgehend zuverlässig, belgische Unterstützung ist gut. Darüber hinaus: testen, bevor Sie sich auf einen Druckauftrag festlegen.
Zwei Nachbarn werden häufig damit verwechselt. Die Swiss QR-Rechnung ist eine andere Spezifikation mit eigenem Layout und einem Schweizer Kreuz in der Mitte des Symbols; sie ist kein EPC-Code, und Apps im Euroraum lesen sie nicht als Zahlung. Und ein Zahlungslink eines Kartenprozessors ist etwas ganz anderes: Das ist eine gewöhnliche URL in einem QR-Code, mit einem gehosteten Checkout am Ende, und er verhält sich wie jeder andere Weblink, samt dem Tracking, das dazugehört.
Für die weitergehende Frage, was ein reguliertes Zahlungs- oder Kreditunternehmen Kunden vorlegen darf, behandelt URL-Shortener für Fintechs die Teile, bei denen ein Link im Spiel ist.
Einen erstellen, ohne es zu bereuen
Sechs Prüfungen, in der Reihenfolge, in der sie Ihnen Geld sparen.
- Die IBAN vor der Generierung validieren, nicht nach dem Druck. Eine Prüfsummen-Prüfung kostet nichts, ein Neudruck kostet eine Auflage.
- Die Betragsfrage bewusst entscheiden. Fest für Rechnungen, leer für Spendenplakate, bei denen jede Summe möglich sein soll.
- Die strukturierte Referenz dem Freitext vorziehen. Sie ist kürzer, sie gleicht sich automatisch in Ihrer Buchhaltung ab, und sie hält die Payload klein.
- In mindestens drei Banking-Apps testen, auf beiden Telefon-Plattformen. Parser unterscheiden sich darin, wie streng sie die optionalen Felder behandeln.
- Den gedruckten Code für die Entfernung dimensionieren, aus der er gescannt wird, genau wie bei jedem anderen Code. Wie groß sollte ein QR-Code sein hat die Rechnung dazu.
- Matt lassen. Glanzlack über einem Zahlungscode auf einer Rechnung unter Bürobeleuchtung ist ein Support-Ticket, das nur auf seinen Auftritt wartet.
Das Aufkleber-Problem
Es gibt einen echten Betrugsvektor, und er ist physisch statt digital. Ein statischer Zahlungscode, gedruckt auf einer Rechnung, einer Parkuhr, einem Marktstand-Schild oder einem Spendenplakat, lässt sich mit einem Aufkleber überkleben, der eine andere IBAN trägt. Nichts im Code wehrt sich dagegen, weil die Payload das Papier ist.
Die Gegenmaßnahmen sind ebenso physisch. Den Code innerhalb des Rechnungslayouts drucken, wo ein Etikett auffallen würde, statt auf einem Klebeaufkleber. Empfängername und die letzten Ziffern der IBAN als Text neben dem Code zeigen, damit ein Zahlender vergleichen kann. Und in den Zahlungsbestätigungs-Hinweisen die Leute anweisen, den Namen zu lesen, den ihre Banking-App anzeigt, bevor sie bestätigen, denn dieser Bildschirm ist der einzige Ort, an dem der Tausch sichtbar wird. Sind QR-Codes sicher, und was Quishing wirklich ist behandelt das breitere Angriffsmuster, von dem das meiste auch für die Link-Codes gilt, die Sie anderswo auf derselben Seite drucken.
Das Beruhigende daran: Eine Zahlung braucht immer noch einen Menschen, der sie in einer authentifizierten Banking-App bestätigt. Der Code füllt ein Formular vor, er bewegt nie Geld.
Die Cornerstone-Serie lesen
Dieser Beitrag gehört zum Features-Cluster. Für den gedruckten Workflow rund um jeden Code, den Sie generieren, ist eine QR-Code-Kampagne von Grund auf die Cornerstone, und der QR-Code-Guide in den Docs behandelt das Generieren der trackbaren Art über die API.
Verwandte Beiträge im Blog
Häufig gestellte Fragen
Was ist ein EPC-QR-Code?
Ein QR-Code, der die Details einer SEPA-Überweisung als reinen Text kodiert, damit eine Banking-App ihn lesen und das Überweisungsformular vorausfüllen kann. Er wurde vom European Payments Council in den EPC069-12-Richtlinien standardisiert und ist auch als GiroCode bekannt. Die Payload ist eine feste Zeilenfolge, die mit dem Service-Tag BCD beginnt, und sie enthält überhaupt keine Webadresse.
Welche Länder unterstützen GiroCode-Zahlungen?
Die Unterstützung liegt bei der Banking-App, nicht beim Land, aber in der Praxis werden die Codes breit gelesen in Österreich, Deutschland, Finnland, den Niederlanden und Belgien. Anderswo im Euroraum ist die Abdeckung lückenhaft, und außerhalb davon ist der Code bedeutungslos. Die Schweiz nutzt einen eigenen Standard, die QR-Rechnung, die ähnlich aussieht, aber nicht kompatibel ist.
Kann ein EPC-QR-Code dynamisch oder trackbar sein?
Nein. Die Zahlungsdetails stecken im gedruckten Muster, und das Telefon decodiert sie offline, ohne einen Server zu kontaktieren, also gibt es nichts umzuleiten und nichts zu zählen. Müssen Sie den Betrag oder die Referenz ändern, generieren Sie einen neuen Code. Alles, was Ihnen als dynamischer Zahlungs-QR-Code verkauft wird, ist ein Link zu einer Zahlungsseite - ein anderes Produkt.
Was passiert, wenn ich einen Kurzlink in einen EPC-QR-Code packe?
Die Banking-App kann ihn nicht parsen und zeigt entweder einen Fehler oder behandelt den Code ersatzweise als gewöhnliche URL. Der Parser erwartet in der ersten Zeile BCD und in der vierten SCT; eine URL erfüllt keines von beidem. Zahlungs-QR-Codes und Link-QR-Codes sind zwei getrennte Codes, die zufällig dieselbe Symbolform teilen.
Wie groß kann die Payload sein?
331 Bytes, was den QR-Code unter den EPC-Richtlinien auf Version 13 mit Fehlerkorrekturstufe M begrenzt. In der Praxis ist es der Verwendungszweck-Text, der sie füllt, sodass eine lange Freitext-Referenz das Feld ist, das einen Code über das Limit treibt. Halten Sie die Referenz strukturiert und kurz, dann bleibt der Code sparsam genug, um von einer gedruckten Rechnung gescannt zu werden.
Sind Zahlungs-QR-Codes auf gedruckten Rechnungen sicher?
Der Code selbst trägt keinen ausführbaren Inhalt, und der Zahlende bestätigt die Überweisung in seiner Banking-App, die Empfängername und IBAN anzeigt, bevor etwas bewegt wird. Das eigentliche Risiko ist physisch: ein Aufkleber über dem gedruckten Code, der die Zahlung auf ein anderes Konto umleitet. Drucken Sie den Code innerhalb des Rechnungslayouts statt auf ein Etikett, und weisen Sie Zahlende an, den Namen auf dem Bestätigungsbildschirm zu prüfen.
Elido testen
URL einfügen, kurzer Link in Sekunden
Kein Konto nötig. Link bleibt 30 Tage aktiv. Konto erstellen, um ihn dauerhaft zu behalten.
Kostenlos, keine Anmeldung erforderlich · 2 pro Tag