Skip to content

QR Platba: how the Czech payment QR code works

QR Platba is the Czech standard for payment QR codes, published by the Czech Banking Association as the Short Payment Descriptor (SPAYD). The code holds a short text with the payee's IBAN, the amount, the currency and the variable symbol. The payer's banking app reads it and fills in a payment order for the payer to check and confirm.

Updated: · By Stepan Talalayev

How a QR Platba string is built

The current version of the ČBA standard is 1.2, issued on 1 June 2021 and effective from 1 January 2022. A payment order starts with the header SPD* (short payment descriptor), then the protocol version, two numbers separated by a dot (1.0*). Each field follows as key:value*, so a value ends with an asterisk and may not contain one; an asterisk inside a value is written as %2A.

  • Keys are upper-case letters and hyphens. Keys that start with X- are the Czech extensions, such as the variable symbol.
  • The standard recommends using only 0–9, A–Z, space and $ % * + - . / : so that the QR code can use its compact alphanumeric mode.
  • For printed media the QR code should use error correction level M, which can restore 15 % of the code.
  • A string that starts with SCD* instead is a direct-debit authorisation, not a payment order.

The fields

QR Platba fields: the ones DigiTale Invoice writes and the common optional ones (ČBA standard 1.2, tables 1 and 2)
KeyMeaningFormatExampleWritten by DigiTale Invoice
ACCPayee's accountIBAN, optionally followed by + and the BIC; up to 46 characters. The only required fieldACC:CZ1755000000000125337002Yes, always (IBAN without BIC)
AMAmountDecimal number with a dot and at most 2 decimals, up to 10 characters (at most 9 999 999.99)AM:36179.00Yes, when the invoice total is above zero
CCCurrencyExactly 3 letters (ISO 4217). The standard currently allows only CZKCC:CZKYes, always: the invoice currency
X-VSVariable symbolWhole number, up to 10 digitsX-VS:20260142Yes, when filled in
X-KSConstant symbolWhole number, up to 10 digitsX-KS:0308Yes, when filled in
X-SSSpecific symbolWhole number, up to 10 digitsX-SS:1234567890No
MSGMessage for the payeeUp to 60 charactersMSG:PLATBA ZA ELEKTRINUNo (only the homepage sample has one)
DTDue dateExactly 8 digits, YYYYMMDD (ISO 8601)DT:20210430No
RNPayee's nameUp to 35 charactersRN:PETR DVORAKNo

Table 3 of the standard lists the fields that any bank in the Czech Republic can process for a domestic payment order: ACC (one account only), AM, CC (CZK only), DT, MSG, X-VS, X-SS and X-KS. Other fields, RN among them, are processed only by some banks.

A real QR Platba string, decoded

This is the exact text in the QR code on the sample invoice on the DigiTale Invoice homepage, for a CZK invoice with 21 % VAT. It points at DigiTale's own account, so its message asks you not to pay.

QR Platba payload of the sample invoice
SPD*1.0*ACC:CZ1755000000000125337002*AM:36179.00*CC:CZK*X-VS:20260142*MSG:UKAZKA - NEPLATIT / SAMPLE - DO NOT PAY
The sample string, part by part
PartValueWhat it means
SPDSPDHeader: a QR Platba payment order
Version1.0Protocol version
ACCCZ1755000000000125337002IBAN of account 125337002/5500
AM36179.00Amount: 36 179,00 Kč
CCCZKCurrency
X-VS20260142Variable symbol, from invoice number 2026-0142
MSGUKAZKA - NEPLATIT / SAMPLE - DO NOT PAYMessage for the payee

QR Platba, QR Faktura and the EPC (SEPA) QR code

Payment and invoice QR codes used on Czech invoices
StandardPublished byWhat the code carriesOn DigiTale invoices
QR Platba (SPAYD)Czech Banking AssociationPayment details for a CZK payment order; starts with SPD*CZK invoices with a bank account
QR FakturaChamber of Tax Advisers of the Czech Republic, presented with the Financial Administration on 14 June 2016Basic accounting data from the invoice, such as its number, issue and due dates, DUZP, tax base and VAT. It can be combined with QR Platba so the invoice has a single codeNot written
EPC QR code (EPC069-12)European Payments CouncilData for a SEPA credit transfer in euros; starts with BCDEUR invoices that have an IBAN and the supplier's name

