Skip to content

SEPA transfer QR code generator

A SEPA code — a GiroCode in Germany and Austria — pre-fills a euro bank transfer. The payer scans it inside their banking app and the recipient, IBAN, amount and reference are already there, leaving them to authorise it.

It removes the step where somebody copies an IBAN off an invoice by hand, which is where transposed digits and misdirected payments come from.

What should it do

Pre-fill a European bank transfer.

Content

Design

#111111
#ffffff

The format is positional, and blank lines count

EPC069-12 is a list of fields separated by line breaks, in a fixed order: a service tag of BCD, a version, a character set, the SCT identification code, then the BIC, the account holder name, the IBAN, the amount, a purpose code, a structured reference and finally an unstructured reference.

The order is the entire specification — there are no field names. A missing line does not omit a value, it shifts every value after it into the wrong slot, which is why a hand-built EPC code tends to fail in confusing ways. Optional fields are present as empty lines rather than left out.

Euro only, and inside SEPA only

The amount is written as EUR followed by the value to two decimal places. There is no other currency: the standard covers SEPA credit transfers, which are euro transfers, so a code for pounds or dollars is not a thing this format can express.

The IBAN must be a SEPA-area account. The scheme covers the EU plus a handful of others including the UK, Switzerland and Norway, and the whole payload is capped at 331 bytes, which is why the name field stops at 70 characters and the reference at 140.

The reference is what makes it worth doing

Put your invoice number in the reference. It arrives in your bank statement attached to the payment, which is the difference between reconciling accounts in minutes and chasing unmarked transfers around a ledger.

For a donation, a short campaign code in the same field tells you which poster or leaflet produced the payment — the closest thing to analytics you get on a bank transfer.

Support depends on the payer bank app

Scanning happens inside the banking app, not the camera. German and Austrian apps have supported GiroCode for years and it is widely recognised; elsewhere in the euro area, support varies bank by bank, and some apps scan it while others have no scanner at all.

So print the IBAN and reference as text alongside the code. The code is a convenience for people whose app supports it, not a replacement for the details everyone else still needs to type.

Common questions

What is a GiroCode?
The common name for an EPC QR code, mostly used in Germany and Austria. It is the same EPC069-12 format this generator produces: a pre-filled SEPA credit transfer that the payer scans inside their banking app.
Can a SEPA QR code be in a currency other than euro?
No. The standard covers SEPA credit transfers, which are euro transfers, so the amount field is always EUR. There is no way to express pounds or dollars in this format.
Which apps can scan an EPC QR code?
Banking apps, not the phone camera. Support is near universal in Germany and Austria and varies elsewhere in the euro area. Print the IBAN and reference as text as well, so anyone whose app cannot scan it can still pay.
Is the BIC required?
Not for transfers within the euro area, where the IBAN is sufficient and the field can be left empty. It is still accepted, and some banks outside the core SEPA zone prefer it, so include it if you have it.
Does the payment happen when the code is scanned?
No. Scanning fills in the transfer inside the payer banking app, and they authorise it themselves with whatever their bank requires. No money moves without them approving it.

Other generators

SEPA QR Code Generator — GiroCode Bank Transfer