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