Skip to content
barcoder

Standards/girocode

Girocode

TypeQR Code
PrimaryDE
MentionedDE
Completeness86%high

Overview

Girocode is the German national branding of the pan-European epc-qr standard — the same EPC069-12 BCD-format payload, locally promoted by Die Deutsche Kreditwirtschaft (DK) under a distinct German name since 2018 [1, 2, de-cro]. It is widely used on German invoices for one-scan SEPA Credit Transfer initiation in mobile banking apps. Girocode is mandatory-compatible across all major German banks (three-pillar system: private commercial, Sparkassen, cooperatives) DE.

In strict technical terms, Girocode == EPC QR Code — there is no Germany-specific payload extension; the difference is only the branding name DK adopted to promote the standard domestically [1, 3].

History

The underlying epc-qr standard was pioneered by Austrian payment-standards body STUZZA in 2012 and published as EPC069-12 by the European Payments Council in February 2013 [3, 4, at-cro]. Country-by-country adoption followed:

Year Country Brand
2012 Austria Stuzza QR / Zahlen mit Code AT
2013 EPC publishes EPC069-12
2015 Finland EPC QR
2015 Germany Initial Girocode availability
2018 Germany Girocode brand actively promoted by DK [1]
2016 Netherlands, Belgium EPC QR

The 2018 active promotion by DK [1] marks Girocode's transition from a niche option to a mainstream invoice-payment standard in Germany — coinciding with smartphone QR-scanning capability becoming ubiquitous and the iOS Camera app gaining native QR detection.

Recent context (2024–2025) affecting Girocode's deployment landscape DE:

  • 31 December 2024 — Giropay (a separate online banking redirect product, often confused with Girocode) discontinued.
  • July 2024 — Wero launched in Germany (P2P first, online commerce summer 2025, NFC POS 2026). Wero is an EPI (European Payments Initiative) product positioned to gradually replace several legacy national payment instruments — though Girocode for invoice payment remains active.
  • January 2025 / October 2025 — SEPA Instant Credit Transfer mandatory receiving / sending dates in Germany. SEPA Instant on the rail behind Girocode means scanned-invoice payments now settle in seconds rather than next day DE.

Technical specification

Girocode uses the identical BCD (Beneficiary Credit Data) payload format as the pan-European epc-qr standard [3, 4]. The payload is plain text with 11 newline-separated fields:

# Field Max length Required
1 Service Tag 3 Yes — always BCD
2 Version 3 Yes — 001 or 002
3 Character set 1 Yes — 18 (1 = UTF-8)
4 Identification 3 Yes — always SCT (SEPA Credit Transfer)
5 BIC 11 Mandatory in v001; optional within EEA in v002
6 Beneficiary name 70 Yes
7 IBAN 34 Yes
8 Amount 12 Optional, format EUR<value>
9 Purpose code 4 Optional, ISO 20022 purpose codes
10 Structured reference (RF) 35 Optional (mutually exclusive with field 11)
11 Unstructured remittance info 140 Optional (mutually exclusive with field 10)

QR symbology [epc-ref]:

  • Underlying symbology: qr-code (ISO/IEC 18004)
  • Error correction level: M (mandated)
  • Maximum QR version: 13 (i.e. ≤ 331 bytes of payload)
  • Encoding mode: Byte

Sample German Girocode payload DE:

BCD
002
1
SCT
DEUTDEFF
Max Mustermann GmbH
DE89370400440532013000
EUR150.00
RINV

Rechnung Nr. 12345

German IBAN structure DE:

DE + 2 check digits + 8-digit bank code + 10-digit account number
Example: DE89370400440532013000 (22 characters)

Common German BICs DE:

  • Deutsche Bank: DEUTDEFF
  • Commerzbank: COBADEFF
  • DZ Bank: GENODEFF

Use cases

Girocode is invoice-payment infrastructure — single-purpose by design, but the deployment surface in Germany is broad DE:

  • Printed utility bills — electricity, gas, telecom, internet invoices. Pre-printed Girocode on the invoice; consumer scans with banking app camera.
  • Government and tax notices — federal Steuerbescheide (tax assessments), municipal fees (Gebühren), social-insurance contributions.
  • Donation requests — NGOs, religious organisations, charities print Girocode on flyers and mailings.
  • Health insurance and other recurring billers — premium reminders carry Girocode.
  • B2B supplier invoices — printed or PDF invoices with Girocode payable in one scan, often using SCOR structured reference (RF format) for accounting matching [3].
  • POS-adjacent use cases — some German cash registers print Girocode on receipts for split-the-bill / pay-later workflows; relatively niche compared to invoice usage.

German banking-app coverage DE:

  • Sparkasse app — most-downloaded German banking app (9M+ downloads); Girocode scan + Photo Pay (camera scan of paper invoices).
  • Deutsche Bank appSmart Transfer with camera; Girocode scan + photo capture of PDF/JPG invoices.
  • Commerzbank, VR Banking (Volksbanken/Raiffeisenbanken), ING Germany, N26 — all support Girocode scan natively.

Photo Payment is a German-specific adjacent capability: bank apps that scan paper invoices using OCR (not Girocode QR specifically) — useful for invoices issued before Girocode adoption. Photo Pay and Girocode coexist in the same banking-app UI DE.

