# The EPC QR code format (GiroCode), line by line

> An EPC QR code is twelve lines of text in fixed order, starting with BCD and containing the beneficiary name, IBAN and optionally an amount. The whole payload must stay under 331 bytes, and lines 10 and 11 are mutually exclusive.

Source: https://useqr.app/docs/payments/epc-qr-code-format · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## The twelve lines

```
BCD
002
1
SCT
BPOTBEB1
Red Cross
BE72000000001616
EUR12.00
CHAR
RF18539007547034
Thanks for your support

```

| Line | Field | Notes |
|---|---|---|
| 1 | Service tag | Always `BCD` |
| 2 | Version | `001` requires a BIC, `002` does not |
| 3 | Character set | `1` = UTF-8 |
| 4 | Identification | Always `SCT` |
| 5 | BIC | Optional in version 002 |
| 6 | Beneficiary name | Max 70 characters |
| 7 | IBAN | Max 34 characters, no spaces |
| 8 | Amount | `EUR` + value, 0.01–999999999.99 |
| 9 | Purpose code | Optional, ISO 20022, up to 4 chars |
| 10 | Structured remittance | ISO 11649 creditor reference |
| 11 | Unstructured remittance | Max 140 characters |
| 12 | Beneficiary to originator info | Rarely used |

## Two constraints that bite

**331 bytes total.** Banking apps enforce it. A long beneficiary name plus a full
140-character remittance line will exceed it. Shorten the remittance first.

**Lines 10 and 11 are mutually exclusive.** Supply a structured creditor reference *or* an
unstructured remittance string, never both. Populating both is a common generator bug and
produces a payload some apps reject.

## Validate the IBAN before printing

An IBAN is two letters of country code, two check digits, then up to 30 alphanumeric
characters, with the check digits being a mod-97 checksum over the rearranged string.

Validating catches transposed digits — which otherwise produce a code that generates
perfectly, prints perfectly, and fails at the bank after 5,000 invoices have gone out.
UseQR validates it.

## Where it is read

Strong in Germany, Austria and Switzerland: Sparkasse, Volksbank and most DACH banking apps
read it natively. Support elsewhere in the eurozone is inconsistent — a French or Spanish app
may not recognise it at all.

**Always print the IBAN as text as well.** It costs a line and makes the invoice work
everywhere.

Switzerland's **QR-bill** is a separate, incompatible standard with a Swiss cross in the
centre. Do not substitute one for the other.

## Best use: invoices

Prefilling IBAN, amount and ISO 11649 creditor reference removes transposed digits and lets
you reconcile automatically on the reference. That operational gain is the real reason to use
EPC codes, rather than any marketing benefit.

## FAQ

### What is the maximum size of an EPC QR payload?
331 bytes for the whole twelve-line block. Long beneficiary names combined with a full remittance line exceed it; shorten the remittance first.

### Can I include both a creditor reference and a remittance message?
No. Lines 10 and 11 are mutually exclusive — supply one or the other. Populating both produces a payload some apps reject.

### Do I need a BIC?
Not in version 002. Version 001 requires it. Use 002 unless you have a specific reason not to.

### Which banks support GiroCode?
It is well supported in Germany, Austria and Switzerland and inconsistent elsewhere in the eurozone. Always print the IBAN as text alongside the code.

## Try it

- https://useqr.app/epc
- https://useqr.app/validate
