Skip to content

SEPA Payment QR Code Generator

Put a pre-filled bank transfer on your invoice. Scanning opens the customer's banking app with your name, IBAN, amount and reference already entered — they review and authorise, and the invoice number comes back attached to the payment.

Make one now

1

Add your content

This is what gets encoded — nothing is sent anywhere.

A GiroCode, the European EPC standard used on invoices. Scanning it in a banking app pre-fills a SEPA transfer — the customer still confirms and authorises it. Nothing is sent anywhere by the code itself.

2

Customise

Optional. Every change is re-checked against a real decoder.

Start from a look
ShapesNew
Base colour

Anything below that you leave alone follows this.

Body
Body fill
External eye
External eye fill
Internal eye
Internal eye fill
Background
Background fill

Or start from one of 93 ready-made designs

How to make a SEPA payment QR code

  1. 1

    Enter the recipient name

    Exactly as the account is held, or the bank may query the transfer.

  2. 2

    Enter the IBAN

    Spaces are fine — they are stripped automatically. Check it twice; nothing here validates it against a real account.

  3. 3

    Add the amount and reference

    The invoice number in the reference is what makes reconciliation automatic.

  4. 4

    Print it on the invoice

    Near the total, where someone looking for the amount will already be looking.

On this page

What a GiroCode actually is

A short block of text in the EPC069-12 format, defined by the European Payments Council. Nothing proprietary, nothing that belongs to a bank:

BCD
002
1
SCT

Example GmbH
DE89370400440532013000
EUR49.90

Invoice 2026-014

Recipient, IBAN, currency and amount, reference. The banking app recognises theBCD header, reads the fields and opens a transfer form with them in place.

GiroCode and EPC QR are the same thing. GiroCode is simply what the German banking industry called it when it launched the scheme.

It fills a form. It does not pay anything.

Worth being explicit, because it is the first question every customer asks. Scanning opens a transfer the customer has not yet made. They see the recipient, the amount and the reference, and they authorise it the same way they authorise any other transfer — with whatever their bank demands, be that a TAN, an app confirmation or a fingerprint.

The code removes the typing, not the decision. Which is the entire value: an IBAN is 22 characters of alternating letters and digits, and typing one from paper is where payments go wrong.

The reference field is the point

If you print one thing correctly, print the reference. Your invoice number arriving attached to the payment is what turns reconciliation from reading a bank statement into a filter.

Keep it to the invoice number. A reference that reads"Invoice 2026-014" matches cleanly; one that reads"Payment for the kitchen work from March, thanks" matches nothing, because the customer will edit it and every customer will edit it differently.

Where support actually exists

This is a European standard, and its coverage is uneven:

  • Germany and Austria — near universal. Most invoice templates already have a slot for it.
  • Netherlands and Finland — widely supported.
  • Rest of the euro area — varies by bank; worth testing with your own before printing a run.
  • Outside SEPA — no. The format has no meaning to a bank that does not do SEPA transfers.

If most of your customers are outside that footprint, a payment link on the invoice will do more good than a code most of them cannot use.

Check the IBAN twice

Nothing in this tool validates your IBAN against a real account, because nothing in this tool talks to a bank — the code is built in your browser from exactly what you typed. A transposed digit produces a perfectly valid-looking code that sends money to a rejected transfer, or worse, to somebody else.

Generate it, scan it with your own banking app, and read the recipient back before it goes to print.

Where to put it on the invoice

Near the total. That is where someone looking for the amount is already looking, and it is where the eye goes when the invoice is being paid rather than filed. Label it — "Scan to pay" — because a bare square on a bill is exactly the kind of thing a careful person will not scan.

Common questions

Does scanning move the money?

No. The code fills in a transfer form inside the banking app — recipient, IBAN, amount, reference — and stops. The customer still reviews it and authorises it with whatever their bank requires. A QR code cannot move money, and this one is no exception.

Which banking apps support it?

Those that implement the EPC standard, which is most German and Austrian banks and a good share of Dutch and Finnish ones. Support elsewhere in the euro area is patchy. Outside it, effectively none — this is a European standard, not a global one.

Is this the same as a GiroCode?

Yes. GiroCode is the German name for the EPC QR standard, and the two terms describe the same code. If your invoice template calls it a GiroCode, this is what it wants.

What goes in the reference field?

Your invoice number, and nothing else if you can help it. It is what lets you match the incoming payment to the invoice without reading a bank statement by hand — which is most of the reason to print one of these at all.

Can I leave the amount blank?

Yes, and it is sometimes right — a donation code, or an account where people pay what they owe. The banking app opens the form with everything else filled in and the amount waiting. For an invoice, fill it in: an amount someone has to type is an amount someone gets wrong.

Other QR codes you can make