Ein EPC-QR-Code enthält keinen Link. Er ist eine SEPA-Überweisung, als kurzer Block Klartext aufgeschrieben, und eine Banking-App, die das Format erkennt, liest ihn und füllt das Überweisungsformular aus. Es wird kein Server kontaktiert, nichts nachgeschlagen, und nichts vom Scan erreicht Sie.
Diese eine Tatsache entscheidet alles Weitere darüber, wie diese Codes verwendet werden. Sie können einen nicht kürzen, nicht umleiten und die Scans nicht zählen, weil im gesamten Ablauf keine Anfrage stattfindet. Der Standard dahinter ist EPC069-12 des European Payments Council, im deutschsprachigen Raum heißen die Codes meist GiroCodes, und das Format sollte man genau verstehen, bevor man Tausende davon auf Rechnungen druckt. Zur allgemeinen Frage, was ein Code transportieren kann, behandelt was ein QR-Code ist das Thema Nutzlast.
Was die Nutzlast tatsächlich enthält
Die Nutzlast ist eine Folge von Zeilen in fester Reihenfolge, jede ein eigenes Element. Ein Parser liest Zeile 1, erwartet BCD, liest Zeile 4, erwartet SCT, und gibt auf, wenn eines fehlt.
| Zeile | Inhalt | Grenze |
|---|---|---|
| Service-Tag | BCD | fest, 3 Zeichen |
| Version | 001 oder 002 | 002 macht den BIC optional |
| Zeichensatz | 1 für UTF-8, bis 8 | eine Ziffer |
| Kennung | SCT | fest, 3 Zeichen |
| BIC | Bankkennung des Empfängers | 11 Zeichen, oft weggelassen |
| Name des Empfängers | der Kontoinhaber | 70 Zeichen |
| IBAN | Konto des Empfängers | 34 Zeichen |
| Betrag | EUR gefolgt vom Wert | 0.01 bis 999999999.99, in EUR |
| Zweckcode | ISO-Zweck, selten genutzt | 4 Zeichen |
| Strukturierte Referenz | Gläubigerreferenz, oder | 35 Zeichen |
| Unstrukturierter Text | stattdessen Freitext | 140 Zeichen |
| Empfänger an Auftraggeber | Hinweis für den Zahler | 70 Zeichen |
Zwei Regeln bringen Leute ins Stolpern. Die strukturierte Referenz und der unstrukturierte Text schließen sich gegenseitig aus: Füllen Sie eines aus und lassen Sie das andere leer. Und der Betrag ist optional, was die richtige Wahl für einen Spendencode ist, bei dem der Zahler entscheidet, und die falsche für eine Rechnung, bei der Sie einen exakten Betrag vorausgefüllt haben wollen.
Der gesamte Block ist auf 331 Bytes begrenzt, und die Elemente werden durch einen Zeilenumbruch (LF) oder CRLF getrennt, ohne Trennzeichen nach dem letzten. Die 331 Bytes zählen UTF-8-Bytes, Namen mit Akzenten brauchen also mehr als ihre Zeichenzahl. Name, IBAN, BIC und die strukturierte Referenz gelten als fest, das heißt, die App des Zahlers sollte sie nicht editierbar machen. Die EPC069-12-Richtlinien, Version 3.1 vom 19. März 2024 (abgerufen am 2026-10-25; die Feldtabelle oben ist dagegen geprüft) legen außerdem die Fehlerkorrekturstufe auf M fest und begrenzen das Symbol auf Version 13 (69 Module pro Seite). Die Beispiel-Nutzlast des Dokuments selbst umfasst 96 Bytes und ergibt einen Code der Version 6 mit 41 Modulen. Wenn Sie das im Code bauen, zeigt die Segno-Bibliotheksdokumentation (abgerufen am 2026-10-25) die Feldreihenfolge, und ihr Helfer setzt die Fehlerstufe auf M und die Version auf 13 oder niedriger, passend zur Spezifikation.
Warum sich der Code nicht kürzen oder tracken lässt
Ein getrackter QR-Code funktioniert, indem er eine URL kodiert, die Ihnen gehört. Der Scan öffnet diese URL, Ihr Redirect antwortet, Sie zählen die Anfrage, und der Besucher landet dort, wohin Sie den Link gerade zeigen lassen. Dynamische vs. statische QR-Codes erklärt den Mechanismus ausführlich.
Nichts davon gilt hier, und es gibt keinen Umweg. Die Banking-App ist kein Browser. Sie parst Text, erkennt das Format und öffnet lokal auf dem Gerät ein Zahlungsformular. Es gibt keine HTTP-Anfrage, die sich abfangen ließe, daher:
- Eine Scan-Zählung existiert nirgends. Weder in Ihrem Tool noch bei der Bank.
- Nichts lässt sich umleiten. Eine falsche IBAN bedeutet Neudruck.
- Verpacken Sie die Nutzlast in einen Kurzlink, bricht sie, weil der Parser
httpssieht, wo erBCDerwartet.
Die Zahlungsseite und die Messseite sind zwei verschiedene Codes. Bietet das Layout nur für einen Platz, gewinnt der Zahlungscode. Ich würde den Zahlungscode immer an erste Stelle setzen und den getrackten Link an zweite.
Messen können Sie alles drumherum. Liegt einem Mailing eine Rechnung mit Zahlungscode bei, setzen Sie einen separaten getrackten Kurzlink auf den Brief, für das Kundenportal, die Bedingungen oder die Support-Seite, und lesen Sie das Engagement daran ab. Elidos QR-Code-Funktionen decken die trackbare Hälfte des Blatts ab, und der Zahlungscode bleibt genau so, wie der Standard es verlangt.
Wo er funktioniert und wo nicht
Die Unterstützung liegt in einzelnen Banking-Apps, weshalb Länderlisten sie überverkaufen. Das EPC-Dokument ist ausdrücklich informativ, und die Umsetzung ist für Banken optional. Testen Sie, bevor Sie sich auf eine Druckauflage festlegen.
Zwei Nachbarn werden damit verwechselt. Die Schweizer QR-Rechnung ist eine andere Spezifikation mit einem Schweizer Kreuz in der Mitte, und Apps im Euroraum lesen sie nicht als Zahlung. Der Zahlungslink eines Kartenabwicklers ist nur eine URL in einem QR-Code mit gehostetem Checkout am Ende und lässt sich wie jeder Weblink tracken.
Zur weiteren Frage, was ein regulierter Zahlungs- oder Kreditanbieter Kunden vorlegen darf, behandelt URL-Shortener für Fintech die Teile, in denen ein Link ins Spiel kommt.
Kann man einen mit Elido erstellen?
Nicht als eigene Funktion. Am 2026-10-25 im Code geprüft: Das kostenlose QR-Generator-Tool hat sechs Inhaltstypen (URL, Text, WLAN, vCard, E-Mail, SMS), und keiner ist ein EPC- oder Zahlungstyp. Der QR-Designer im Dashboard nimmt ein einzeiliges Inhaltsfeld an und kann eine mehrzeilige Nutzlast daher gar nicht aufnehmen.
Der Umweg ist der Texttyp des kostenlosen Tools, der ein mehrzeiliges Feld hat und Ihren Text unverändert durchreicht. Fügen Sie die zwölf Zeilen ein, lassen Sie die Fehlerkorrektur auf M (Standard des Tools) und laden Sie das PNG oder SVG herunter. Zwei Warnungen. Es gibt keine Validierung, eine falsche IBAN oder ein zusätzlicher abschließender Zeilenumbruch erzeugt also einen Code, der gut aussieht und in der Banking-App scheitert. Und es ist ein statischer Code ohne Tracking, genau wie ein Zahlungscode sein sollte. Ein echter EPC-Typ mit IBAN-Prüfung steht in unserem Backlog.
Einen erzeugen, ohne es zu bereuen
Sechs Prüfungen, in der Reihenfolge, in der sie Ihnen Geld sparen.
- Validieren Sie die IBAN vor der Erzeugung, nicht nach dem Druck. Eine Prüfsummenkontrolle kostet nichts, ein Neudruck kostet eine Auflage.
- Entscheiden Sie die Betragsfrage bewusst. Fest bei Rechnungen, leer bei Spendenplakaten, auf denen jeder Betrag möglich sein soll.
- Bevorzugen Sie die strukturierte Referenz gegenüber Freitext. Sie ist kürzer, wird in Ihrer Buchhaltung automatisch abgeglichen und hält die Nutzlast klein.
- Testen Sie in mindestens drei Banking-Apps auf beiden Handy-Plattformen. Parser unterscheiden sich darin, wie streng sie die optionalen Felder behandeln.
- Dimensionieren Sie den gedruckten Code für die Scanentfernung, genau wie bei jedem anderen Code. Wie groß ein QR-Code sein sollte enthält die Rechnung.
- Halten Sie ihn matt. Glanzlack unter Bürobeleuchtung verursacht Blendung und fehlgeschlagene Scans.
Das Aufkleber-Problem
Es gibt einen echten Betrugsvektor, und er ist physisch statt digital. Ein statischer Zahlungscode auf einer Rechnung, einem Parkautomaten, einem Marktstandschild oder einem Spendenplakat kann mit einem Aufkleber überklebt werden, der eine andere IBAN trägt. Nichts im Code kann sich dagegen wehren, denn die Nutzlast ist das Papier, und es prüft nichts.
Die Gegenmaßnahmen sind ebenso physisch. Drucken Sie den Code innerhalb des Rechnungslayouts, wo ein Etikett auffallen würde, statt auf einem Klebepatch. Zeigen Sie neben dem Code den Empfängernamen und die letzten Stellen der IBAN als Text, damit ein Zahler vergleichen kann. Und weisen Sie in den Hinweisen zur Zahlungsbestätigung darauf hin, den Namen zu lesen, den die Banking-App anzeigt, bevor man bestätigt, denn auf diesem Bildschirm wird der Austausch als Einziges sichtbar. Sind QR-Codes sicher, und was Quishing wirklich ist behandelt das breitere Angriffsmuster, von dem das meiste auf die Link-Codes zutrifft, die Sie anderswo auf derselben Seite drucken.
Das Beruhigende: Eine Zahlung braucht weiterhin einen Menschen, der sie in einer authentifizierten Banking-App bestätigt. Der Code füllt ein Formular vor, er bewegt nie Geld. Wie eine Bank die übrigen Codes regeln sollte, die sie um einen Zahlungscode herum druckt, steht in QR-Codes für Banking.
Zum gedruckten Ablauf rund um jeden Code siehe eine QR-Code-Kampagne von Grund auf. Die QR-Code-Anleitung in der Dokumentation behandelt die trackbare Art.
Weiterlesen im Blog
Häufig gestellte Fragen
Was ist ein EPC-QR-Code?
Ein QR-Code, der die Angaben einer SEPA-Überweisung als Klartext kodiert, sodass eine Banking-App ihn lesen und das Überweisungsformular vorausfüllen kann. Er wurde vom European Payments Council in den Richtlinien EPC069-12 standardisiert und ist auch als GiroCode bekannt. Die Nutzlast ist eine feste Folge von Zeilen, die mit dem Service-Tag BCD beginnt, und enthält überhaupt keine Webadresse.
Welche Länder unterstützen GiroCode-Zahlungen?
Die Unterstützung liegt in der Banking-App, nicht im Land. Laut EPC ist das Verfahren für Banken optional, und Wikipedia nennt Österreich, Belgien, Finnland, Deutschland, die Niederlande, Luxemburg, Estland, Lettland, Litauen und Italien als Länder, in denen die Codes häufig verwendet werden (abgerufen am 2026-10-25). Wir haben einzelne Apps nicht getestet, testen Sie also Ihre. Außerhalb des Euroraums ist der Code bedeutungslos. Die Schweiz nutzt ihren eigenen QR-Rechnungsstandard, der ähnlich aussieht und nicht kompatibel ist.
Kann ein EPC-QR-Code dynamisch oder trackbar sein?
Nein. Die Zahlungsdaten stecken im gedruckten Muster, und das Handy dekodiert sie offline, ohne einen Server zu kontaktieren, es gibt also nichts umzuleiten und nichts zu zählen. Wenn Sie Betrag oder Verwendungszweck ändern müssen, erzeugen Sie einen neuen Code. Alles, was Ihnen als dynamischer Zahlungs-QR verkauft wird, ist ein Link auf eine Zahlungsseite, und das ist ein anderes Produkt.
Was passiert, wenn ich einen Kurzlink in einen EPC-QR-Code setze?
Die Banking-App kann ihn nicht parsen und zeigt entweder einen Fehler an oder behandelt den Code wie eine gewöhnliche URL. Der Parser erwartet in der ersten Zeile BCD und in der vierten SCT; eine URL erfüllt keines von beiden. Zahlungs-QR-Codes und Link-QR-Codes sind zwei getrennte Codes, die zufällig dieselbe Symbolform teilen.
Wie groß darf die Nutzlast sein?
331 Bytes, womit der QR-Code nach den EPC-Richtlinien auf Version 13 mit Fehlerkorrekturstufe M begrenzt ist. In der Praxis füllt der Verwendungszweck den Platz, ein langer Freitext ist also das Feld, das einen Code über die Grenze treibt. Halten Sie die Referenz strukturiert und kurz, dann bleibt der Code locker genug, um von einer gedruckten Rechnung gescannt zu werden.
Sind Zahlungs-QR-Codes auf gedruckten Rechnungen sicher?
Der Code selbst enthält keine ausführbaren Inhalte, und der Zahler bestätigt die Überweisung in seiner Banking-App, die Empfängername und IBAN anzeigt, bevor Geld fließt. 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 und nicht auf einem Etikett, und weisen Sie Zahler 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.
Kostenloses Konto erforderlich. Der Free-Plan enthält insgesamt 25 Links. Du hast schon ein Konto? Anmelden
