EPC QR Code Generator
Create an EPC QR code, also called a SEPA QR code, for a credit transfer under the European Payments Council guideline EPC069-12. The tool opens on a sample payment; replace it with your own and the conformance report under the fields checks the code rule by rule.
Valid IBAN, Austria, Erste Bank
Sample
Sample payment. The IBAN, the name, the amount and the reference are placeholders that show how the tool works. Replace them with your own; the downloads stay locked until the IBAN, the name and the reference are yours.
Scan with a SEPA banking app to pre-fill this transfer.
AT23 2011 1002 3457 3201
Erste Bank · GIBAATWW
Generated in your browser. Your IBAN is never uploaded.SecurityMethodology
This is still sample data. Replace the IBAN and the name with your own.
- Beneficiary
- Example Studio GmbH
- IBAN
- AT23 2011 1002 3457 3201
- BIC
- GIBAATWW
- Amount
- EUR 120.00
- Reference
- Invoice 2026-014
Payment details
The beneficiary name is required for a payment QR. Everything else is optional.
Taken from the IBAN: GIBAATWW. Type one to override it.
Element 11, up to 140 characters.
Element 9, up to four letters or digits, for example SUPP.
Element 12, up to 70 characters. The standard calls it beneficiary to originator information.
Version 002 lets the BIC stay empty when every bank involved is in the EEA.
EPC069-12 conformance
15 of 15 rules hold. The code is read back with the same parser as our payment QR decoder, so this checks what was written into the code, not what the form holds.
| Rule | This code | Result |
|---|---|---|
| Service tag is BCD | BCD | Holds |
| Version is 001 or 002 | 002 | Holds |
| Character set is 1 to 8 | 1 (UTF-8) | Holds |
| Identification is SCT | SCT | Holds |
| BIC well formed, and present where required | GIBAATWW | Holds |
| Beneficiary name present, at most 70 characters | 19 characters | Holds |
| IBAN present | AT232011100234573201 | Holds |
| Amount in euro, 0.01 to 999,999,999.99 | EUR120 | Holds |
| Purpose at most 4 characters | not set | Holds |
| Creditor reference or free text, not both | free text | Holds |
| Note to the payer at most 70 characters | not set | Holds |
| No separator after the last populated element | none | Holds |
| Payload at most 331 bytes | 89 bytes | Holds |
| Error correction level M | M | Holds |
| QR symbol version at most 13 | 6 | Holds |
A code that passes every rule is well formed. Whether a given banking app reads it is that bank's decision; the standard leaves support to each bank.
Printing in Austria: PSA Payment Services Austria asks for a module of 0.381 to 0.508 mm, which for this code of 49 modules, quiet zone included, means 18.7 to 24.9 mm wide. The same guidance prints the code inside a frame carrying the words "Zahlen mit Code".
Appearance and output
Colour and file size.
Contrast 99 percent, grade A on the ISO/IEC 15415 scale barcode verifiers use.
A solid background travels with the file, so the code keeps its quiet zone wherever you place it.Transparent applies to the SVG and PNG. PDF pages are always white. The quiet zone goes transparent too, so keep what sits behind the code light.
87 mm at 300 dpi
1024 px is 87 mm wide at 300 dpi, quiet zone included. SVG and PDF are vector and print at any size. This setting only changes the PNG.
Fixed by the standard, and why there are only three settings
Error correction M and the four module quiet zone are fixed by EPC069-12, and the quiet zone is already inside every file we produce.
The 0.4 mm module floor is from the Swiss QR-bill implementation guidelines (SIX). GS1 sets a comparable 0.396 mm minimum for retail scanning.
We ship colour and size. We do not ship a centre logo, module shapes, eye shapes or gradient fills, because a payment QR that fails to scan is a failed payment.
Appearance settings are remembered on this device. Payment data is never saved.
EPC payload89 of 331 bytes
| Line | Field | Value | Source | Bytes |
|---|---|---|---|---|
| 1 | Service tag | BCD | fixed | 3 |
| 2 | Version | 002 | fixed | 3 |
| 3 | Character set | 1 | fixed | 1 |
| 4 | Identification | SCT | fixed | 3 |
| 5 | BIC | GIBAATWW | detected | 8 |
| 6 | Beneficiary name | Example Studio GmbH | you | 19 |
| 7 | IBAN | AT232011100234573201 | you | 20 |
| 8 | Amount | EUR120 | you | 6 |
| 9 | Purpose | empty | not used | 0 |
| 10 | Structured reference | empty | not used | 0 |
| 11 | Unstructured reference | Invoice 2026-014 | you | 16 |
| 12 | Beneficiary to originator | empty | not emitted | 0 |
| Line separators | 10 | |||
| Total | 89 | |||
331 bytes is the byte capacity of a QR version 13 symbol at error correction M, which is exactly what EPC069-12 fixes. That identity holds only at M.
What Is an EPC QR Code?
An EPC QR code is a QR code whose content is a SEPA credit transfer instruction. The European Payments Council published the format as EPC069-12 so that a payer can scan an invoice instead of typing an IBAN, an amount and a reference by hand. The content is plain text, one element per line in a fixed order, meant to sit next to the same details printed as text.
A QR code that holds only an IBAN carries no beneficiary and no amount, so it is not a payment instruction under EPC069-12. For that simpler code, use the IBAN QR code generator. In Germany the EPC code is known as a GiroCode; the GiroCode generator is set up for German accounts and adds the Bundesbank account check.
How Do You Know an EPC QR Code Follows the Standard?
The report under the fields reads the finished code back with the same parser as our payment QR decoder and checks it against EPC069-12: the four header elements, the length of each field, the euro amount range, one reference rather than two, the BIC where it is required, no separator after the last populated element, the 331-byte budget, error correction level M and a symbol no larger than version 13. An RF creditor reference is also checked for its ISO 11649 check digits.
It judges what was written into the code, not what the form holds, so a field that was shortened or dropped to fit shows up there. A code that passes every rule is well formed. Whether a particular banking app reads it remains that bank's decision.
What Are the Twelve Elements of an EPC QR Code?
The payload has up to twelve elements, one per line. The first seven lines are always present; the BIC line may be empty in version 002. Elements after the last one that carries data are left out altogether.
- 1. Service tag: always
BCD. - 2. Version:
001or002. The tool starts on 002. - 3. Character set: a digit from 1 to 8. We write 1, UTF-8, so accented names survive.
- 4. Identification: always
SCT, for SEPA credit transfer. - 5. BIC of the beneficiary's bank. Required in version 001; in version 002 it may stay empty unless a bank outside the EEA is involved.
- 6. Beneficiary name: up to 70 characters. The person or company being paid, never the bank.
- 7. IBAN of the account the money goes to.
- 8. Amount: the currency code and the value with no space, from 0.01 to 999,999,999.99. The tool writes it as short as it can be,
EUR120rather thanEUR120.00, as the guideline's own exampleEUR12.3does and as the Austrian rules require. - 9. Purpose: up to four letters or digits.
- 10. Creditor reference (the standard's structured reference): up to 35 characters; an ISO 11649 RF creditor reference may be used, and that is what this tool writes.
- 11. Free-text reference (the standard's unstructured reference): up to 140 characters. Only one of elements 10 and 11 may be filled.
- 12. Note to the payer: up to 70 characters. The standard calls it beneficiary to originator information.
The payload inspector under the tool shows each element with its byte count. For the arithmetic behind RF check digits, see the RF creditor reference generator; for the story behind each element, including a mistake we made with element 6, read what is inside a SEPA payment QR code.
Version 001 or 002: When Is the BIC Required?
Version 001 always requires the BIC of the beneficiary's bank. Version 002 makes it optional, with one exception written into the guideline: the BIC stays mandatory when a scheme participant from outside the European Economic Area is involved. That covers SEPA countries such as Switzerland, the United Kingdom and Monaco. The tool starts on 002, fills in the BIC when our directory knows the bank, and locks the downloads when a BIC is required and missing. Finland's own guidance asks for version 001, so the switch is there.
Which Error Correction Level Does an EPC QR Code Use?
EPC069-12 specifies level M. Some QR libraries raise the level on their own when a higher one fits into the same symbol; this generator turns that off, so every code is written at M. The centre logo offered by our IBAN QR code generator needs a higher level, so it is not offered here.
How Much Data Fits in an EPC QR Code?
At most 331 bytes, the capacity of a version 13 QR symbol at level M. The limit counts bytes, not characters, so a name in Greek or Cyrillic uses more of it than the same number of Latin letters. The bar above the code shows how much of the budget is used. If the content would not fit, the generator first drops the note to the payer and then the reference, and says so, rather than produce a code with a truncated IBAN.
Which Countries Use EPC QR Codes, and Which Use Their Own?
The instruction inside the code is a SEPA credit transfer, so the receiving account should be at a bank that takes part in SEPA. Our directory marks 42 IBAN countries as SEPA. Some countries publish their own rules for printing the same code: Austria prints it inside a frame labelled "Zahlen mit Code", Belgium asks for at least 2 by 2 cm on the invoice, and Finland asks for a module of at least 0.5 mm. Belgium also fills element 10 with its own structured communication where other countries use an RF reference. When the IBAN is from one of these countries, the tool shows the rule under the report.
Other countries use payment QR formats of their own that an EPC reader does not read: the Swiss and Liechtenstein QR-bill, Czech QR Platba and Slovak PAY by square among them. On an invoice that requires one of those, an EPC code does not replace it.
What Can an EPC QR Code Not Tell You?
Nothing in the payload ties the beneficiary name to the IBAN. A code can name one company and pay an account that belongs to someone else, and it will scan perfectly. The check that compares the two is Verification of Payee, which only the account-holding bank can run.
If you received a code rather than made one, the payment QR decoder reads it back element by element and checks the account it pays before you do.
Frequently Asked Questions
What is an EPC QR code?
An EPC QR code, also called a SEPA QR code, carries a complete SEPA credit transfer: the beneficiary's name and IBAN, optionally the BIC, an amount in euro and a reference. The European Payments Council describes it in the guideline EPC069-12. A banking app that supports it fills in the transfer from the code, and the payer confirms.
Is an EPC QR code the same as a GiroCode?
GiroCode is the name used in Germany for codes that follow EPC069-12. We know of no separate published GiroCode specification, so both our generators write the EPC069-12 payload. The GiroCode generator is set up for German accounts and invoices.
Does an EPC QR code expire?
No. EPC069-12 has no expiry element, so a code keeps working for as long as the account in it exists. Change the code when the account, the amount or the reference changes.
Can someone take money from my account with an EPC QR code?
No. The code only fills in a transfer that the payer still has to confirm in their own banking app. The real risk runs the other way: a code whose account was swapped for someone else's. Before paying a code you did not make, read it with our payment QR decoder.
Why does my banking app not read the code?
Support is each bank's decision; the standard leaves it to them. If a code does not scan, check that it passes the conformance report, that it is printed large enough and in a dark colour on a light background, and try another app before changing the code.
Can an EPC QR code carry an amount in another currency?
The guideline describes a SEPA credit transfer, which is a euro payment, so the amount is expected in euro. The generator writes amounts in euro only.
Is my data stored when I create an EPC QR code?
No. The code is generated in your browser. The IBAN, name, amount and reference are not sent to our servers.
Sources & References
- European Payments Council: EPC069-12 v3.1, guidelines for a SEPA credit transfer QR code
- European Payments Council: SEPA credit transfer rulebook and implementation guidelines
- ISO/IEC 18004:2024: QR code symbology, versions and error correction levels
- PSA Payment Services Austria: QR code and BCD definitions for Austria
- Febelfin: QR code on invoices for credit transfers in Belgium
- Finance Finland: Use of the QR code on the credit transfer form
- SIX: The Swiss QR-bill standard
- QR Platba: The Czech payment QR format
Last updated: September 2026
