← User guide

Czech and Slovak Payment QR Codes — Common Base

What the Czech and Slovak payment QR codes on invoices have in common — switching them on, how the format is chosen for each invoice, and the branded frame.

Version19.0.1.1.1
EditionCommunity and Enterprise
LicenceAGPL-3
Requiresaccount, base
Extended byaccount_qr_code_pay_by_square_sk, account_qr_code_payme_sk, account_qr_code_qr_platba_cz

What it is for

Odoo can print a payment QR code on a customer invoice. The customer scans it in their banking app and gets a payment order with the account, amount and payment details already filled in. Each country has its own format:

Format Country Module
QR Platba (Short Payment Descriptor) Czech Republic account_qr_code_qr_platba_cz
PAY by square Slovakia account_qr_code_pay_by_square_sk
payme Slovakia account_qr_code_payme_sk
SEPA Credit Transfer QR (EPC) euro area Odoo's own, installed with Accounting

This module is what the three national formats share. It is installed with any of them and has no settings. It:

Switching QR codes on

  1. Accounting → Configuration → Settings, block Customer Payments: tick QR Codes.
  2. Install the format module(s) you need.
  3. Make sure the bank account the customer should pay to is entered in IBAN form and has an Account Holder Name (or belongs to a contact with a name). A Czech domestic account number such as 123-4567890/0100 is not enough; enter its IBAN. This is the account shown as Recipient Bank on the invoice.

The code is printed on the PDF invoice as long as the invoice has an open amount, and it is for the amount still open, so a partly paid invoice asks only for the rest. A fully paid invoice prints no code.

With l10n_cssk_payment_symbols installed, the invoice's variable, constant and specific symbols are passed to the code as separate values; each format module describes where they end up.

Which format an invoice gets

The Payment QR-code field on the invoice's Other Info tab decides.

Order Format Used automatically when
1 QR Platba the invoice is in CZK or the customer is in the Czech Republic
2 PAY by square the invoice is in EUR and both your company (the account holder) and the customer are in Slovakia
3 payme as PAY by square
4 SEPA Credit Transfer QR the invoice is in EUR

All formats also need an IBAN from a SEPA country. A party whose country is not filled in does not count against a format: a Slovak company invoicing a customer with no country still gets PAY by square.

So a Czech company's euro invoice to a German customer gets the SEPA code, a Slovak company's invoice to a Czech customer gets QR Platba, and an invoice between two Slovak companies gets the Slovak format.

Once a format has been stored on the invoice, it stays. Clear the field to let Odoo choose again.

Limitations