Skip to main content

04 — Regulatory Reference — VAT/CIT/HR-FISK/SEPA

Bilko HR — Regulatory Reference — VAT/CIT/HR-FI

Last Updated: 2026-05-28
Status: COMPLETE — regulatory reference consolidated
Source files: - Regulatory HR README - HR-FISK integration spec


Table of Contents

  1. Croatia (HR) Regulatory Overview
  2. VAT (PDV)
  3. Corporate Income Tax (CIT)
  4. E-Invoice (HR-FISK 2.0 / eRačun B2B)
  5. Chart of Accounts
  6. Financial Statement Filing
  7. Bank Integration
  8. HR-FISK Integration Spec — Technical Deep Dive

Croatia (HR) Regulatory Overview

  • Country Code: HR
  • Currency: EUR (adopted January 2024, previously HRK)
  • EU Status: Member since 2013
  • Open Banking: PSD2 full compliance (Berlin Group NextGenPSD2)
  • Payment System: SEPA (full member)

VAT (PDV - Porez na dodanu vrijednost)

Rate Type Rate Description
Standard 25% General goods and services
Intermediate 13% Certain foods, water supply, accommodation
Reduced 5% Books, newspapers, baby food
Zero 0% Exports, intra-EU supply

Registration Threshold: 60,000 EUR annual turnover
Return Frequency: Monthly
Filing Deadline: Last day of following month
Portal: ePorezna (https://www.porezna-uprava.hr)


Corporate Income Tax (CIT - Porez na dobit)

  • Standard Rate: 18%
  • Reduced Rate: 10% (if annual revenue less than 1M EUR)
  • Filing Deadline: April 30 (for previous fiscal year)
  • Payment: Annual (no advance payments for small entities)

Withholding Tax (WHT)

Type Rate
Dividends 10%
Interest 12%
Royalties 15%

Small Business Regime (Pausalni obrt)

  • Threshold: less than 60,000 EUR annual turnover
  • Taxation: Simplified lump-sum based on activity
  • Benefits: Reduced compliance, simplified VAT rules

E-Invoice (HR-FISK 2.0 / eRačun B2B)

Platform: https://hr-fisk.fina.hr
Status: Operational (launched January 2026)
Mandatory Since: January 1, 2026 (B2B/B2G/B2C)

Format: UBL 2.1 XML with HR-CIUS (Croatian Implementation User Specification)
Protocol: AS4
Network: Peppol-compatible
Certificate: FINA certificate required

Penalties: Up to 500,000 EUR for non-compliance (SEVERE)

Archive Requirement: 11 years

Compliance Deadlines

Entity Type Obligation Date
VAT-registered taxpayers Issue AND receive B2B e-invoices January 1, 2026 (ACTIVE)
Non-VAT registered taxpayers RECEIVE e-invoices January 1, 2026 (ACTIVE)
Non-VAT registered taxpayers ISSUE and fiscalize e-invoices January 1, 2027
All B2G suppliers Issue e-invoices to government July 1, 2019 (long active)

WARNING: Penalties for non-compliance: up to EUR 500,000 per violation. Bilko Croatian users MUST use eRačun — blocking Croatian invoicing until integration is complete is correct policy.


HR-FISK Integration Spec — Technical Deep Dive

Last Updated: 2026-03-03
Status: PLACEHOLDER — ZKI/JIR types defined, API call not implemented
Regulatory Confidence: HIGH (Croatia is EU member, well-documented)

Overview

Croatia operates two parallel fiscalization systems since January 1, 2026:

  1. Fiscalization 1.0 (B2C) — Real-time cash register fiscalization for consumer transactions
  2. Fiscalization 2.0 (B2B) — Mandatory electronic invoicing for B2B transactions via the eRačun platform

Bilko integration target is Fiscalization 2.0 — the B2B eRačun mandate.

Regulatory Authority: Porezna uprava (Croatian Tax Administration)
Platform Operator: FINA (Financijska agencija) — manages eRačun platform
FINA Website: https://www.fina.hr
Tax Authority Website: https://www.porezna-uprava.hr
Legal Basis: New Fiscalization Act 2026 (amendments effective Jan 1, 2026)

What Fiscalization 2.0 Requires

All B2B invoices between Croatian VAT-registered taxpayers must:

  1. Be structured in UBL 2.1 or CII format (EN 16931 compliant)
  2. Be transmitted in real-time to the Croatian Tax Authority via the eRačun monitoring system
  3. Carry a JIR (Jedinstveni Identifikator Računa — Unique Invoice Identifier) assigned by the Tax Authority
  4. Carry a ZKI (Zaštitni Kod Izdavatelja — Issuer Security Code) generated by the taxpayer

JIR — Unique Invoice Identifier

  • Format: UUID (e.g., a1b2c3d4-e5f6-7890-abcd-ef1234567890)
  • Assigned by: Croatian Tax Authority (Porezna uprava) upon successful fiscalization
  • Purpose: Proof that the invoice has been registered with the Tax Authority
  • Must appear on: Invoice document (as QR code or printed text)

ZKI — Issuer Security Code

  • Format: 32-character hexadecimal MD5 hash
  • Generated by: The taxpayer (Bilko, on behalf of the company)
  • Algorithm: MD5 hash of OIB + IssueDateTime + InvoiceNumber + BusinessUnitCode + CashRegisterCode + TotalAmount (concatenated without separator, signed with private key from FINA certificate)
  • Purpose: Proves the invoice originated from the declared issuer
  • Note: ZKI generation requires FINA digital certificate (private key)

FINA — Financijska Agencija

Role: FINA is Croatia’s national financial agency responsible for:

  • Operating the eRačun B2G platform (since 2019)
  • Operating the eRačun B2B monitoring system (since 2026)
  • Issuing qualified digital certificates for business use
  • Processing annual financial statements

FINA Certificate: FINA issues qualified digital certificates (X.509) required for:

  • Signing e-invoices (Fiscalization 2.0)
  • Signing B2G e-invoices
  • Accessing FINA services

Certificate types:

  • Personal certificate (for natural persons)
  • Business certificate (poslovni certifikat) — for legal entities

Obtaining a FINA certificate:

  1. Apply at any FINA office (physical presence required for first issuance)
  2. Provide business registration documents + OIB
  3. Issued as .p12 / .pfx file with password
  4. Valid for 5 years
  5. Cost: TBD — check www.fina.hr/certifikati

Requirements for Bilko:

  • Each Croatian organization in Bilko must upload their FINA certificate
  • Certificate stored encrypted (AES-256) in DB
  • Certificate password stored separately (encrypted, or in key vault)
  • Bilko loads certificate at invoice submission time to generate ZKI and sign

API Overview

Environment Base URL
Production https://cis.porezna-uprava.hr/v2
Sandbox https://cistest.apis-it.hr:8449/FiskalizacijaServiceTest

Note on protocol: Fiscalization 1.0 used SOAP/WSDL. Fiscalization 2.0 (B2B eRačun) uses REST with UBL 2.1 XML.

Authentication

Authentication for Fiscalization 2.0 uses mutual TLS (mTLS) with FINA certificate:

  • Client presents FINA certificate in TLS handshake
  • No separate API key required — identity proven by certificate
  • Bilko must load .p12 certificate and configure TLS client cert in HTTP client

Key API Operations

Method Path Description
POST /racun Submit invoice for fiscalization
GET /racun/{jir} Get invoice status by JIR
POST /racun/{jir}/storno Cancel fiscalized invoice

UBL 2.1 XML Format — HR-CIUS

  • EU Standard: EN 16931 (European e-invoice standard)
  • Croatian CIUS: HR-CIUS (Croatian Implementation User Specification)
  • CustomizationID: urn:cen.eu:en16931:2017#compliant#urn:fina.hr:croatian-cius:2025
  • ProfileID: urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
  • InvoiceTypeCode: 380 (Commercial Invoice)
  • Currency: EUR (Croatia joined eurozone January 1, 2023)

OIB (Osobni identifikacijski broj)

Croatia uses OIB as the primary tax/company identifier:

  • Format: 11 digits
  • Validation: ISO 7064 MOD 11,10 check digit algorithm
  • Used for both VAT ID and company registration
  • In UBL: cbc:CompanyID = HR + OIB (e.g., HR12345678901) in PartyTaxScheme

OIB Validation is already implemented in Bilko (packages/country-hr/src/fisk/index.ts).

Required Invoice Fields

Field XML Element Format Notes
Invoice number cbc:ID String Sequential per business unit
Issue date cbc:IssueDate YYYY-MM-DD
Due date cbc:DueDate YYYY-MM-DD
Invoice type code cbc:InvoiceTypeCode 380 Commercial invoice
Currency cbc:DocumentCurrencyCode EUR Since Jan 1, 2023
Supplier name cac:AccountingSupplierParty String
Supplier OIB (VAT) cac:PartyTaxScheme/cbc:CompanyID HR + 11 digits
Buyer name cac:AccountingCustomerParty String
Tax total cac:TaxTotal/cbc:TaxAmount Decimal 2dp

Croatian VAT Rates (PDV)

Rate Category Code Applies To
25% S Standard rate — most goods and services
13% S First reduced rate — food, accommodation, utilities
5% S Second reduced rate — books, medicines, newspapers
0% Z Zero rate — intra-EU transport, international transport

Integration Architecture — How Bilko Calls FISK

Flow:

  1. Bilko User creates invoice
  2. Bilko Frontend sends to Bilko API
  3. invoice.service.ts processes
  4. FiskalizacijaService (TODO) validates OIB (IMPLEMENTED), generates ZKI (TODO), generates eRačun XML (IMPLEMENTED), signs XML (TODO), POSTs to FISK API (TODO)
  5. JIR + ZKI returned from Porezna uprava
  6. Embed JIR in invoice document
  7. Store JIR, ZKI in Invoice.hrFiskData

Bilko Code Location

Component File Status
FISK types + placeholder packages/country-hr/src/fisk/index.ts PLACEHOLDER
OIB validation packages/country-hr/src/fisk/index.ts IMPLEMENTED
eRačun UBL XML builder packages/country-hr/src/filing/index.ts IMPLEMENTED
Fiscal year/filing rules packages/country-hr/src/fiscal/index.ts IMPLEMENTED
ZKI generation Not yet implemented TODO
FINA cert loading Not yet implemented TODO
FISK API client Not yet implemented TODO
invoice.service.ts integration Not yet implemented TODO
JIR storage in DB Not yet implemented TODO (DB migration)

Implementation Status

Feature Status Notes
eRačun UBL 2.1 XML generation IMPLEMENTED filing/index.ts
OIB validation IMPLEMENTED fisk/index.ts
JIR/ZKI type definitions IMPLEMENTED fisk/index.ts
ZKI generation algorithm NOT IMPLEMENTED Requires FINA cert private key
FINA certificate loading NOT IMPLEMENTED .p12 parsing needed
FISK API client NOT IMPLEMENTED Placeholder throws error
Get invoice status NOT IMPLEMENTED Placeholder throws error
invoice.service.ts integration NOT IMPLEMENTED Service wiring pending
DB fields for JIR/ZKI NOT IMPLEMENTED Prisma migration needed
Settings UI for FINA cert upload NOT IMPLEMENTED Frontend task
Country gate (block without cert) IMPLEMENTED packages/core/src/country-gate.ts

Next Steps (Full Production Implementation)

Phase 1 — ZKI Generation (1 week): Implement generateZKI function, write unit tests

Phase 2 — FISK API Client (1-2 weeks): Implement submitInvoiceToFISK, getInvoiceStatus, cancel/storno flow

Phase 3 — Service Integration (1 week): Wire FiskalizacijaService into invoice.service.ts, add DB fields, Prisma migration, Settings UI for FINA cert upload

Phase 4 — Compliance (ongoing): Obtain FINA test certificate, sandbox testing, production certificate, register with Porezna uprava, consult Croatian accounting advisor

Phase 5 — B2G (Optional): eRačun B2G uses FINA eRačun za državu platform (separate endpoint, same UBL 2.1 format, already mandatory since 2019)


Sources

Regulatory Overview

  • Croatia Confirms Mandatory B2B E-Invoice 2026 | EDICOM
  • Croatia Fiscalization Law | Fintua
  • Mandatory e-Invoicing Croatia 2026 | Fiscal Solutions
  • Croatia eInvoicing B2B Mandate | VATit

Technical Specifications

  • FINA — Financijska agencija (www.fina.hr)
  • Porezna uprava — Fiskalizacija (www.porezna-uprava.hr/HR_Fiskalizacija/)
  • Croatia B2G e-invoicing 2019 | SEEBURGER
  • 2025 Croatia eInvoicing Country Sheet | European Commission

Local source files: - /Users/makinja/business/ALAI-Holding-AS/products/Bilko/docs/regulatory/HR/README.md - /Users/makinja/business/ALAI-Holding-AS/products/Bilko/docs/integrations/hr-fisk-spec.md

BookStack Canonical URL: https://docs.alai.no/books/bilko-hr-market-entry/page/04-regulatory-reference