Free Tool Desk

Guide

European Payment QR Codes Compared

Last updated October 7, 2026

A payment QR code on an invoice saves the payer from typing an IBAN, but there is no single European format. Four national or regional standards are common, they look alike and they are not interchangeable: a banking app that reads one usually ignores the others. This guide compares them so you can choose the right one for your customers.

EPC QR code (GiroCode)

Defined by the European Payments Council (guideline EPC069-12), it carries a SEPA credit transfer in euro: service tag BCD, version, character set, identification SCT, optional BIC, beneficiary name (up to 70 characters), IBAN, amount in the form EUR12.34, purpose code, a structured creditor reference or an unstructured text (not both), and a note. It is plain text in a QR code of error correction level M with a limit of 331 bytes. Banking apps in Germany, Austria, the Netherlands, Belgium, Finland and several other countries read it, and it is called GiroCode in the German-speaking world. Use the EPC QR generator to create one and the EPC QR reader to inspect one.

SPAYD, the Czech QR platba

The Czech Banking Association's format starts with SPD*1.0* and lists attributes such as ACC (IBAN, optionally with BIC), AM (amount), CC (currency), MSG (message, up to 60 characters), RN (recipient name, up to 35) and the Czech extensions X-VS, X-SS and X-KS for the variable, specific and constant symbols, each up to ten digits. Characters outside printable ASCII, and the asterisk and percent sign, are percent-encoded. Czech banking apps read it, and it is usually printed at 30 mm or more.

PAY by square, the Slovak standard

The Slovak Banking Association's format is built differently: the data fields are joined with tabs, a CRC32 checksum is added, the result is compressed with LZMA, given a small header and encoded in Base32hex, which is what goes into the QR code. The current specification, 1.2.0, makes the beneficiary name mandatory and limits the data to 550 characters. It also requires the PAY by square logo to accompany the code. Slovak banking apps read it; Czech apps read SPAYD instead.

Swiss QR-bill

The Swiss payment part is a QR code with the Swiss cross that starts with SPC and carries account, creditor and debtor addresses, amount, currency, reference type (QR reference with a QR-IBAN, ISO 11649 creditor reference, or none) and additional information, printed in a fixed layout with a receipt. The rules are in the SIX Implementation Guidelines, whose version 2.4 applies from 14 November 2026. See the Swiss QR-bill data guide, and create one with the Swiss QR-Bill Generator.

Which one to print

  • Customers in Switzerland and Liechtenstein: the Swiss QR-bill, which banks there expect.
  • Customers in Czechia: SPAYD. Customers in Slovakia: PAY by square. The QR Platba & PAY by square Generator makes both.
  • Euro payments between countries that read it: the EPC QR code.
  • If you serve several markets, print the code for the payer's country on the invoice for that country; do not expect one code to work everywhere.

Always test

A code that follows its specification can still be handled differently by a particular banking app, for example with diacritics, long messages or symbols. Scan the invoice with the app your customers use before you send it, and check amounts and the account against your own records.