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. 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. 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. 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. 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. 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
LineContentDescription
1BCDService Tag โ€“ always "BCD"
2002Version โ€“ 002 recommended (BIC optional)
31Character encoding โ€“ 1 = UTF-8
4SCTIdentification code โ€“ SEPA Credit Transfer
5COBADEFFXXXBIC of the beneficiary bank (optional in v002)
6Max MustermannBeneficiary name โ€“ max 70 characters
7DE89370400440532013000IBAN โ€“ no spaces, uppercase
8EUR150.00Amount โ€“ currency code + decimal with dot
9(empty)Purpose code โ€“ usually empty
10(empty)Structured remittance reference
11Invoice 2026-001Unstructured 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.

Deutsche BankCommerzbankSparkasseVolksbank / RaiffeisenING DeutschlandDKBN26ComdirectPostbankHypoVereinsbankSantanderTargobankRevolutWisebunq

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).

MistakeIncorrect ExampleCorrect Approach
IBAN with spacesDE89 3704 0044 โ€ฆRemove all spaces before encoding โ€“ spaces are only for human readability
Amount with commaEUR150,00Always 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 001Line 2: 001Use 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.

Ready to generate your first GiroCode?

Free, instant, no registration required.

Open Generator โ†’