# SEPA QR code generator for bank transfers

> Create the EPC QR code of a SEPA transfer: the payer scans it with a banking app and finds IBAN, amount and reference filled in.

Free in-browser tool (no upload): https://www.mauriziofonte.it/tools/sepa-qr-code-generator

Type the payee, IBAN, amount and reference: the page builds the QR in the European **EPC069-12** format, the one compatible banking apps read to fill in the transfer for whoever pays. The IBAN is checked first, so your invoice never shows a code that points to an account that does not exist.

## How to make a payment QR code

1. **Enter payee and IBAN** - The payee name (up to 70 characters) and the IBAN. The BIC is only needed for accounts in SEPA countries outside the European Economic Area, such as Switzerland, San Marino or the United Kingdom: then the page asks for it.
2. **Add amount and reference** - The amount is optional: leave it empty and the payer types it. Then free remittance text up to 140 characters, or a structured reference up to 35. The standard takes one of the two, never both.
3. **Download the QR** - PNG for an email or the invoice PDF, SVG for print. The QR updates while you type.
4. **Test it before you send it** - Scan the QR with your own banking app and check that name, IBAN and amount are right. Then back out without confirming.

## Why put a QR code on a bank transfer

Someone paying an invoice has to copy the IBAN by hand, character by character, and one mistake stops the transfer until someone notices. With the QR the details go from the paper to the app exactly as you wrote them: payee, IBAN, amount and reference.

The format comes from the European Payments Council guidelines [EPC069-12](https://www.europeanpaymentscouncil.eu/document-library/guidance-documents/quick-response-code-guidelines-enable-data-capture-initiation), written with paper invoices in mind. The same guidelines say something worth knowing: reading the code is optional for banks. Each bank decides whether its app offers it, so always print the IBAN and the reference in plain text next to the QR.

## Glossary

- **EPC069-12**: The European Payments Council guidelines that define how the details of a SEPA credit transfer are written inside a QR code.
- **RF reference**: A creditor reference under ISO 11649: it starts with RF and two check digits, and lets accounting software match the payment to the invoice.
- **BIC**: The code of the payee's bank, 8 or 11 characters. For transfers within the European Economic Area the IBAN is enough.

## Questions about payment QR codes

### Will my bank's app read this QR code?

It depends on the bank. The EPC guidelines make reading it optional, and there is no official list of the apps that do. Look in the transfers section for a way to scan a QR code. The quickest test is a QR to your own IBAN for 1 euro, scanned without confirming.

### Do I have to set the amount?

No. Without an amount the payer types it in the app; with one, it is already there. The standard accepts 0.01 to 999,999,999.99 euro.

### Remittance text or structured reference?

Remittance text is free text up to 140 characters, like "Invoice 123 of 3 November". A structured reference, up to 35 characters, is a code your accounting software matches on its own, for example an RF reference under ISO 11649. The standard takes only one of them, and the page tells you if you fill both.

### Is the BIC required?

Not for an account in the European Economic Area. For SEPA countries outside it, such as Switzerland, San Marino, the United Kingdom and Vatican City, the guidelines still require it, and the page will not build the QR without it.

### Is my IBAN sent to a server?

The QR is built on the page: the IBAN and the amount are not sent to a server to generate it. If you use the history, saved QR codes stay in your browser.

### Does the QR code expire?

No. The transfer details are inside the code, not a link to a website: it works as long as the account stays open.

---
Tool by Maurizio Fonte, senior backend engineer. All tools: https://www.mauriziofonte.it/tools/
