EPC Girocode
EPC Girocode ist das QR-Format des European Payments Council für SEPA-Überweisungen. Ein eingescannter Girocode füllt in der Banking-App des Zahlers automatisch IBAN, Betrag und Verwendungszweck aus und erspart das manuelle Abtippen der Bankverbindung. Nativ unterstützt von Sparkasse, Volksbank, Deutsche Bank, ING, N26, Revolut und den meisten deutschen, österreichischen und niederländischen Banking-Apps. Außerhalb des SEPA-Raums hat Girocode keine Funktion.
Kodierung: Reiner UTF-8-Text, kein TLV, keine Strukturierung. Zwölf Felder in fester Reihenfolge, getrennt durch
\n (LF, U+000A). Maximale Nutzlast 331 Byte. Verfahren: SEPA Credit Transfer (SCT) oder SEPA Instant Credit Transfer (SCT Inst). Der QR-Code löst eine einmalige Überweisung aus; Lastschrift und Dauerauftrag sind nicht möglich.
Nutzlaststruktur, 12 Zeilen, zeilengetrennt
| Zeile | Feld | Länge | Pflichtfeld | Hinweise |
|---|---|---|---|---|
| 1 | Service-Tag | 3 | Ja | Fester Wert BCD. |
| 2 | Version | 3 | Ja | 001 (ursprüngliche Spezifikation) oder 002 (v2, BIC innerhalb des EWR nun optional). |
| 3 | Zeichensatz | 1 | Ja | 1=UTF-8, 2=ISO-8859-1, 3=ISO-8859-2 usw. 1 ist die einzig sichere Wahl. |
| 4 | Identifikation | 3 | Ja | SCT (Standard Credit Transfer). SCT Inst verwendet denselben Tag; ob Express oder Standard, entscheidet der Acquirer. |
| 5 | BIC | 0, 8 oder 11 | Nein (v002) | In v001 Pflichtfeld; in v002 für SEPA-Zahlungen optional. Für Empfänger außerhalb des EWR angeben. |
| 6 | Name des Begünstigten | 1–70 | Ja | Klartext-Name. Zeichensatz gemäß Zeile 3. |
| 7 | IBAN | 1–34 | Ja | Ohne Leerzeichen oder Formatierung. DE89370400440532013000, nicht DE89 3704 0044 0532 0130 00. |
| 8 | Betrag | 4–12 | Nein | Format: EUR10.00. Leer lassen, damit der Zahler den Betrag beim Scannen selbst eingibt. |
| 9 | Verwendungszweckcode | 0–4 | Nein | ISO-20022-External-Purpose-Code. Beispiele: GDDS (Waren), CHAR (Spende). |
| 10 | Strukturierter Verwendungszweck | 0–35 | Nein | ISO-11649-RF-Gläubigerreferenz für automatisierte Abstimmung. Schließt Zeile 11 aus. |
| 11 | Unstrukturierter Verwendungszweck | 0–140 | Nein | Freitextangabe zum Zahlungsgrund. Schließt Zeile 10 aus. |
| 12 | Information Begünstigter an Auftraggeber | 0–70 | Nein | Optionaler Hinweistext für den Zahler in der Banking-App (z. B. „Rechnung 2026-0042"). |
Kanonischer Testvektor, v002 minimal
Überweisung von €12,50 an Max Mustermann bei der Commerzbank, IBAN DE89370400440532013000, ohne BIC, unstrukturierter Verwendungszweck „Rechnung 42":
BCD
002
1
SCT
Max Mustermann
DE89370400440532013000
EUR12.50
Rechnung 42
Die leeren Zeilen an Position 5 (kein BIC), 9 (kein Verwendungszweckcode) und 10 (keine strukturierte Referenz) sind Pflicht; die Zeilenanzahl muss exakt 12 betragen (oder 11, wenn Zeile 12 weggelassen wird).
Live-IBAN-Validator (mod-97)
Girocode lehnt jede IBAN ab, die die ISO-13616-mod-97-Prüfsumme nicht besteht. Der folgende Validator ist identisch mit dem, den Abundera im Girocode-Generator inline einsetzt, und läuft direkt im Browser.
Häufige Fehlerquellen
- Zeilenenden. EPC069-12 schreibt LF (
\n, U+000A) vor. CR+LF (\r\n) führt bei einigen Android-Banking-Apps zu Fehlern. Wer die Nutzlast aus dem Windows-Notepad kopiert, erhält CR+LF; die CRs müssen vor der QR-Kodierung entfernt werden. - BIC in v001 Pflicht, in v002 optional. Für SEPA-interne Überweisungen immer Version
002verwenden; das spart 8–11 Byte Nutzlast und funktioniert mit jeder modernen Banking-App. BIC nur für Legacy-v001-Apps (größtenteils abgekündigt) oder Empfänger außerhalb des EWR angeben. - Striktes Betragsformat.
EUR10.00: Währungskürzel vorangestellt, Punkt als Dezimaltrennzeichen, genau zwei Nachkommastellen.EUR10,EUR10,00und10.00 EURsind ungültig. - Strukturierter und unstrukturierter Verwendungszweck schließen sich aus. Zeile 10 und Zeile 11 dürfen nicht gleichzeitig belegt sein. Die Spezifikation erklärt den QR-Code in diesem Fall für ungültig; manche Apps akzeptieren ihn trotzdem und verwerfen einen der Werte, was zu Abstimmungsfehlern führt.
- IBAN-Leerzeichen. Das IBAN-Feld (Zeile 7) darf kein Leerzeichen enthalten. Die lesbare Form
DE89 3704 0044 0532 0130 00muss vor der Kodierung zuDE89370400440532013000zusammengezogen werden. - Maximale Nutzlast 331 Byte. Eine Nutzlast über 331 Byte wird von der Spezifikation abgelehnt. Lange Begünstigtennamen, lange Verwendungszwecke, BIC und IBAN können diesen Wert überschreiten. Banking-Apps zeigen beim Scannen eine Fehlermeldung; der QR-Code selbst warnt beim Kodieren nicht.
- Zeichensatzfalle. Zeile 3 legt den Zeichensatz für Zeilen 6, 11 und 12 fest. UTF-8 (Wert
1) ist die einzig sinnvolle Wahl für internationale Namen. ISO-8859-1 kann nichts außerhalb des westeuropäischen Lateinalphabets kodieren. - Nur im SEPA-Raum. Girocode-Zahlungen funktionieren ausschließlich zwischen Konten in SEPA-teilnehmenden Ländern (EU, EWR, Schweiz, Vereinigtes Königreich, Monaco, San Marino, Andorra, Vatikan). Das Scannen eines Girocodes in einer Nicht-SEPA-Banking-App schlägt entweder fehl oder öffnet eine leere Überweisungsmaske.
- Keine Lastschrift. Girocode ist ausschließlich für SEPA Credit Transfer. Pull-Verfahren wie Daueraufträge oder SEPA-Lastschriftmandate lassen sich mit Girocode nicht abbilden. Für solche Fälle muss der QR-Code mit einem separaten SEPA-Mandatsdokument kombiniert werden.
- PSD2-Rückgaberechte. Der SEPA Credit Transfer ist ein Push-Verfahren, das der Verbraucher beim Scannen selbst autorisiert. Verbraucherrechte nach PSD2 (z. B. nicht autorisierte Transaktion innerhalb von 13 Monaten) bleiben unberührt. Händler müssen den Autorisierungsnachweis separat aufbewahren; der QR-Code selbst ist kein Vertrag.
Kompatibilität mit Banking-Apps
| App / Region | Girocode-Unterstützung | Hinweise |
|---|---|---|
| Sparkasse (DE) | Nativ | Ursprüngliche Zielplattform für Girocode. Vollständige Unterstützung. |
| Volksbank / Raiffeisen (DE, AT) | Nativ | Vollständige Unterstützung in der VR-BankingApp. |
| Deutsche Bank, Commerzbank, Postbank (DE) | Nativ | Scan über den „Überweisung"-Bereich der jeweiligen App. |
| ING (DE / NL) | Nativ | Die NL-App scannt zusätzlich iDEAL-QR-Codes. |
| N26, Revolut | Nativ | Vollständige Unterstützung in allen verfügbaren Ländern. |
| Erste Bank, Bank Austria (AT) | Nativ | Österreich hat Girocode parallel zu Deutschland eingeführt. |
| Crédit Agricole, BNP Paribas (FR) | Teilweise | Einige französische Banken unterstützen Girocode; die meisten bevorzugen das ältere papierbasierte Referenzformat. |
| Standard-iOS/Android-Kamera | Nein | Native Kamera-Apps erkennen das BCD-Textformat nicht als Zahlungsauftrag. Der Nutzer muss zuerst die Banking-App öffnen. |
Siehe auch
- /epc-girocode-qr-code/, der Girocode-Generator mit IBAN-Validierung und Live-Kodierung.
- /sepa-qr-code/, SEPA-Credit-Transfer-QR-Generator (gleiches zugrunde liegendes Format).
- /standards/swiss-qr-bill/, Swiss QR-Bill, die regionale Alternative für CHF- und Schweizer-IBAN-Überweisungen.
- /standards/, zurück zum Standards-Index.