The EPC guideline (version 3.1, issued and effective 19 March 2024) is informative, and implementing it is optional for payment service providers, so whether a code scans depends on the payer's bank. Its main lines are the service tag BCD, the version (001 or 002), the character set, the code SCT, the BIC (optional in version 002 within the EEA), the beneficiary's name of up to 70 characters, the IBAN, an amount in euros from 0.01 to 999999999.99, a purpose code, and a reference: structured (up to 35 characters) or free text (up to 140).

Which banking apps read QR Platba

The QR Platba project site lists the banks that support the format, among them Česká spořitelna, ČSOB, Komerční banka, Fio banka, Air Bank, Raiffeisenbank and MONETA Money Bank. The EPC code is a different matter: support for it is optional, so check with your client's bank if they pay in euros.

How DigiTale Invoice writes the code

  • An invoice gets a code when the payment method is a bank transfer, payment details are switched on and the QR option is on.
  • EUR invoices with an IBAN and your company name get the EPC code: version 002, UTF-8, your BIC if you entered one, your name cut to 70 characters, and the variable symbol in the reference line meant for a structured creditor reference.
  • Every other invoice gets QR Platba: SPD*1.0*, then ACC, AM with two decimals, CC, and X-VS and X-KS when you fill them in. It writes no MSG, DT or RN.
  • The QR Platba standard allows only CZK in CC. DigiTale Invoice writes the invoice's own currency there, so on an invoice in another currency a bank may reject the code; for those, rely on the bank details printed on the invoice.
  • The QR code is generated with error correction level M, as the ČBA standard recommends for print.

How the IBAN is calculated from a Czech account number

A Czech IBAN has 24 characters: CZ, two check digits, and 20 digits made of the bank code and the account number, as the Czech National Bank describes. If you leave the IBAN field empty, DigiTale Invoice builds it for the QR code from your account number and bank code:

  1. Pad the bank code to 4 digits, the account prefix (the part before the hyphen, 0 if there is none) to 6 digits and the account number to 10 digits, all with leading zeros.
  2. Join them into a 20-digit number: bank code, prefix, account number.
  3. Append 123500, which stands for the letters CZ (C = 12, Z = 35) followed by 00, and take the remainder after dividing by 97.
  4. The check digits are 98 minus that remainder, written with two digits. The IBAN is CZ, the check digits and the 20-digit number.
Czech account numbers and their IBAN (the first two are the Czech National Bank's examples)
Account numberIBAN
19-2000145399/0800CZ65 0800 0000 1920 0014 5399
178124-4159/0710CZ69 0710 1781 2400 0000 4159
125337002/5500CZ17 5500 0000 0001 2533 7002

The calculated IBAN only goes into the QR code. The invoice prints your account number and bank code, and the IBAN only if you typed it in; an IBAN you type is used in the code as typed, without spaces.

Enter your account number and bank code, and the code is added to the PDF.Create an invoice with a QR code

This guide explains the rules in general terms. It isn't tax or legal advice; for your own situation, ask a tax adviser.

Sources

  1. Czech Banking Association (ČBA): Format for sharing payment information in CZK – QR codes (checked )
  2. ČBA standard, version 1.2 (June 2021, effective 1 January 2022), PDF in Czech (checked )
  3. European Payments Council: EPC069-12 version 3.1, Quick Response Code guidelines (PDF) (checked )
  4. Chamber of Tax Advisers of the Czech Republic (KDP ČR): QR Faktura (checked )
  5. Czech National Bank: IBAN, the international account number format (checked )
  6. qr-platba.cz: QR Platba project site, list of supporting banks (checked )
  • What a Czech invoice must contain

    What a Czech invoice must contain under § 29 of the VAT Act and § 435 of the Civil Code, with DUZP, VAT rates, numbering, due dates and how long to keep invoices.

  • SEPA QR code on invoices: how the EPC QR code works

    What the SEPA (EPC) QR code on an invoice is, every field of EPC069-12 with what DigiTale Invoice writes, a decoded example, the BIC rule, euro-only use and how it differs from QR Platba.

Create an invoice that has all of this

DigiTale Invoice is free and needs no account. Fill in the form and download a PDF with a payment QR code.

Create invoice