Free Tool Desk

Guide

EPC QR Code (GiroCode) Explained

Last updated October 6, 2026

The square on a German or Austrian invoice labelled "GiroCode", and its equivalents elsewhere in the SEPA area, is an EPC QR code. Scan it with a banking app and the transfer form fills itself in. Behind it is a short, strictly defined block of text. This guide explains what is in it, which limits apply and why two apps can treat the same code differently.

Where the standard comes from

The European Payments Council publishes the guideline EPC069-12, "Quick Response Code: Guidelines to Enable the Data Capture for the Initiation of a SEPA Credit Transfer". Its current version, 3.0, took effect on 13 September 2022. The guideline is informative, and offering the feature is optional for payment service providers. It is meant for cases where the same data is also shown in plain text, such as an invoice, so the payer can compare.

The lines of the code

LineContentLimit
1Service tag: BCDfixed
2Version: 001 or 002fixed values
3Character set code (1 is UTF-8)1 character
4Identification: SCTfixed
5BIC of the beneficiary's bank8 or 11; required in version 001, optional in 002 inside the EEA
6Beneficiary nameup to 70, required
7Beneficiary IBANup to 34, required
8Amount in euro, written like EUR12.500.01 to 999,999,999.99
9Purpose code4 characters
10Structured creditor referenceup to 35
11Unstructured remittance textup to 140
12Note from beneficiary to payerup to 70

Lines are separated by a line feed (or CR LF), and the last used line is not followed by a separator. A code can end after the IBAN if it has no amount.

Reference or text, never both

Lines 10 and 11 are alternatives. A structured reference (for example an ISO 11649 "RF" creditor reference) lets the recipient reconcile payments automatically; free text is what most small invoices use. The guideline allows only one of the two.

The size limit

The code must be a QR code with error correction level M (about 15 per cent of the code words can be restored) and no larger than version 13, which corresponds to a payload of 331 bytes. The limit is in bytes, so accented characters, which take two bytes or more in UTF-8, use it up faster. A fuller text makes a denser code that is harder to scan at small sizes.

Why apps differ

Banks implement the scanning themselves. An app may ignore the purpose code, accept only some versions, refuse amounts above its own limits, or show the remittance differently. The guideline says what a code contains, not how an app must treat it, so always read the amount, IBAN and name in the app before you confirm.

A worked example

A club collects a 12.30 euro fee from Franz Mustermann, IBAN DE71 1102 2033 0123 4567 89, with the remittance "Invoice 42". The code then contains twelve lines, from BCD down to the remittance, and ends there without a trailing line break; the BIC, purpose, reference and note lines are present but empty, except that empty lines after the last used one are left out. In total that is under 100 bytes, which makes a small, easy-to-scan code (QR version 5). Add a long free text and a note to the payer and the same code grows towards the 331-byte limit and becomes denser, which is why shorter texts scan more reliably from a printed invoice.

Common mistakes

  • Typing spaces or lower-case letters in the IBAN: the tool normalises them, but a pasted IBAN with a wrong digit fails the checksum.
  • Putting both a creditor reference and a text: the guideline allows only one.
  • Using a currency other than euro: the EPC code carries euro amounts only.
  • Printing the code very small or on a dark background: keep a white border of four modules around it.

Make one

The EPC QR / GiroCode Generator builds the code from these fields, checks each limit as you type, and decodes its own image as a self-test. If you want the code on an invoice you already have, the Add GiroCode to PDF Invoice tool places it on the page. For Swiss invoices the equivalent is a different format; see the Swiss QR-bill guide.