Files
ash_cz_qr_payment/README.md
T
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

97 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
🇨🇿 [Česká verze](README.cs.md)
# 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](static/description/bank_account_en.png)
* **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](static/description/qr_payment_settings_en.png)
**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.](https://www.ashtechnology.eu)**, 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:**
- Web: [www.ashtechnology.eu](https://www.ashtechnology.eu)
- Email: info@ashtechnology.eu
For custom Odoo development or larger projects, feel free to reach out.
---
*Odoo is a trademark of Odoo S.A.*