GiroCode / EPC QR Code โ Complete Guide
Everything about GiroCode: what it is, how it works, which banks support it and how to generate one for free.
What is GiroCode?
GiroCode (also called EPC QR Code) is the European standard for QR payment codes, developed by the European Payments Council (EPC) in 2016. It encodes SEPA payment data into a scannable QR code, allowing bank customers to initiate transfers by simply scanning with their banking app โ no manual data entry required. The standard (EPC069-12) became mandatory for German banks in 2019.
How Does GiroCode Work?
When you scan a GiroCode with your banking app, all payment details are automatically filled in: recipient IBAN, name, amount, and reference. You only need to confirm the transfer with your banking PIN or biometric authentication.
- 1
Sender opens their banking app
Any SEPA-compliant banking app works โ Deutsche Bank, Sparkasse, ING, N26, Revolut, or any of the 500+ other apps in the SEPA zone.
- 2
Taps "Scan QR Code" or "Transfer via QR"
The exact menu label varies by bank, but all modern apps have this feature. It is usually found in the transfer or payment section.
- 3
Camera scans the GiroCode
The app activates the device camera. The GiroCode can be printed on paper, displayed on a screen, or embedded in a PDF.
- 4
All payment details are filled in automatically
Name, IBAN, amount, currency and reference are instantly extracted from the QR code. No manual input, no typos.
- 5
Sender reviews and confirms
The payer verifies the pre-filled data and authorises the transfer with their PIN, biometrics or TAN. Done.
The GiroCode Payload โ Technical Structure
A GiroCode consists of 11 lines of plain text encoded as a QR code. The payload follows the EPC069-12 standard and contains: Service Tag (BCD), Version (002), Encoding (1 = UTF-8), Function (SCT = SEPA Credit Transfer), BIC (optional since 2016), Recipient name, IBAN, Amount (EUR), and Payment reference.
BCD 002 1 SCT COBADEFFXXX Max Mustermann DE89370400440532013000 EUR150.00 Invoice 2026-001
| Line | Content | Description |
|---|---|---|
| 1 | BCD | Service Tag โ always "BCD" |
| 2 | 002 | Version โ 002 recommended (BIC optional) |
| 3 | 1 | Character encoding โ 1 = UTF-8 |
| 4 | SCT | Identification code โ SEPA Credit Transfer |
| 5 | COBADEFFXXX | BIC of the beneficiary bank (optional in v002) |
| 6 | Max Mustermann | Beneficiary name โ max 70 characters |
| 7 | DE89370400440532013000 | IBAN โ no spaces, uppercase |
| 8 | EUR150.00 | Amount โ currency code + decimal with dot |
| 9 | (empty) | Purpose code โ usually empty |
| 10 | (empty) | Structured remittance reference |
| 11 | Invoice 2026-001 | Unstructured remittance info โ max 140 chars |
Which Banks Support GiroCode?
All SEPA-compliant banks in the 36 SEPA member countries are required to support GiroCode scanning. In Germany this includes: Deutsche Bank, Commerzbank, Sparkasse, Volksbank/Raiffeisenbank, ING, DKB, N26, Comdirect, Postbank, Targobank and all others.
GiroCode on Invoices โ Best Practices
Place the GiroCode in the bottom right corner of your invoice. Minimum size: 2cm ร 2cm. White border: at least 2mm on all sides. Never compress or distort the QR code. Test the code with your banking app before sending to clients.
- ๐Position: Bottom-right corner of the invoice โ where payers naturally look for payment information.
- ๐Minimum size: 2 cm ร 2 cm. Smaller codes are harder to scan, especially with older devices.
- โฌWhite border: At least 2 mm of white space (quiet zone) on all four sides. Avoid placing text or graphics immediately adjacent.
- ๐จ๏ธPrint quality: Use at least 300 DPI for printed invoices. Blurry or pixelated codes may fail to scan.
- ๐๏ธNo compression: Do not use lossy image formats (JPEG) for the QR code. Use PNG or SVG to preserve sharpness.
- โ Always test: Scan your generated code with at least two different banking apps before distributing.
Common Mistakes
The most frequent GiroCode errors: IBAN with spaces (spaces are automatically removed), amount with comma instead of period (always use period: 150.00 not 150,00), recipient name longer than 70 characters (shorten it), wrong version (use version 002 for best compatibility).
| Mistake | Incorrect Example | Correct Approach |
|---|---|---|
| IBAN with spaces | DE89 3704 0044 โฆ | Remove all spaces before encoding โ spaces are only for human readability |
| Amount with comma | EUR150,00 | Always use a decimal point, never a comma: EUR150.00 |
| Recipient name too long | "Max Mustermann GmbH & Co. KG International Trade" | Truncate to 70 characters maximum |
| Using version 001 | Line 2: 001 | Use version 002 โ it makes BIC optional and is supported by all modern apps |
| Reference over 140 characters | "Invoice 2026-001 for consulting services rendered in Januaryโฆ" | Keep the reference concise; truncate at 140 characters |
| Wrong currency code | "โฌ150.00" or "150.00EUR" | Format must be exactly: EUR followed immediately by the amount, e.g. EUR150.00 |
SEPA Countries
GiroCode works in all 36 SEPA member countries: Germany, Austria, France, Italy, Spain, Netherlands, Belgium, Portugal, Finland, Ireland, Greece, Slovakia, Slovenia, Estonia, Latvia, Lithuania, Luxembourg, Malta, Cyprus, Croatia, Hungary, Romania, Bulgaria, Czech Republic, Denmark, Sweden, Norway, Iceland, Liechtenstein, Switzerland, United Kingdom, Monaco, San Marino, Vatican, Andorra.
Technical Specification
Standard: EPC069-12 v2.1 | QR Error Correction: M (15%) | Encoding: UTF-8 | Max payload size: 331 bytes | Amount format: EUR followed by decimal amount (EUR150.00) | Reference: structured or unstructured, max 140 characters.