Croatia Fiskal 2.0
Croatia Fiskalizacija 2.0 e-invoicing: CIUS-HR EN16931 UBL 2.1 B2B, OIB validation, ZKI/JIR QR, BYOK access-point REST relay submission (software-only, runs under your own credentials)
Croatia Fiskalizacija 2.0 e-Invoicing for Odoo
CIUS-HR EN 16931 B2B electronic invoices — generate, validate, seal with the ZKI and submit through your access point, straight from Odoo.
What It Does
This module makes Odoo ready for Croatia's Fiskalizacija 2.0 mandate. It builds standards-compliant CIUS-HR (EN 16931, UBL 2.1) invoices and credit notes, carries the Croatian OIB as the Peppol electronic address, validates every document against the Croatian business rules, computes the ZKI protective code and JIR-based verification QR, and submits to your configured access-point REST relay. Mandatory for VAT-registered taxpayers from 1 January 2026 and for the remaining taxpayers from 1 January 2027.
Built on a Shared e-Invoice Engine
This connector depends on the e-Invoice Core Engine and reuses its UBL 2.1 builder, declarative validation framework, QR engine and bring-your-own-key REST transport. Croatia-specific logic is added as a registered profile — no duplicated plumbing, a smaller and more reliable footprint.
Key Features
CIUS-HR EN 16931 UBL 2.1
Compliant XML for invoices (380) and credit notes (381) with the CIUS-HR customization, OIB endpoints (scheme 9934) and the Croatian VAT (PDV) categories — standard 25/13/5 %, zero, exempt, reverse charge and export. The CustomizationID defaults to the CIUS 2025 identifier used by Odoo core l10n_hr_edi and stays editable per jurisdiction profile.
Real OIB Validation
The 11-digit OIB is validated with the official ISO 7064 MOD 11,10 check-digit algorithm on the company and on every partner, and surfaced as the HR VAT identifier.
Pre-Submission Business Rules
EN 16931 core rules plus the Croatian layer (seller/buyer OIB, EUR currency, VAT categories, totals coherence) are checked before anything leaves Odoo.
ZKI, JIR & Verification QR
Each invoice carries the ZKI issuer protective code — the MD5 of the RSA-SHA1 signature over the specified data string, computed with your own private key — the JIR assigned by the Tax Administration, and a QR linking to the Porezna verification portal. Without a private key the module refuses to produce a code instead of printing an unsigned one.
BYOK Access-Point REST Relay
Submit the UBL to your access point's REST endpoint and poll clearance, with full call logging. The endpoint fields ship empty on purpose — only your access point knows its URL, and a missing one is reported as a named error naming what to enter rather than failing later as a transport fault. Direct Porezna fiscalization uses SOAP + XML-DSig and is out of scope; this connector relays to your access point. Credentials never leave your database.
Fiscal Block Printed on the Invoice
The invoice PDF carries a Fiskalizacija 2.0 block after the payment terms with the JIR, the ZKI, the business premise / cash register and the Porezna verification QR at the mandated 2x2 cm minimum with its quiet zone — so the paper copy the buyer keeps can actually be checked against the register. Sales Receipts (out_receipt) are covered alongside invoices and credit notes.
.p12 Upload, Expiry Warning, mTLS Without Paths
Upload the password-protected .p12 / .pfx your certification authority issued and the key and certificate are unpacked for you, with no openssl command line; the company form warns you 30 days before the certificate expires. Mutual TLS can reuse that stored certificate instead of two filesystem paths, which is what makes it work on Odoo Online, and a custom CA bundle can be pasted in when your access point is served under a CA the system store does not carry.
Onboarding Wizard
A guided wizard captures the company OIB, business-premise / register labels and the endpoint credentials in a single step.
Requirements
- Odoo 18.0, 19.0 or 20.0 (Community or Enterprise).
- The e-Invoice Core Engine module (dependency).
- An account with an access point on the Croatian e-invoice network.
- Python libraries: lxml, qrcode, requests, cryptography.
Support
Email: support@pokutsoft.com
Author: Pokutsoft — pokutsoft.com
Screenshots
Posted B2B invoice with its CIUS-HR e-invoice: JIR, ZKI protective code and the Porezna verification QR.
Generated EN 16931 UBL 2.1 document carrying the CIUS-HR 2025 CustomizationID and the OIB Peppol endpoint (scheme 9934).
Access-point REST relay configuration: editable sandbox / production URLs, BYOK credential and optional mutual TLS.
The UNCL5305 Croatian VAT category is stated on the tax record, so the VAT breakdown is never guessed from the rate.
Documentation
Configuration guide included in the package (docs/Configuration_Guide_EN.pdf) — installation order and dependencies, FINA certificate setup, company and endpoint settings, the Croatian B2C receipt flow, and an end-to-end test walkthrough. The Markdown source ships beside it as docs/Configuration_Guide_EN.md.
Update date: 2026-09-08
User guides (PDF)
Related modules
Croatia Fisk B2C
Croatia B2C cash-receipt fiscalization (racun): real-time ZKI/JIR via the Tax Administration CIS SOAP service, with a Porezna verification QR on every receipt
Croatia Fisk POS
Croatia B2C POS receipt fiscalization: real-time JIR/ZKI to the Porezna uprava CIS over a direct SOAP + mTLS connection with your own FINA certificate, verification QR, BYOK
Croatia Fisk 2.0 In
Croatia Fiskalizacija 2.0 inbound: receive and parse B2B CIUS-HR e-invoices into draft vendor bills, with purchase e-reporting and access-point inbox polling (BYOK)