EPC Girocode

EPC Girocode is the European Payments Council's QR format for SEPA Credit Transfer. A scanned Girocode pre-fills the payee's IBAN, amount, and remittance message in the payer's banking app — saving a manual copy-paste of bank details. Supported natively by Sparkasse, Volksbank, Deutsche Bank, ING, N26, Revolut, and most German/Austrian/Dutch banking apps. Outside SEPA, Girocode does nothing.

Canonical spec: EPC069-12 v2.1 — Quick Response Code Guidelines to Enable Data Capture for the Initiation of a SEPA Credit Transfer (2022).
Encoding: Plain UTF-8 text — not TLV, not structured. Twelve fixed-position fields separated by \n (LF, U+000A). Max payload 331 bytes.
Scheme: SEPA Credit Transfer (SCT) or SEPA Instant Credit Transfer (SCT Inst). The QR triggers a one-off credit transfer; no direct debit / standing order.

Payload structure — 12 lines, newline-separated

LineFieldLengthRequiredNotes
1Service tag3YesFixed value BCD.
2Version3Yes001 (original spec) or 002 (v2 — BIC now optional within EEA).
3Character set1Yes1=UTF-8, 2=ISO-8859-1, 3=ISO-8859-2, etc. 1 is the only safe choice.
4Identification3YesSCT (standard Credit Transfer). SCT Inst uses the same tag — instant/standard is an acquirer decision.
5BIC0, 8, or 11No (v002)Required in v001; optional in v002 for SEPA payments. Include it for non-EEA receivers.
6Beneficiary name1–70YesNatural-language name. Character set per line 3.
7IBAN1–34YesNo spaces or formatting. DE89370400440532013000, not DE89 3704 0044 0532 0130 00.
8Amount4–12NoFormat: EUR10.00. Omit to let the payer enter the amount at scan time.
9Purpose0–4NoISO 20022 External Purpose Code. Examples: GDDS (goods), CHAR (charity).
10Structured remittance reference0–35NoISO 11649 RF creditor reference — for automated reconciliation. Mutually exclusive with line 11.
11Unstructured remittance info0–140NoFree-text payment reason. Mutually exclusive with line 10.
12Beneficiary-to-originator info0–70NoOptional hint text shown to the payer in the bank app (e.g. "Rechnung 2026-0042").

Canonical test vector — v002 minimal

Transfer of €12.50 to Max Mustermann at Commerzbank, IBAN DE89370400440532013000, no BIC, unstructured reference "Rechnung 42":

BCD
002
1
SCT

Max Mustermann
DE89370400440532013000
EUR12.50


Rechnung 42

Note the empty lines at positions 5 (no BIC), 9 (no purpose), 10 (no structured reference). They're required — the line count must be exactly 12 (or 11 if line 12 is omitted).

Live IBAN validator (mod-97)

Girocode rejects any IBAN that fails the ISO 13616 mod-97 checksum. Below is the same validator Abundera runs inline inside the Girocode generator — runs in your browser.

Enter an IBAN to validate.

Common pitfalls

Banking-app compatibility

App / regionGirocode supportNotes
Sparkasse (DE)NativeThe original target for Girocode. Full support.
Volksbank / Raiffeisen (DE, AT)NativeFull support in the VR-BankingApp.
Deutsche Bank, Commerzbank, Postbank (DE)NativeScan via their mobile app's "Überweisung" flow.
ING (DE / NL)NativeAlso scans iDEAL QRs in the NL app.
N26, RevolutNativeFull support across all supported countries.
Erste Bank, Bank Austria (AT)NativeAustria adopted Girocode alongside Germany.
Crédit Agricole, BNP Paribas (FR)PartialSome French banks scan Girocode, most prefer the older paper reference format.
Generic iOS/Android cameraNoNative cameras don't parse the BCD text format as a payment intent. User must open their banking app first.

See also

Spec references verified 2026-04-19. EPC069-12 v2.1 (2022), ISO 13616 IBAN, ISO 11649 RF creditor reference, ISO 20022 External Purpose Code.