QR code type
EPC QR codes (GiroCode) — SEPA credit transfers explained
An EPC QR code — also called GiroCode — encodes a SEPA credit transfer as a short line-based text block containing the beneficiary name, IBAN and optionally an amount. European banking apps read it and prefill a transfer. The payer still authorises it; nothing is charged automatically.
The payload
Twelve lines, in fixed order, per European Payments Council guideline EPC069-12:
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 (SEPA Credit Transfer) |
| 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 to 999999999.99 |
| 9 | Purpose code | Optional, up to 4 characters, ISO 20022 |
| 10 | Structured remittance | ISO 11649 creditor reference |
| 11 | Unstructured remittance | Max 140 characters |
| 12 | Beneficiary to originator information | Rarely used |
Lines 10 and 11 are mutually exclusive — supply one or the other, never both.
The 331-byte ceiling
The whole payload must not exceed 331 bytes. This is a guideline limit, not a QR limit, and banking apps enforce it. A long beneficiary name plus a 140-character remittance line will hit it. Trim the remittance first.
IBAN validation is worth doing before you print
An IBAN is two letters of country code, two check digits, then up to 30 alphanumeric characters. The check digits are a mod-97 checksum over the rearranged string. UseQR validates it, which catches the transposed digits that would otherwise produce a code that generates cleanly and fails at the bank — after printing.
Where it works
GiroCode is strongest in the German-speaking market: Sparkasse, Volksbank, most German and Austrian banking apps, and many Swiss ones read it natively. Support elsewhere in the eurozone is patchy — a French or Spanish app may not recognise it at all.
Switzerland has its own, incompatible standard: the Swiss QR-bill, which uses a Swiss cross in the centre and a different payload. Do not substitute one for the other.
For anything printed for a pan-European audience, print the IBAN as text as well.
Best uses
- Invoices: the classic case. Amount, IBAN and creditor reference all prefilled means no transposed digits and much faster reconciliation.
- Donation appeals: a fixed amount plus a purpose code.
- Membership renewals and standing charges.
FAQ
Is GiroCode the same as an EPC QR code?
Yes. GiroCode is the German brand name for a QR code following the European Payments Council's EPC069-12 guideline. The payload is identical.
Does the payer get charged automatically?
No. The code prefills a SEPA credit transfer in their banking app; they still authorise it. A QR code cannot move money on its own.
Which banks support it?
It is well supported in Germany, Austria and Switzerland. Elsewhere in the eurozone, support is inconsistent, so always print the IBAN as text alongside the code.
What is the maximum payload size?
331 bytes for the whole block. Long beneficiary names combined with a 140-character remittance line will exceed it — shorten the remittance first.
Can I use it for a Swiss payment?
Switzerland has its own QR-bill standard with a different payload and a Swiss cross in the centre. Many Swiss apps also read EPC codes, but the two formats are not interchangeable.