Skip to content
PokutsoftPokutsoft
GlobalLocalization/Croatia
Croatia Fiskal 2.0 icon

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)

Odoo 20.0Odoo 19.0Odoo 18.0

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.

CIUS-HR EN 16931 / UBL 2.1 Printed fiscal block + QR Odoo 18, 19 & 20

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.
BYOK · software only: we deliver software only. It runs entirely under your own credentials and your own FINA certificate / private key, which never leave your database. We are not an integrator, intermediary, or access-point operator — the module transmits invoice data only to the access-point / endpoint you configure, using your keys. No data is sent anywhere else. Support is included and the purchase is refundable.

Support

Email: support@pokutsoft.com
Author: Pokutsoft — pokutsoft.com

© 2026 Pokutsoft · Croatia Fiskalizacija 2.0 e-Invoicing for Odoo · Odoo 18, 19 & 20

Screenshots

CIUS-HR e-Invoice on the Posted Invoice

Posted B2B invoice with its CIUS-HR e-invoice: JIR, ZKI protective code and the Porezna verification QR.

CIUS-HR UBL 2.1 XML

Generated EN 16931 UBL 2.1 document carrying the CIUS-HR 2025 CustomizationID and the OIB Peppol endpoint (scheme 9934).

Access-Point Endpoint

Access-point REST relay configuration: editable sandbox / production URLs, BYOK credential and optional mutual TLS.

Croatian VAT Category on the Tax

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