EPC QR Code Generator for SEPA Bank Transfers
Quick Answer
Enter the name of whoever is being paid, their IBAN, and optionally an amount and a reference. The generator produces an EPC QR code, also called a GiroCode, that a European banking app can read to pre-fill a SEPA transfer. The IBAN is checked with the ISO 13616 mod-97 checksum before a code is produced, so a mistyped character is caught here rather than at the bank.
Enter the name of the person or company being paid.
Enter an IBAN.
More options
Fill in a name and a valid IBAN and the code appears here.
What goes into the code
The payload is plain text: twelve lines in a fixed order, separated by line breaks. Nothing is encrypted and nothing is hidden, which is why any banking app that knows the format can read it without contacting a server.
| Line | Contents | Notes |
|---|---|---|
| 1 | BCD | Service tag, always the same |
| 2 | 001 or 002 | Version. 002 allows the BIC to be left out |
| 3 | 1 | Character set, 1 means UTF-8 |
| 4 | SCT | SEPA Credit Transfer |
| 5 | BIC | Optional in version 002 |
| 6 | Name | Up to 70 characters |
| 7 | IBAN | Validated with mod-97 before the code is made |
| 8 | Amount | EUR followed by the value, optional |
| 9 | Purpose | Four-character code such as CHAR, optional |
| 10 | RF reference | ISO 11649 structured reference, optional |
| 11 | Free text | Up to 140 characters, used instead of line 10 |
| 12 | Note | Up to 70 characters, optional |
A payload carries either the structured reference on line 10 or the free text on line 11, never both. Trailing empty lines may be dropped, which is why a minimal code is shorter than twelve lines.
How the IBAN check works
An IBAN carries its own checksum. Move the first four characters to the end, replace each letter with a two-digit number where A is 10 through Z is 35, read the result as one long number, and divide by 97. A valid IBAN always leaves a remainder of exactly 1. This catches a single mistyped or transposed character almost every time, which matters because a transfer to a valid but wrong IBAN is genuinely hard to reverse. This page also checks the IBAN length against the registered length for the country code.
Where to use it
- Invoices, so a customer does not retype a 22-character IBAN.
- Donation letters and collection boxes for clubs and charities.
- Membership renewal notices with a fixed amount and a reference.
- Rent or utility statements where the same reference is used every month.
Print at a size that survives a phone camera at arm's length. The print size calculator gives the minimum for a given scan distance, and the reliability audit grades a finished code before you commit it to a print run.
A word on trust
A payment code is worth tampering with. Anyone who replaces the code on a printed invoice redirects the money, and the payer has no way to see it. Print the payee name and IBAN in readable text next to the code so the payer can compare, and encourage them to check those details on the banking app screen before confirming. If you received an invoice with a code you did not expect, run it through the QR code safety checker first.
Frequently Asked Questions
What is an EPC QR code?
An EPC QR code holds the details of a SEPA credit transfer: who is being paid, their IBAN, an optional amount and an optional reference. A banking app that supports the format reads the code and pre-fills a transfer form, so the payer does not have to type an IBAN by hand. The format is defined by the European Payments Council in guideline EPC069-12.
Is a GiroCode the same thing?
Yes. GiroCode is the name used in German-speaking markets for the same EPC QR code. A code generated here follows the published EPC specification, so it is the same payload either way.
Which banking apps can read it?
Support is widespread among banks in the SEPA area, particularly in Germany, Austria, the Netherlands, Belgium and Finland, but it is not universal and we have not tested every app. The honest answer is that this generator follows the published specification; whether a specific app reads it depends on that app. Test with your own banking app before printing a run of invoices.
Does the code move any money by itself?
No. The code only carries transfer details. Your banking app fills in a transfer form from those details and you still authorise the payment yourself, with whatever confirmation your bank normally requires. Link2QR never touches the payment.
Should I use the structured RF reference or free text?
Use the structured RF reference when the party being paid gave you one, because it is machine-readable and lets them match your payment to an invoice automatically. It carries its own check digits, and this page validates them. Use free text for everything else, such as a note on a donation.
Why is there a byte limit?
The EPC guideline caps the payload at 331 bytes so the resulting code stays reliably scannable. Accented and non-Latin characters take more than one byte each in UTF-8, so a long name with umlauts uses more of the budget than its character count suggests. The tool shows how much of the limit you have used.
Does this expire or track scans?
No. The code is static, which means the details are encoded directly in the pattern with no redirect through any server. It works for as long as the bank account exists, there is no scan limit, and we cannot see who scanned it.
Link2QR only writes transfer details into the code. Your bank executes and verifies the payment. We are not affiliated with the European Payments Council.
Sources
- European Payments Council, EPC069-12, guidelines for enabling data capture for the initiation of a SEPA credit transfer.
- ISO 13616, the IBAN standard, and ISO 7064 for the mod-97 check.
- ISO 11649, structured creditor reference (the RF reference).