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

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

---

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

## Try it

- https://useqr.app/epc
- https://useqr.app/pix
- https://useqr.app/upi