Implementations

Girocode shares the epc-qr implementation ecosystem — any EPC-QR library generates Girocode-compatible payloads.

Encoder libraries:

  • JavaScriptd13nde/EPC-GiroCode — JavaScript Girocode generator [5].
  • PythonSegno — high-quality QR library with segno.helpers.make_epc_qr() helper that produces a Girocode/EPC-QR payload [6].
  • PHPsmhg/sepa-qr-php — 51★, 2020 — generates SEPA / EPC QR codes (Girocode-compatible) [7].
  • PHPRikudouSage/QrPaymentEU — broader EU payment library including Girocode [8].
  • .NET — DevExpress XtraReports ships QRCodeEPCGenerator as a barcode component [9].

German-specific tooling:

  • easybill, billbee, lexware, Datev and other German billing/accounting software packages generate Girocode on invoices automatically [1].
  • Hosted generatorsgirocodegenerator.com and similar German-language services [1].

Bank apps (canonical production scanning implementations) — see Use cases section above DE.

Comparison

vs. epc-qr (pan-European parent standard) — Strictly identical at the payload level. Girocode is a German brand for EPC QR, not a technical variant. The same Girocode payload is readable by Austrian Stuzza-QR-aware apps, Finnish bank apps, etc. The branding choice was DK's marketing decision to make the German payment landscape more recognisable to consumers [1, 3, at-cro].

vs. swiss-qr-bill (Switzerland's national invoice QR) — Both serve the invoice-payment niche in DACH (German-speaking Europe) but with markedly different design choices. Swiss QR-bill uses an ISO 20022 pain.001-derived payload with 31–34 fields including QRR 27-digit reference and structured billing-info; Girocode uses an 11-field BCD payload (much simpler) [ch-cro, 3]. Switzerland is non-EU and built its own; Germany adopted the pan-European one. Both standards are used heavily in the German-speaking world but for different countries.

vs. hub3 (Croatia's invoice barcode) — Different symbology entirely: HUB3 uses pdf417 not qr-code. HUB3 is mandatory in Croatia for domestic payment slips; Girocode is non-mandatory in Germany but de facto universal [hub3-ref].

vs. earlier German alternatives:

  • Photo Payment / Smart Transfer — German banks' OCR-scanning of paper invoices. Coexists with Girocode in the same banking-app UI; Photo Pay handles invoices without Girocode, Girocode is the structured fast path when present DE.
  • Bezahlcode (older German alternative, mostly superseded) — a pre-EPC QR-payment proposal from the early 2010s with its own format, never gained traction once EPC QR / Girocode arrived.

Fun facts

The "Girocode" brand name reflects a deliberate alignment with Germany's existing Girokonto (current/checking account) terminology — making the standard immediately legible to German consumers as "the QR code for your Giro account" [1]. Most other countries kept the EPC QR name; Germany localised the branding.

The standard is technically identical to Austria's Stuzza QR AT — a German consumer scanning an invoice from an Austrian supplier in their German banking app gets the same auto-populated SEPA Credit Transfer experience as scanning a domestic Girocode. The pan-European single-format was the explicit EPC design goal.

Germany's three-pillar banking structure (private commercial banks, Sparkassen savings banks, Volksbanken/Raiffeisenbanken cooperatives) historically slowed payment-standard adoption — every change required consensus across three sub-sectors with different governance DE. Girocode's cross-pillar promotion by DK starting 2018 was a notable demonstration that consensus was achievable; all three pillars' apps support Girocode scanning today DE.

Status

Active, widely deployed. Most recent context DE:

  • All major German banks (across the three-pillar system) support Girocode scanning in their apps
  • Actively promoted by Die Deutsche Kreditwirtschaft (DK) since 2018
  • Used by all major billing categories (utilities, government, B2B, donations)
  • Underlying SEPA Credit Transfer rail now settles instantly via SEPA Instant (mandatory in Germany Jan / Oct 2025) DE
  • 1 300+ German institutions offering SEPA Instant (highest in Europe) — improves Girocode-initiated transfer settlement speed DE

Future trajectory DE:

  • Wero (European Payments Initiative, launched in Germany July 2024) may eventually overlap Girocode's invoice-payment niche — Wero's QR code feature is on the 2025 / 2026 roadmap. No formal Girocode deprecation planned; the two are expected to coexist for the medium term.
  • EPC QR specification continues to evolve (current v2.10, June 2024) — Girocode tracks the latest revision automatically as a re-brand rather than a fork [epc-ref].

Sources

  1. Girocode-EPC-Standard erklärt — girocodegenerator.com
  2. EPC-QR-Code/GiroCode — easybill
  3. EPC QR code — Wikipedia
  4. EPC069-12 Quick Response Code Guidelines — EPC
  5. d13nde/EPC-GiroCode — GitHub
  6. EPC QR Codes — Segno docs
  7. smhg/sepa-qr-php — GitHub
  8. RikudouSage/QrPaymentEU — GitHub
  9. EPC QR Code Generator — DevExpress XtraReports
  10. Girocode — Wikipedia (Deutsch)
  11. DE-germany.md

Deployments

Found in the following country reports (grep across reports/countries/):

source · docs/standards/girocode/index.md