An EPC QR code, also called a GiroCode, is a plain-text block in the European Payments Council's EPC069-12 format that carries the beneficiary name, IBAN, an optional amount, and a payment reference for a euro SEPA bank transfer. A banking app that supports it scans the code and opens a pre-filled transfer, so the payer only confirms with their PIN or biometrics. The generator builds the block in your browser; no payment provider is involved.
How do you make an EPC QR code?
- Enter the Beneficiary Name (up to 70 characters) and the IBAN. Spaces and lowercase are fixed for you.
- Optionally add the BIC, an Amount (EUR), and a Payment Reference (up to 140 characters), such as an invoice number.
- Set the error correction to level M in the design options (see below), then download the code.
- Scan it with a banking app and stop at the confirmation screen.
For ACME GmbH, IBAN DE89 3704 0044 0532 0130 00, EUR 49.99, and the reference "Invoice 2026-0042", the code holds exactly this text (blank lines are part of the format):
BCD
002
1
SCT
ACME GmbH
DE89370400440532013000
EUR49.99
Invoice 2026-0042
Without an amount or reference, trailing empty lines are dropped and the block is shorter, which makes for a simpler, easier-to-scan code.
What does each line mean?
| Line | Content | This generator |
|---|---|---|
| 1 | Service tag | BCD |
| 2 | Version | 002 |
| 3 | Character set | 1 (UTF-8) |
| 4 | Identification | SCT (SEPA Credit Transfer) |
| 5 | BIC | Optional, left empty if not given |
| 6 | Beneficiary name | Up to 70 characters |
| 7 | IBAN | Spaces removed, uppercased |
| 8 | Amount | EUR plus the amount to two decimals |
| 9 to 10 | Purpose code, structured reference | Left empty |
| 11 | Unstructured remittance (your reference) | Up to 140 characters |
The generator does not validate the IBAN's checksum, so a mistyped IBAN will still produce a code. Copy the IBAN from a source you trust, and make a test transfer of a small amount the first time you use a new code.
Why should you set the error correction to M?
The EPC guidelines specify error correction level M and a QR version no higher than 13. Higher levels add redundancy, which enlarges the symbol and can push a payment code past the size that banking apps expect. Choosing M in the Level options keeps the code to what the standard describes. Do not add a logo to a payment QR either, since a logo consumes error correction budget.
Euro only, and in which countries?
The format is for euro SEPA credit transfers, so it does not work for payments in other currencies. Support is by banking app rather than by country law: banks in several euro-area countries, including Germany, Austria, the Netherlands, Belgium, and Finland, are known for scanning it. Whether your customers' apps read it depends on their bank, so ask a few before you print a large batch.
Fixed amount or open?
- Fixed amount and reference: ideal for an invoice. Generate one code per invoice so the reference matches your books.
- No amount: good for donations and membership fees, with a generic reference such as the club name.
Apps differ on whether the payer may change a pre-filled amount, so reconcile what you receive against what you expected.
How do you test it?
Scan with the banking app of two different banks and check the name, IBAN, amount, and reference on the confirmation screen. Confirm print quality with the QR validator and follow the print size guide. For choosing among payment codes, see how to accept QR code payments.
This article is general information, not financial or legal advice. Banking app behavior is set by each bank.