EPC / SEPA QR Code Generator
Generate an EPC/SEPA payment QR code from structured beneficiary and bank-transfer information.
This generator keeps the GS1 Digital Link URI directly inside the QR code. Premium QR dynamic redirects are not used for GS1 Digital Link codes.
Advanced Customization
Colors & Gradients
Logo & Social Icon
QR Code Size
EPC / SEPA QR Code Generator
Quick answer: An EPC QR code — also called a GiroCode — encodes a SEPA Credit Transfer in a 12-line payload defined by European Payments Council document EPC069-12 v3. 1. Scanning it pre-fills the transfer in a compatible banking app. The code must use error correction level M and must not exceed 331 bytes.
How to create an EPC SEPA QR code
- Enter the beneficiary name as it appears on the bank account — up to 70 characters, mandatory.
- Enter the beneficiary IBAN in the standard format (e.g. DE71 1102 2033 0123 4567 89) — mandatory.
- Enter the BIC of the beneficiary's bank if you are using EPC069-12 version 001, or leave it empty for version 002 (BIC is optional in version 002, which covers almost all modern SEPA transactions).
- Enter the EUR amount if applicable. Prefix the value with EUR followed immediately by the amount with no space: EUR12.30.
- Enter either a structured creditor reference (ISO 11649 format, beginning with RF) or an unstructured remittance reference — not both. These fields are mutually exclusive.
- Verify that the resulting payload stays within the 331-byte limit. The generator should indicate if the limit is exceeded.
- Scan the generated code with a compatible banking app to confirm the beneficiary and amount before downloading.
- Export PNG, SVG, WEBP or JPG at up to 4096 px. Do not change the error correction level from M.
The QR code is generated in your browser. Nothing you enter is sent to a server.
What an EPC QR code is
An EPC QR code is a SEPA Credit Transfer initiation payload encoded as a QR code. It is defined by the European Payments Council (EPC) in document EPC069-12, currently at version 3.1 dated 19 March 2024. In German-speaking countries — Germany, Austria and Switzerland — the format is widely known as GiroCode. The terms EPC QR and GiroCode refer to the same specification.
SEPA — Single Euro Payments Area — is the European payment network that enables cross-border EUR bank transfers at the same cost as domestic transfers. An EPC QR code automates the data-entry step: the payer scans the code in a compatible banking app and the IBAN, beneficiary name, amount, and reference are pre-filled.
The generator on this page encodes a static text payload and exports a QR symbol. It does not connect to any bank, validate IBAN checksums against live account data, or guarantee that a transfer will be completed. Encoding accuracy is the user's responsibility. Verify the IBAN, beneficiary name, and amount by scanning the code with the actual target banking app before printing at volume.
EPC payload structure
The 12-line field order
The EPC069-12 specification defines an exact 12-line text payload. Each line is a distinct field. Fields are separated by a line feed (LF) or carriage-return line feed (CRLF). The last populated field has no trailing separator.
| Line | Field | Required | Constraints |
|---|---|---|---|
| 1 | Service tag | Yes (fixed) | BCD — always this literal value |
| 2 | Version | Yes | 001 or 002 |
| 3 | Character set | Yes | 1 (UTF-8) or 2 (ISO 8859-1) |
| 4 | Identification code | Yes (fixed) | SCT — always this literal value |
| 5 | BIC of beneficiary bank | Version 001 | 8 or 11 character BIC; optional in version 002 |
| 6 | Beneficiary name | Yes | Maximum 70 characters |
| 7 | Beneficiary IBAN | Yes | IBAN of the payment recipient |
| 8 | Amount | No | EUR prefix + decimal value, e.g. EUR12.30; omit line for variable |
| 9 | Purpose code | No | 4-character ISO 20022 purpose code, e.g. GDDS |
| 10 | Structured creditor reference | No | ISO 11649 format, beginning with RF |
| 11 | Unstructured remittance info | No | Maximum 140 characters; mutually exclusive with line 10 |
| 12 | Beneficiary-to-originator info | No | Maximum 70 characters |
Lines 10 and 11 are mutually exclusive. Populating both a structured reference and an unstructured reference in the same payload is outside the EPC069-12 specification.
Version 001 vs version 002
Version 001 of EPC069-12 requires the BIC of the beneficiary bank in line 5. Version 002 makes the BIC optional. Almost all EPC QR codes in current use are version 002, because SEPA bank routing works reliably from the IBAN alone for all domestic and cross-border SEPA transactions within the SEPA zone.
If the beneficiary bank is not within the SEPA zone, or if a specific app requires the BIC, enter it in line 5 and set the version to 001.
Payload limits and error correction
The EPC069-12 specification sets a maximum payload of 331 bytes. This corresponds to the capacity of QR Code version 13 at error correction level M (the mandatory level for this format).
Error correction level M recovers approximately 15 percent of damaged codewords. The EPC069-12 specification mandates level M. Using level H or level L renders the code non-conformant with EPC069-12. Do not change the error correction level.
The Swiss QR-bill guidance (SIX Group) cites a minimum module size of 0.4 mm as adjacent technical guidance for payment QR codes printed on paper. This is from the Swiss QR-bill specification — not from the EPC069-12 document itself — but it is relevant for anyone printing EPC codes on invoices and wanting a reliable read distance. The four-module quiet zone from ISO/IEC 18004:2015 applies regardless.
Worked example
For a donation to a charity named "Franz Mustermänn" at Deutsche Bank:
BCD 002 1 SCT BHBLDEHHXXX Franz Mustermänn DE71110220330123456789 EUR12.30Donation – Project Green
Lines 9, 10, and 12 are left empty (not omitted — each empty line is a field placeholder). Line 11 carries the unstructured remittance string. The double LF between lines 8 and 11 represents the empty purpose code (line 9) and empty structured reference (line 10).
When to use an EPC QR code
Printed invoices. An EPC QR code in the payment section of a paper invoice allows the recipient to initiate the SEPA transfer in their banking app without typing the IBAN, beneficiary name, or reference manually. Manual entry is the leading source of wrong-account payments.
Fundraising materials. Charities and non-profits in the SEPA zone print EPC codes on appeal letters and donation slips. The code removes the friction of bank transfer setup for donors who might otherwise choose a card payment instead.
Rent and recurring payments. A landlord or service provider can print an EPC code on a payment request with the correct reference pre-filled. The structured creditor reference (ISO 11649) ensures the payment can be automatically reconciled against the correct account.
Event tickets and point-of-sale. Some European point-of-sale systems display an EPC QR code as a payment option alongside card readers. This is app-dependent and requires the payer's banking app to support EPC scanning.
Design and print requirements
Maintain a four-module quiet zone on all sides, as specified in ISO/IEC 18004:2015 section 6.3.3.
Print at a minimum of 2 cm by 2 cm for close-range scanning. The Swiss QR-bill adjacent guidance references a 0.4 mm module-size floor, which translates to approximately 2.7 cm at version 13 with all 67 modules across. If you are reproducing the code on a formal invoice and want to follow SIX Group recommendations in addition to EPC069-12, use 2.7 cm or larger.
Do not change the error correction level from M. The EPC069-12 specification is explicit on this point. Level M is not negotiable in a conformant EPC QR code.
Maintain strong dark-on-light contrast. Low-contrast printing is the most common cause of scan failure in indoor banking environments where ambient lighting varies.
If you embed a logo, the logo reduces the effectively readable area. Because the error correction level is fixed at M (approximately 15 percent recovery), a logo occupying more than 10 to 15 percent of the code area risks crossing the correction threshold. The safe approach is to not embed a logo in an EPC QR code.
Troubleshooting: why your EPC QR code is not scanning
The banking app does not support EPC QR scanning. Not all banking apps in the SEPA zone implement EPC QR scanning. Support varies by country and by bank. Confirm with the intended recipient that their banking app supports EPC QR before printing at volume.
The payload exceeds 331 bytes. Long IBAN, long beneficiary name, and a full remittance string can approach the limit. Shorten the unstructured remittance to fewer than 140 characters and ensure the beneficiary name is 70 characters or fewer.
Both a structured and an unstructured reference are present. Lines 10 and 11 are mutually exclusive per EPC069-12. Remove one of them.
The BIC is in the wrong field for the selected version. If version 001 is selected, the BIC in line 5 is mandatory. If version 002 is selected, line 5 may be empty. A mismatch causes some banking apps to reject the payload.
The amount format is wrong. The amount must begin with EUR followed immediately by a decimal value with no space: EUR12.30 not EUR 12.30 and not €12.30.
The module contrast is too low on print. Test the printed code with multiple banking apps before distributing the invoice. Not all apps have the same scanner sensitivity.
EPC QR versus other payment QR standards
| Feature | EPC QR (SEPA) | UPI QR (India) | PIX QR (Brazil) |
|---|---|---|---|
| Governing body | European Payments Council | NPCI | Banco Central do Brasil |
| Standard document | EPC069-12 v3.1 (March 2024) | NPCI UPI Product Overview | BCB BR Code Manual v2.0 |
| Currency | EUR only | INR only | BRL |
| Error correction | Level M mandatory | No mandate stated | No mandate stated |
| Payload limit | 331 bytes | Not specified in research | Not specified in research |
| Structured reference | Yes (ISO 11649, RF format) | tr field | TXID field |
| Checksum in payload | No | No | Yes — CRC-16/CCITT-FALSE |
What this EPC QR Code Generator gives you
This browser-based tool creates a structured EPC payment payload for a SEPA euro credit transfer, often called a GiroCode. It is designed for euro invoices, donation forms, membership fees and cross-border SEPA payment instructions. The live preview updates while you edit, which makes it easier to catch a missing field or an unexpectedly dense symbol before download.
You can adjust matrix patterns, finder-eye styles, foreground and background colours, gradients, frames, size and an optional logo. Exports are available as SVG, PNG, WEBP and JPG at 512, 1024, 2048 or 4096 pixels. SVG is the practical choice for professional print. A high-resolution PNG suits office documents and digital artwork.
The static payload is constructed in your browser. The information entered into the generator does not need to be uploaded to create the QR image. The beneficiary IBAN, amount and remittance data must be checked carefully, and the receiving bank must support the encoded EPC specification.
Using this QR code in Bahrain and abroad
Bahrain is outside SEPA, so this tool is relevant when a Bahrain-based person or business legitimately uses a SEPA-capable euro account for a European payment.
Use British English spelling in customer-facing copy when that matches your organisation’s house style, and provide Arabic wording where the audience expects it. Keep the action after scanning obvious. A short line beside the symbol such as “Scan to save the contact” or “Scan to open the location” gives people confidence before they point their camera.
Test the final design on current iPhone and Android devices. Test it again after printing on the actual paper, sticker, card, sign or packaging material. Bahrain’s bright outdoor light can expose glare and low-contrast problems that are less obvious on a computer screen. For international use, confirm country codes, currencies, time zones, regional app availability and payment-network compatibility.
Before you publish
- Correct QR payload type
- Complete and verified data
- Four-module quiet zone
- Strong foreground contrast
- Proportional square scaling
- Logo kept within safe limits
- SVG or high-resolution PNG
- Final-size device scan test
Frequently asked questions
Open a question to read a concise technical answer.
01What is an EPC QR code?+
An EPC QR code is a SEPA Credit Transfer payment initiation payload encoded as a QR code. It is defined by European Payments Council document EPC069-12, currently version 3.1 (March 2024). Scanning it pre-fills the IBAN, beneficiary name, amount, and payment reference in a compatible banking app. In German-speaking countries it is also called GiroCode.
02What is the difference between GiroCode and an EPC QR code?+
GiroCode and EPC QR code refer to the same format. GiroCode is the commercial name commonly used in Germany, Austria, and Switzerland. EPC QR code is the technical name used in the European Payments Council document EPC069-12. Both describe the same 12-line SEPA Credit Transfer payload.
03Does a SEPA QR code require a BIC?+
It depends on the version. In EPC069-12 version 001, the BIC is mandatory. In version 002, the BIC is optional. Almost all modern SEPA QR codes use version 002, because the IBAN alone is sufficient for routing within the SEPA zone. Include the BIC if the beneficiary bank requires it or if you are creating a version 001 code.
04What error correction level does a SEPA QR code use?+
Error correction level M is mandatory per EPC069-12. Level M recovers approximately 15 percent of damaged codewords. Using level H or level L renders the code non-conformant with the EPC specification. Do not change this setting.
05What is the maximum payload size for an EPC QR code?+
The EPC069-12 specification sets a maximum of 331 bytes. This corresponds to the capacity of QR Code version 13 at error correction level M. Exceeding this limit produces a non-conformant code. Long beneficiary names, long unstructured remittance strings, or both together are the most common causes of exceeding the limit.
06Can I include both a structured and an unstructured reference in an EPC QR code?+
No. Lines 10 and 11 of the EPC payload are mutually exclusive per EPC069-12. Line 10 carries a structured creditor reference in ISO 11649 format (beginning with RF). Line 11 carries an unstructured remittance string of up to 140 characters. Only one of these lines may be populated in a single payload.
07What is a structured creditor reference in an EPC QR code?+
The structured creditor reference in line 10 follows the ISO 11649 Creditor Reference standard. It begins with RF followed by a two-digit check digit and up to 21 alphanumeric characters. An ISO 11649 reference enables automated reconciliation in the beneficiary's accounts receivable system. If you do not have an ISO 11649 reference, use the unstructured remittance field in line 11 instead.
08How do I enter the EUR amount in an EPC QR code?+
Type EUR followed immediately by the decimal amount with no space: EUR12.30 for twelve euros and thirty cents. EUR is the literal prefix required by EPC069-12. Using a euro symbol, a space, or a comma as the decimal separator will cause the field to be rejected by some banking apps.
09What apps can scan an EPC QR code?+
Support varies by country and by bank. Many European retail banking apps — particularly in Germany, Austria, Switzerland, Belgium, and the Netherlands — support EPC QR scanning. Confirm with the intended recipient that their banking app supports EPC QR before printing at volume. There is no single universal app requirement in the EPC069-12 standard itself.
10What is the module size minimum for printing an EPC QR code?+
ISO/IEC 18004:2015 requires a four-module quiet zone. The Swiss QR-bill guidance from SIX Group cites a minimum module size of 0.4 mm, translating to approximately 2.7 cm for a version 13 code at the mandatory error correction level M. This SIX Group figure is adjacent guidance, not part of EPC069-12, but it is the most commonly cited print floor for invoice-grade EPC codes.