Loading...

Free QR code generator

URL
Text
WiFi
vCard
Email
    Skip to content
    L2QLink2QR
    GeneratorGuidesBlogAPI
    1. Home
    2. EPC QR code
    Last Updated: September 2026

    EPC QR Code Generator for SEPA Bank Transfers

    Quick Answer

    Enter the name of whoever is being paid, their IBAN, and optionally an amount and a reference. The generator produces an EPC QR code, also called a GiroCode, that a European banking app can read to pre-fill a SEPA transfer. The IBAN is checked with the ISO 13616 mod-97 checksum before a code is produced, so a mistyped character is caught here rather than at the bank.

    Enter the name of the person or company being paid.

    Enter an IBAN.

    Payment reference
    More options

    Fill in a name and a valid IBAN and the code appears here.

    What goes into the code

    The payload is plain text: twelve lines in a fixed order, separated by line breaks. Nothing is encrypted and nothing is hidden, which is why any banking app that knows the format can read it without contacting a server.

    LineContentsNotes
    1BCDService tag, always the same
    2001 or 002Version. 002 allows the BIC to be left out
    31Character set, 1 means UTF-8
    4SCTSEPA Credit Transfer
    5BICOptional in version 002
    6NameUp to 70 characters
    7IBANValidated with mod-97 before the code is made
    8AmountEUR followed by the value, optional
    9PurposeFour-character code such as CHAR, optional
    10RF referenceISO 11649 structured reference, optional
    11Free textUp to 140 characters, used instead of line 10
    12NoteUp to 70 characters, optional

    A payload carries either the structured reference on line 10 or the free text on line 11, never both. Trailing empty lines may be dropped, which is why a minimal code is shorter than twelve lines.

    How the IBAN check works

    An IBAN carries its own checksum. Move the first four characters to the end, replace each letter with a two-digit number where A is 10 through Z is 35, read the result as one long number, and divide by 97. A valid IBAN always leaves a remainder of exactly 1. This catches a single mistyped or transposed character almost every time, which matters because a transfer to a valid but wrong IBAN is genuinely hard to reverse. This page also checks the IBAN length against the registered length for the country code.

    Where to use it

    • Invoices, so a customer does not retype a 22-character IBAN.
    • Donation letters and collection boxes for clubs and charities.
    • Membership renewal notices with a fixed amount and a reference.
    • Rent or utility statements where the same reference is used every month.

    Print at a size that survives a phone camera at arm's length. The print size calculator gives the minimum for a given scan distance, and the reliability audit grades a finished code before you commit it to a print run.

    A word on trust

    A payment code is worth tampering with. Anyone who replaces the code on a printed invoice redirects the money, and the payer has no way to see it. Print the payee name and IBAN in readable text next to the code so the payer can compare, and encourage them to check those details on the banking app screen before confirming. If you received an invoice with a code you did not expect, run it through the QR code safety checker first.

    Frequently Asked Questions

    What is an EPC QR code?

    An EPC QR code holds the details of a SEPA credit transfer: who is being paid, their IBAN, an optional amount and an optional reference. A banking app that supports the format reads the code and pre-fills a transfer form, so the payer does not have to type an IBAN by hand. The format is defined by the European Payments Council in guideline EPC069-12.

    Is a GiroCode the same thing?

    Yes. GiroCode is the name used in German-speaking markets for the same EPC QR code. A code generated here follows the published EPC specification, so it is the same payload either way.

    Which banking apps can read it?

    Support is widespread among banks in the SEPA area, particularly in Germany, Austria, the Netherlands, Belgium and Finland, but it is not universal and we have not tested every app. The honest answer is that this generator follows the published specification; whether a specific app reads it depends on that app. Test with your own banking app before printing a run of invoices.

    Does the code move any money by itself?

    No. The code only carries transfer details. Your banking app fills in a transfer form from those details and you still authorise the payment yourself, with whatever confirmation your bank normally requires. Link2QR never touches the payment.

    Should I use the structured RF reference or free text?

    Use the structured RF reference when the party being paid gave you one, because it is machine-readable and lets them match your payment to an invoice automatically. It carries its own check digits, and this page validates them. Use free text for everything else, such as a note on a donation.

    Why is there a byte limit?

    The EPC guideline caps the payload at 331 bytes so the resulting code stays reliably scannable. Accented and non-Latin characters take more than one byte each in UTF-8, so a long name with umlauts uses more of the budget than its character count suggests. The tool shows how much of the limit you have used.

    Does this expire or track scans?

    No. The code is static, which means the details are encoded directly in the pattern with no redirect through any server. It works for as long as the bank account exists, there is no scan limit, and we cannot see who scanned it.

    Link2QR only writes transfer details into the code. Your bank executes and verifies the payment. We are not affiliated with the European Payments Council.

    Sources

    • European Payments Council, EPC069-12, guidelines for enabling data capture for the initiation of a SEPA credit transfer.
    • ISO 13616, the IBAN standard, and ISO 7064 for the mod-97 check.
    • ISO 11649, structured creditor reference (the RF reference).
    © 2026 Link2QR
    AboutContactGuidesBlogPrivacyTermsEspañol中文