Files
TomasandClaude Sonnet 5 d381249225 Rework: use native res.partner.bank qr_code_method instead of report xpath
Register 'spayd' as a proper qr_code_method on res.partner.bank (same
extension point account_qr_code_sepa uses for EPC/'sct_qr'), sequence=6
so it's tried before EPC (sequence 20). Eligibility now requires CZK/EUR
currency AND a Czech customer country - previously the report template
replaced EPC for *any* customer as long as the invoice currency was CZK
or EUR, which would incorrectly show a Czech SPAYD code to e.g. a German
customer being invoiced in EUR.

account.move._generate_qr_code() already tries all registered methods in
priority order and the existing div#qrcode block in
account.report_invoice_document already renders whatever comes back, so
this needs no report template override at all.

- Move get_cz_qr_code_base64()/cz_to_iban() from account_move.py into
  res_partner_bank.py (as _get_qr_code_generation_params/_spayd_to_iban);
  fix bank_code not being zero-padded to 4 digits, which could throw off
  the mod-97 checksum for short local bank codes. Verified the checksum
  against the standard 19-2000145399/0800 -> CZ6508000000192000145399
  reference example and general IBAN mod-97 validity.
- Remove views/report_invoice.xml (nothing left to override) and the now
  unnecessary qrcode Python dependency (Odoo's own barcode report action
  renders the image; this module only supplies the SPAYD string).
- Update README FAQ to match the new eligibility rule.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-25 02:08:03 +02:00

3.9 KiB
Raw Permalink Blame History

🇨🇿 Česká verze

Czech QR Payments (SPAYD)

This module adds SPAYD format QR codes to invoices for quick mobile payments via Czech banking apps. Compatible with all major Czech banks (ČSOB, Komerční banka, Česká spořitelna, Raiffeisenbank, etc.).

✅ Supported Features

  • Bank account formats:

    • Czech local format: 123-456/0800 (automatically converted to IBAN)
    • IBAN format: CZ6508000000001234567890, SK6509000000005123456789, etc. Bank Account Entry
  • Currency support:

    • ✅ CZK - Standard Czech payments
    • ✅ EUR - Cross-border payments (for Slovak companies invoicing Czech customers)
    • ❌ Other currencies - Not supported (SPAYD is primarily for CZK and EUR)
  • Use cases:

    • Czech company invoicing Czech customers in CZK
    • Slovak company invoicing Czech customers in EUR (your use case!)
    • Any company with a CZ/SK/EU IBAN invoicing Czech customers

⚡ Quick Setup for Slovak Companies

If you are a Slovak company invoicing Czech customers in EUR:

  1. Set up your EUR bank account:

    • Go to Accounting → Configuration → Journals
    • Select your bank journal
    • In the Bank Account field, enter your EUR IBAN (e.g., SK6509000000005123456789)
    • Set Currency to EUR
  2. Create invoice for Czech customer:

    • Set customer country to Czech Republic (CZ)
    • Set invoice currency to EUR
    • Confirm the invoice (post it)
  3. QR code generates automatically!

    • The QR code will be in SPAYD format with CC:EUR
    • Czech customers can scan it with their banking app
    • Payment will be processed in EUR to your account

Frequently Asked Questions (FAQ)

Q: The QR code is not generated on the invoice A: Make sure you have:

  • The QR Codes option enabled in the Invoicing app configuration
  • The invoice's bank account (Payment QR-code section) is in CZK or EUR
  • The customer's country is set to Czech Republic - SPAYD is only offered automatically for Czech customers; for anyone else Odoo falls back to EPC
  • The invoice is confirmed/posted QR Code Settings

Q: The QR code is generated on the invoice, but scanning it results in an error A: Check whether:

  • The bank account number is in valid format (Czech format 123-456/0800 or IBAN)
  • The customer's banking app supports SPAYD QR codes

Q: Can I use EUR currency with this module? A: ✅ Yes! This module now supports both CZK and EUR currencies. Perfect for Slovak companies invoicing Czech customers in EUR.

Q: Does this work with Slovak (SK) IBAN? A: ✅ Yes! The module handles any valid IBAN (SK, CZ, DE, AT, etc.). If your bank account is already an IBAN, it will be used as-is.

Q: Can I use this for invoices in other currencies (USD, GBP)? A: ❌ No. The SPAYD standard is designed for CZK and EUR. Other currencies are not supported by Czech banking apps via QR codes.

Q: I'm a Slovak company. Will Czech customers be able to pay EUR invoices via QR code? A: ✅ Yes, if:

  • Your bank account is a EUR account (Slovak or international)
  • The invoice currency is EUR
  • The Czech customer's bank supports cross-border EUR payments (most do)
  • The QR code will contain CC:EUR and your SK/EUR IBAN

About

This module is developed and maintained by Ash technology s.r.o., an official Odoo partner based in the Czech Republic.

These modules are free and open-source. We welcome your feedback and feature requests – if your idea benefits the community, we're happy to include it.

Contact us:

For custom Odoo development or larger projects, feel free to reach out.


Odoo is a trademark of Odoo S.A.