GiroCode: a QR code that fills in a bank transfer

A GiroCode carries the recipient, the IBAN, the amount and the reference, so a banking app opens with the transfer already filled out and the payer only confirms.

Create a GiroCode

EPC069-12, validated IBAN

Editorial teamLast reviewed: 29 October 2026Editorial standards

Short answer

A GiroCode is a QR code holding an EPC069-12 payload: recipient name, IBAN, amount, currency and purpose. Banking apps in Germany, Austria and a few other European countries read it. It moves no money by itself, it only fills in the form.

The format exists because typing an IBAN is the step where transfers go wrong. Twenty-two characters, no checksum a human can verify, and a single transposed digit sends money to a stranger.

The code removes that step. It is worth knowing what it does and does not do before printing it on an invoice.

What the code contains

The payload follows the EPC guideline for the QR code on credit transfer forms. It starts with a service tag and a version, then carries the character set, the transfer type, the recipient name, the IBAN, and optionally the amount, the purpose text and a remittance reference.

Two details trip people up. The recipient name is limited to 70 characters, and the IBAN has to be written without spaces. An amount with a comma instead of a full stop makes the payload invalid in some apps rather than merely unusual.

  • IBAN without spaces, uppercased
  • Amount with a full stop and two decimals, or omitted entirely so the payer chooses
  • Purpose text free but short, it appears on both statements
  • No card numbers, no direct debit mandates, this is a credit transfer only

Where it works and where it does not

The format is a German and Austrian habit more than a European standard in daily use. Banking apps from those countries typically offer a scan button inside the transfer screen. Elsewhere in Europe the same payload may be ignored, and a payer who cannot scan it is left reading the IBAN off the invoice as before.

That means a GiroCode on an invoice is a convenience for the part of the audience whose bank supports it, and it does not remove the need to print the IBAN in text. Print both, always.

What the recipient has to do

The other side of a GiroCode is ordinary bank reconciliation. The payment arrives as a normal credit transfer, and the only thing that ties it to an invoice is the purpose text you put into the code. If that text is generic, the payment arrives and nobody knows what it was for.

So write the invoice number into the purpose field, keep it short enough to survive the bank statement, and match it in your own accounting. A code that is easy to pay but impossible to reconcile has moved the work, not removed it.

Static or dynamic

A code with a fixed amount suits one invoice, one event ticket, one collection. A code without an amount suits a donation box or a shop counter, where the payer types the sum.

Consider carefully before putting a redirect in front of a payment code. The reader sees a bank transfer form, not a web page, and a provider between the scan and the payload can change the IBAN. Static, printed, checked once is the safer construction.

Questions about GiroCodes

Does the GiroCode transfer money by itself?

No. It opens the transfer form in the banking app with the fields filled in. The payer still reviews and confirms, which is also the point: nothing leaves the account through a scan alone.

Which apps can read it?

Most German and Austrian banking apps include a scan function in the transfer screen. Many general scanner apps read the payload as text but cannot pass it into a bank form.

Should the amount be included?

Include it for an invoice or a fixed price, leave it out for donations and open amounts. A wrong fixed amount is worse than no amount.

Does the recipient need a special bank account?

No. The money arrives as an ordinary SEPA credit transfer. What differs is only the way the payer fills in the form.

Is a GiroCode safe?

The format itself is sound. The risk is a printed code that was never checked: verify the IBAN and name by scanning the finished artwork, because a reader has no way to spot a wrong digit.