Croatia POS Fiscalization for Odoo
Real-time B2C cash-receipt fiscalization to the Porezna uprava over a direct CIS SOAP + mTLS connection — JIR, ZKI and a verification QR recorded for every Odoo POS order.
Update date: 2026-07-12
What It Does
This module brings Croatia's B2C cash-receipt fiscalization ("fiskalizacija prometa") to Odoo Point of Sale. When an order is paid, the issuer protective code ZKI (Zastitni kod izdavatelja) is computed locally and the receipt is submitted in real time to the Porezna uprava (Tax Administration), which returns the JIR (Jedinstveni identifikator racuna). The submission is a direct connection to the Tax Administration CIS (SOAP + mutual-TLS with your own FINA certificate), not an access-point relay, as Croatian B2C cash-receipt fiscalization requires. Both codes and a verification QR are recorded on the order so the receipt can be confirmed on the public portal.
Built on the Direct-CIS B2C Core
This is the POS variant of the Croatian fiscalization line. It reuses the working direct-CIS core shared by the Croatia B2C Fiscalization connector — the real OIB validator (ISO 7064 MOD 11,10), the ZKI signer (RSA-SHA1 + MD5), the signed RacunZahtjev SOAP builder, the verification-QR builder and the direct SOAP + mutual-TLS CIS client — no duplicated plumbing, a smaller and more reliable footprint. Your FINA certificate and signing key never leave your database.
Key Features
Real-time receipt fiscalization
Every paid pos.order is assigned a ZKI and submitted to obtain its JIR. Cash orders trigger fiscalization automatically; mixed and card orders are handled too.
Premise & register configuration
Each Point of Sale carries its business-premise (poslovni prostor) and cash-register (naplatni uredaj) codes and a per-till sequential receipt number, forming the fiscal label number/premise/register.
Offline / subsequent-delivery queue
If the CIS endpoint is unreachable, the receipt is still issued with its ZKI and queued; a cron re-sends it and the 48-hour deadline for obtaining the JIR is tracked, exactly as the law requires.
Fiscal QR + JIR/ZKI recorded on the order
The Porezna verification URL is encoded as a QR so customers can verify the receipt on the public portal. JIR, ZKI, the fiscal label and the QR are recorded on the order's fiscalization record for audit and reprinting.
BYOK direct-CIS transport
Sandbox and production CIS endpoints are pre-filled with the documented Croatian Tax Administration hosts and are fully editable. The mutual-TLS FINA certificate paths and the RSA signing key live only on your own database — nothing is bundled.
Fiscalization log & onboarding
A per-order fiscalization log records the JIR/ZKI, retry counter, deadline and raw authority response. A one-screen onboarding wizard validates the OIB and wires the endpoint and a Point of Sale in one step.
How It Works
- Run the onboarding wizard: enter the company OIB, the FINA certificate path (for the CIS mutual-TLS handshake) and the premise / register codes for a Point of Sale.
- Sell as usual. On payment, Odoo computes the ZKI, signs the RacunZahtjev and submits it directly to the Tax Administration CIS.
- The returned JIR and a verification QR are recorded on the order and available for reprinting and audit.
- Any receipt issued during an outage is queued and re-fiscalized automatically within the 48-hour window.
Compatibility & Disclosure
Compatible with Odoo 18 and 19 (Community and Enterprise). Requires the Fiskalizacija 2.0 e-Invoicing connector and the e-Invoice Core Engine.
Disclosure: this module transmits POS receipt data only to the Croatian Tax Administration CIS endpoint you configure. No data is sent anywhere else, and your certificate / private key never leave your database. Endpoint URLs are editable defaults based on publicly documented Croatian Tax Administration hosts.
Screenshots
Fiscalized Pos Order Zki On
Hr Pos Fiscalization Receipt
Update date: 2026-07-02