Invoicing · 7 min read
GiroCode on Invoices: Let Clients Pay by Scanning, the Right Way
A German IBAN has 22 characters, and on top of that come the payee name, the amount and the invoice number. Anyone typing all that into a banking app by hand makes mistakes, and you end up waiting for money that is misallocated or never arrives. A GiroCode on the invoice solves this: the client scans the QR code with their banking app, and the transfer is filled in.
This guide explains what a GiroCode contains, which rules the standard sets, what has changed with Verification of Payee for credit transfers, and how to create a code that works reliably. It is based on the European Payments Council guidelines EPC069-12, version 3.1, and EU Regulation 2024/886. Status: October 2026.
What a GiroCode is
GiroCode is the name commonly used in Germany for the EPC QR code. The European Payments Council has published guidelines (EPC069-12) that define how the data of a SEPA credit transfer is stored in a QR code. Banking apps read the code and use it to fill in the transfer form. A GiroCode does not trigger a payment; the client checks the details and authorises the transfer as usual.
The EPC explicitly describes the code for situations such as invoices, where the same payment details also appear in plain text. That lets the payer check that the code matches what is printed on the paper. A GiroCode therefore does not replace the bank details on the invoice; it complements them.
What the code contains
The content is plain text in fixed lines: a service tag (BCD), the version, the character set, the identifier SCT for SEPA Credit Transfer, the BIC, the payee name (up to 70 characters), the IBAN, optionally the amount in euro (from 0.01 to 999,999,999.99), an optional four-character purpose code, and the remittance information, either as a structured reference (up to 35 characters) or as free text (up to 140 characters). A final line may carry a note to the payer.
In version 002 the BIC is optional as long as both banks are in the European Economic Area; for scheme participants outside the EEA it remains mandatory. The guidelines specify error correction level M and limit the payload to 331 bytes.
Toolula's generator fills in the free-text variant of the remittance information. That suits most invoices, because the invoice number in the free text is what you need to match the incoming payment.
- Mandatory: payee name (max. 70 characters) and IBAN
- Optional: BIC (within the EEA), amount, purpose code
- Remittance: reference (35) or free text (140 characters)
- Error correction M, at most 331 bytes
Verification of Payee: the name has to match
Since 9 October 2025, EU Regulation 2024/886 has required payment service providers in euro-area member states to offer Verification of Payee (VoP) for credit transfers. Before the payer authorises a transfer, their bank checks the IBAN and the payee name with the payee's bank. If they do not match, the payer is warned that the money could end up with a different account holder. If the name almost matches, the bank shows the payer the actual account holder's name.
The payer can still authorise the transfer. A warning does put people off, though, and leads to queries or delays. So enter the name in the GiroCode exactly as your bank holds it for the account: for companies the full legal name, such as Muster GmbH, rather than a brand name, and for sole traders usually your own first and last name.
Creating a GiroCode and putting it on the invoice
In Toolula's GiroCode Generator, the SEPA / GiroCode mode is already selected. Fill in Recipient, IBAN, BIC (optional), Amount (EUR, optional), Reference / purpose text and Purpose code (optional). The IBAN is checked against its checksum as you type; if it is invalid, you see This IBAN looks invalid — check the digits. Put the invoice number in the reference so you can match the payment. Most invoice senders leave the purpose code empty.
Download the code as PNG, as SVG for print at any size, or as WebP. Keep it plain: a dark code on a light background, no logo in the middle. With a logo the generator forces the highest error correction level, H, whereas the guidelines specify M. Pay attention to the generator's contrast indicator.
If you write your invoices with Toolula's Invoice Generator, it is even quicker. Under Payment details, enter the IBAN and Account holder / beneficiary name (legal name) and switch on EPC GiroCode (SEPA payment QR). The code appears on the document with the invoice total and the caption Scan to pay; without an account holder name the tool deliberately does not create a code.
Testing, and guarding against misuse
Scan every new code once with your own banking app before it is printed on hundreds of invoices, then cancel the transfer. Check the name, IBAN, amount and reference. Alternatively, Toolula's QR scanner shows the content of a payment code directly.
QR codes on invoices are also a target for fraudsters, for example when fake invoices with a different IBAN are sent out. For your clients, Verification of Payee is an important safeguard here. If your bank details change, ask clients to confirm the new details through a second channel, and when you receive invoices yourself, compare the QR code with the plain text.
Frequently asked questions
Is a GiroCode the same as an e-invoice?
No. A GiroCode only pre-fills a bank transfer. An e-invoice such as XRechnung or ZUGFeRD carries the whole invoice as structured data. A GiroCode can appear on either kind of invoice.
Do I need to include the BIC?
Not in the current version 002, as long as payer and payee use banks in the European Economic Area. For banks in non-EEA countries the BIC remains mandatory.
Why does my client's banking app warn about the payee?
Most likely the name in the code does not match the account holder registered with your bank. Since October 2025, banks in the euro area check name and IBAN before every transfer. Enter the legal name exactly as your bank holds it.
Can I leave out the amount?
Yes, the amount is optional. For donations or partial payments leave it empty, and the payer types it in. On an invoice with a fixed amount you should include it.
Are my bank details uploaded?
No. The code is generated in your browser on your own device; the IBAN and payee name are not transmitted.
