# Croatia Fiscal Receipt QR

> Source: https://docs.barcoder.ai/docs/standards/croatia-fiscal-receipt-qr
> research date 2026-10-30 · extracted at 2026-10-30
> Publisher: Barcoder — encyclopedia of QR, barcode and payment-code standards

Specifications:
- [Fiskalizacija računa u krajnjoj potrošnji: Tehnička specifikacija za korisnike, v2.7 (Porezna uprava, 21 July 2026)](https://porezna-uprava.gov.hr/UserDocsImages/Fiskalizacija/Tehni%C4%8Dke%20specifikacije/Fiskalizacija%20-%20Tehnicka%20specifikacija%20za%20korisnike_v2.7%20%2821.07.2026.%29.pdf)
- [Pravilnik o fiskalizaciji računa u krajnjoj potrošnji (NN 153/2025)](https://narodne-novine.nn.hr/clanci/sluzbeni/2025_12_153_2278.html)
- [Zakon o fiskalizaciji (NN 89/2025)](https://narodne-novine.nn.hr/clanci/sluzbeni/2025_06_89_1233.html)

## Overview

The Croatian fiscal receipt QR code is a mandatory QR code on receipts issued to end consumers (B2C). It is a plain URL to the Tax Administration's (Porezna uprava) check page, `https://porezna.gov.hr/rn`, with the receipt's JIR or ZKI, its issue time and its total as query parameters <sup>[4][4]</sup>. It exists to verify a receipt; none of its fields is a payment instruction <sup>[4][4]</sup>. The Fiscalization Act (Zakon o fiskalizaciji, NN 89/2025) makes it receipt content <sup>[1][1]</sup>, the Rulebook (Pravilnik, NN 153/2025) sets its minimum data and print rules <sup>[2][2]</sup>, and the Technical Specification v2.7 fixes the exact string <sup>[4][4]</sup>.

## History

The Technical Specification goes back to version 1.0 of 5 October 2012, written by APIS IT <sup>[4][4]</sup>. The QR code came later. The amending act NN 121/2019 defined the QR code, added it to the mandatory receipt data from 1 January 2021, and told the Minister of Finance to set its rules by rulebook <sup>[10][10]</sup>.

The rulebook amendment NN 70/2020, published 19 June 2020, added Articles 18.a to 18.c to the old cash-fiscalization rulebook, also effective 1 January 2021 <sup>[11][11]</sup>. Specification v2.0 (1 June 2020) added chapter 2.7 on checking a receipt by QR code, v2.1 (20 November 2020) changed it, and v2.4 (7 September 2023) changed it again <sup>[4][4]</sup>. The specification states the amount has been expressed in euros and cents since 1 January 2023 <sup>[4][4]</sup>.

A Tax Administration opinion of 2 June 2021 said the rulebook set only minimum content, so extra data (it was asked about point of sale, register and cashier) was not barred if the QR rules were still met <sup>[12][12]</sup>. That opinion predates the current rulebook, which keeps the "at least" wording <sup>[2][2]</sup>.

## Technical specification

**Symbol.** QR Code model 1 or model 2 in the smallest possible version, at least 2 × 2 cm, with at least 2 mm of blank space on every side and at least ECC level L <sup>[2][2]</sup>. It must comply with ISO/IEC 15415 <sup>[2][2]</sup>, the print-quality test specification for two-dimensional symbols <sup>[19][19]</sup>. It may not be printed on an image or logo, or contain one <sup>[2][2]</sup>.

**Payload.** The Rulebook requires, in order, the check-page URL, the JIR or ZKI, the issue date and time, and the total, split by separators, but names neither the URL nor the separators <sup>[2][2]</sup>. The specification supplies both, plus field formats <sup>[4][4]</sup>:

| Part | Format | Length |
|---|---|---|
| Base URL | `https://porezna.gov.hr/rn` | fixed |
| `jir` or `zki` | JIR, or ZKI when used instead | 36 or 32 characters |
| `datv` | `GGGGMMDD_HHMM` (year, month, day, underscore, hour, minute) | 13 |
| `izn` | Total in euros and cents with no decimal separator and no leading zeros; `-` for a negative amount | up to 10, sign included |
| Separators | `?jir=&datv=&izn=` | 16 |

Authority samples, whose values the specification marks as test data <sup>[4][4]</sup>:

```text
https://porezna.gov.hr/rn?jir=12345678-1234-1234-1234-123456789012&datv=20200921_0630&izn=152599
https://porezna.gov.hr/rn?jir=12345678-1234-1234-1234-123456789012&datv=20210110_1400&izn=-10550
https://porezna.gov.hr/rn?zki=12345678123412341234123456789012&datv=20210205_0801&izn=510
```

The first encodes 1,525.99, the second a cancelled receipt of -105.50, and the third 5.10. The samples are still labelled in kuna <sup>[4][4]</sup>.

Summing the specification's lengths gives at most 100 characters with a JIR and 96 with a ZKI (a calculation, not a spec figure). Verified locally with segno on lengths from 89 to 100 characters: each needs byte mode and version 5-L, because the lowercase URL rules out alphanumeric mode. Version 5 is 37 × 37 modules <sup>[18][18]</sup>, so the minimum 2 cm print gives modules of about 0.54 mm.

**JIR.** The Tax Administration's system issues it, as a UUID: five hyphen-separated groups in the pattern 8-4-4-4-12, using digits and lowercase a to f <sup>[2][2]</sup>. The Rulebook says 32 characters and the specification 36; both are right, as 32 hex digits plus 4 hyphens make 36 <sup>[2][2]</sup><sup>[4][4]</sup>.

**ZKI.** The taxpayer generates it, prints it and sends it in the fiscalization message <sup>[2][2]</sup>. It is the MD5 hash (RFC 1321) of an RSA signature, made with the taxpayer's own certificate, over a concatenation of OIB, issue date and time as `dd.MM.gggg HH:mm:ss`, invoice number, premises mark, device mark and total, in UTF-8 with a dot as decimal separator. The result is 32 lowercase hex characters <sup>[4][4]</sup>. The three amount formats differ: `152599` in the QR, `30.00` in the XML message, `1245.56` in the ZKI input <sup>[4][4]</sup>.

**JIR or ZKI.** A receipt issued without a JIR, for example after a system error, must not block the sale; the taxpayer issues it and resends the data later <sup>[2][2]</sup>. The ZKI then serves as the identifier for checks, combined with other data <sup>[2][2]</sup><sup>[4][4]</sup>. The fetched Rulebook text does not say whether a QR already printed with a ZKI is replaced once the JIR arrives.

**Verification.** A generic scanner reads the code as a link. The page fills in the fields, the buyer solves a captcha and presses "Provjeri", and the system answers whether the receipt was fiscalized <sup>[4][4]</sup>. The code carries no signature of its own, and the specification says only the taxpayer can recreate a ZKI <sup>[4][4]</sup>, so an offline reader can parse the fields but can't validate them. The check needs the online lookup.

## Use cases

- **Consumer checks.** Buyers can check a receipt within 30 days of issue through a web service on the Tax Administration's site <sup>[1][1]</sup>. The authority lists a phone QR scanner, the mPorezna app, and the "Provjera računa" app with manual entry of JIR, ZKI and ISU <sup>[7][7]</sup><sup>[8][8]</sup>.
- **Office checks.** A receipt can be taken to a Tax Administration office, also within 30 days <sup>[7][7]</sup>. The Act provides this route for the offline cases of its Articles 22 and 23 <sup>[1][1]</sup>.
- **Cancelled receipts.** A negative `izn` value represents a cancelled receipt <sup>[4][4]</sup>.
- **Non-cash B2C sales.** Since 1 January 2026 fiscalization covers every payment method, including payment to a bank account <sup>[9][9]</sup>, so those receipts carry the code as well.
- **B2B cash and card sales.** A cash or card transaction with a fiscalized receipt can be exempted from an eRačun under Article 39 of the Act <sup>[1][1]</sup>, and from 1 January 2026 such messages must carry the recipient's OIB <sup>[4][4]</sup>. The fetched text does not say the QR differs for these; the OIB is not a QR field <sup>[4][4]</sup>.

Self-service devices are a separate branch. Rulebook Article 30 applies Articles 6 to 10 and 13 to 16 to them but not the QR Articles 17 and 18 <sup>[2][2]</sup>, in the sections fetched.

## Implementations

No official open-source encoder was found. Any QR encoder produces the symbol, since the payload is a URL.

- [nticaric/fiskalizacija][21]: PHP, 56 stars, updated October 2026. The README example calls a `QRGenerator` class, but the class source wasn't inspected <sup>[21][21]</sup><sup>[20][20]</sup>.
- [l-d-t/fiskalhrgo][22]: Go, 2 stars, updated September 2026, states spec 2.7. It builds the QR data and leaves rendering to the caller <sup>[22][22]</sup><sup>[20][20]</sup>. Under the usual star threshold; kept because it is the only library found that claims v2.7 and QR data.
- [zxing/zxing][23]: Java decoder with QR support, 34.2k stars, in maintenance mode <sup>[23][23]</sup>. Reads the symbol only; it knows nothing about these fields.

[tgrospic/Cis.Fiscalization][24] (C#, 22 stars, updated August 2020) and [senko/fiskal-hr][25] (Python, 17 stars, updated December 2023) are clients for the fiscalization service; their pages mention no QR support <sup>[20][20]</sup><sup>[24][24]</sup><sup>[25][25]</sup>.

Treat older code with care. A third-party Ruby gist last active in April 2021 formats `izn` as `1000000,00` with a comma <sup>[26][26]</sup>, which the current specification rules out <sup>[4][4]</sup>. Libraries written before v2.7 may also still sign the ZKI with RSA-SHA1 (see Status).

## Comparison

| | Croatia fiscal QR | Slovenia fiscal code | [HUB3](https://docs.barcoder.ai/docs/standards/hub3) | [EPC QR](https://docs.barcoder.ai/docs/standards/epc-qr) |
|---|---|---|---|---|
| Purpose | Check a receipt | Check a receipt | Pay a slip | Start a credit transfer |
| Symbol | QR, smallest version, ECC L or better | QR 25 × 25 at ECC M, or PDF417, or Code 128 | PDF417 | QR |
| Payload | URL | 60 digits | 14 lines of text | Text starting `BCD` |
| Minimum print size | 2 × 2 cm | 12 × 12 mm | 58 mm wide, up to 26 mm high | not covered here |

Slovenia's and Croatia's codes share a design: both hash an RSA signature with MD5 over nearly the same fields, and both require ISO/IEC 15415 compliance <sup>[17][17]</sup><sup>[4][4]</sup>. They differ in what is printed. Slovenia converts the ZOI to 39 decimal digits and adds tax number, timestamp and a check digit, all with no URL <sup>[17][17]</sup>. Croatia prints a URL, so any phone camera opens the check page <sup>[4][4]</sup>, at the cost of a bigger symbol. Slovenia's data record also omits the amount, which Croatia's includes <sup>[17][17]</sup><sup>[4][4]</sup>.

HUB3 and EPC figures come from the [Croatia country report][27]. On a Croatian receipt, a QR code is the fiscal check, HUB3 is the flat PDF417 on payment slips, and a `BCD` QR is usually on an invoice from another SEPA country <sup>[27][27]</sup>. Payload parsing follows the same rules as any [URL QR](https://docs.barcoder.ai/docs/standards/url-qr).

## Fun facts

- The specification's worked QR examples still show kuna amounts, nearly four years after the euro, right below a note that amounts are in euros and cents <sup>[4][4]</sup>.
- The ZKI is an MD5 hash of a signature. Its 32-character form stays the same while the signature under it moves to SHA-256 <sup>[4][4]</sup><sup>[5][5]</sup>, so the QR format needs no change.

## Status

Active and mandatory. Article 7(1) of the Act lists the QR code as item 6 of required receipt data <sup>[1][1]</sup>. It binds income-tax obligors for independent activity and corporate-income-tax obligors <sup>[1][1]</sup><sup>[9][9]</sup>, except for activities exempted in Article 4 (among them lotteries, some public transport tickets, tolls, postal services, banking, insurance and healthcare) <sup>[1][1]</sup>. No penalty article names the QR code; Article 72(1)(2) penalizes receipts lacking Article 7 data <sup>[1][1]</sup>.

### Fiskalizacija 2.0

Fiskalizacija 2.0 here means the reform under NN 89/2025. The QR format did not change. Chapter 2.7 of the specification is word-for-word the same in v2.6 (8 December 2025) and v2.7 (21 July 2026), the two latest listed versions <sup>[15][15]</sup>, checked by diffing the extracted text <sup>[5][5]</sup><sup>[4][4]</sup>, and the changelog records no edit to it since v2.4 in 2023 <sup>[4][4]</sup>. What changed around it:

- **Legal basis.** NN 89/2025 replaced the Zakon o fiskalizaciji u prometu gotovinom, in force from 1 September 2025 with parts later <sup>[1][1]</sup>. Rulebook NN 153/2025, in force 1 January 2026, replaced the old rulebook, moving the QR rules from Articles 18.a to 18.c to Articles 17 and 18 with the same substance <sup>[2][2]</sup><sup>[11][11]</sup>.
- **Scope.** From 1 January 2026 fiscalization covers all payment methods, not only cash and cards <sup>[9][9]</sup>.
- **eRačun.** The new B2B and B2G e-invoices carry no QR. The authority says so directly: "eRačun ne sadrži JIR, ZKI ni QR kod", and the QR is prescribed only for B2C <sup>[6][6]</sup><sup>[16][16]</sup>.
- **Message data.** New OIB handling, a method for changing receipt data, stricter rejection errors and opening-hours methods arrived in 2026 <sup>[4][4]</sup><sup>[14][14]</sup>. None touches the QR fields.
- **ZKI signature.** v2.6 specified RSA-SHA1 <sup>[5][5]</sup>. v2.7 says the currently allowed RSA-SHA signature, with RSA-SHA256 in its pseudocode and Java sample <sup>[4][4]</sup>. Production accepts SHA-1 or SHA-256 XML signatures until 31 December 2026 and rejects RSA-SHA1 from 1 January 2027 <sup>[13][13]</sup><sup>[4][4]</sup>.

The law lags the specification here. Rulebook Article 16 still names RSA-SHA1 for the ZKI <sup>[2][2]</sup>. The amendment NN 97/2026 (2 September 2026) points to the Technical Specification instead, but only from 1 January 2027 <sup>[3][3]</sup>. The 2026 notice covers XML message signing and does not mention the ZKI <sup>[13][13]</sup>. The specification's change history does not list the ZKI change <sup>[4][4]</sup>. Implementers should follow the specification and watch for it to be restated.

## Sources

[1]: https://narodne-novine.nn.hr/clanci/sluzbeni/2025_06_89_1233.html
[2]: https://narodne-novine.nn.hr/clanci/sluzbeni/2025_12_153_2278.html
[3]: https://narodne-novine.nn.hr/clanci/sluzbeni/2026_09_97_1181.html
[4]: https://porezna-uprava.gov.hr/UserDocsImages/Fiskalizacija/Tehni%C4%8Dke%20specifikacije/Fiskalizacija%20-%20Tehnicka%20specifikacija%20za%20korisnike_v2.7%20%2821.07.2026.%29.pdf
[5]: https://porezna-uprava.gov.hr/UserDocsImages/Fiskalizacija/Tehni%C4%8Dke%20specifikacije/Fiskalizacija%20-%20Tehnicka%20specifikacija%20za%20korisnike_v2.6%20%2808.12.2025.%29.pdf
[6]: https://porezna-uprava.gov.hr/hr/sadrzaj-racuna/8038
[7]: https://porezna.gov.hr/fiskalizacija/gotovinski-racuni/provjeri-fiskalni-racun
[8]: https://porezna-uprava.gov.hr/hr/kako-prepoznati-ispravan-racun/8613
[9]: https://porezna-uprava.gov.hr/hr/fiskalizacija-racuna-u-krajnjoj-potrosnji-b2c-poslovanje-azurirano-5-1-2026/8033
[10]: https://narodne-novine.nn.hr/clanci/sluzbeni/2019_12_121_2387.html
[11]: https://narodne-novine.nn.hr/clanci/sluzbeni/2020_06_70_1390.html
[12]: https://porezna-uprava.gov.hr/Misljenja/Detaljno/2513
[13]: https://porezna-uprava.gov.hr/hr/obavijest-obveznicima-fiskalizacije-u-krajnjoj-potrosnji-tehnicka-unapredjenja-u-sustavu-fiskalizacije-u-krajnjoj-potrosnji/8769
[14]: https://porezna.gov.hr/fiskalizacija/gotovinski-racuni/gotovinski-racuni-novosti/o/prilagodba-servisa-fiskalizacije-2026
[15]: https://porezna.gov.hr/fiskalizacija/gotovinski-racuni/tehnicki-podaci/o/tehnicki-podaci
[16]: https://porezna.gov.hr/fiskalizacija/api/dokumenti/46
[17]: https://www.datoteke.fu.gov.si/dpr/files/TehnicnaDokumentacijaVer2.9.pdf
[18]: https://www.qrcode.com/en/about/version.html
[19]: https://genorma.com/en/standards/iso-iec-15415-2024
[20]: https://github.com/topics/fiskalizacija
[21]: https://github.com/nticaric/fiskalizacija
[22]: https://github.com/l-d-t/fiskalhrgo
[23]: https://github.com/zxing/zxing
[24]: https://github.com/tgrospic/Cis.Fiscalization
[25]: https://github.com/senko/fiskal-hr
[26]: https://gist.github.com/zoki/a5d2a76366e5d36adc59c0251c55096c
[27]: https://docs.barcoder.ai/docs/payments/HR

[1] [Zakon o fiskalizaciji, NN 89/2025](https://narodne-novine.nn.hr/clanci/sluzbeni/2025_06_89_1233.html) — Narodne novine, 13 June 2025
[2] [Pravilnik o fiskalizaciji računa u krajnjoj potrošnji, NN 153/2025](https://narodne-novine.nn.hr/clanci/sluzbeni/2025_12_153_2278.html) — Narodne novine, 17 December 2025
[3] [Pravilnik o izmjenama i dopunama Pravilnika o fiskalizaciji računa u krajnjoj potrošnji, NN 97/2026](https://narodne-novine.nn.hr/clanci/sluzbeni/2026_09_97_1181.html) — Narodne novine, 2 September 2026
[4] [Fiskalizacija računa u krajnjoj potrošnji: Tehnička specifikacija za korisnike, v2.7](https://porezna-uprava.gov.hr/UserDocsImages/Fiskalizacija/Tehni%C4%8Dke%20specifikacije/Fiskalizacija%20-%20Tehnicka%20specifikacija%20za%20korisnike_v2.7%20%2821.07.2026.%29.pdf) — Porezna uprava, 21 July 2026
[5] [Tehnička specifikacija za korisnike, v2.6](https://porezna-uprava.gov.hr/UserDocsImages/Fiskalizacija/Tehni%C4%8Dke%20specifikacije/Fiskalizacija%20-%20Tehnicka%20specifikacija%20za%20korisnike_v2.6%20%2808.12.2025.%29.pdf) — Porezna uprava, 8 December 2025
[6] [Sadržaj računa](https://porezna-uprava.gov.hr/hr/sadrzaj-racuna/8038) — Porezna uprava, accessed 2026
[7] [Provjeri fiskalni račun](https://porezna.gov.hr/fiskalizacija/gotovinski-racuni/provjeri-fiskalni-racun) — Porezna uprava, accessed 2026
[8] [Kako prepoznati ispravan račun?](https://porezna-uprava.gov.hr/hr/kako-prepoznati-ispravan-racun/8613) — Porezna uprava, accessed 2026
[9] [Fiskalizacija računa u krajnjoj potrošnji (B2C poslovanje)](https://porezna-uprava.gov.hr/hr/fiskalizacija-racuna-u-krajnjoj-potrosnji-b2c-poslovanje-azurirano-5-1-2026/8033) — Porezna uprava, section updated 7 October 2026
[10] [Zakon o izmjenama i dopunama Zakona o fiskalizaciji u prometu gotovinom, NN 121/2019](https://narodne-novine.nn.hr/clanci/sluzbeni/2019_12_121_2387.html) — Narodne novine, 2019
[11] [Pravilnik o izmjenama i dopunama Pravilnika o fiskalizaciji u prometu gotovinom, NN 70/2020](https://narodne-novine.nn.hr/clanci/sluzbeni/2020_06_70_1390.html) — Narodne novine, 19 June 2020
[12] [Dopuna podataka na QR kodu: fiskalizacija (opinion, Klasa 410-01/21-01/1183)](https://porezna-uprava.gov.hr/Misljenja/Detaljno/2513) — Porezna uprava, 2 June 2021
[13] [Obavijest obveznicima fiskalizacije u krajnjoj potrošnji: tehnička unapređenja](https://porezna-uprava.gov.hr/hr/obavijest-obveznicima-fiskalizacije-u-krajnjoj-potrosnji-tehnicka-unapredjenja-u-sustavu-fiskalizacije-u-krajnjoj-potrosnji/8769) — Porezna uprava, 6 July 2026
[14] [Prilagodba servisa fiskalizacije u krajnjoj potrošnji za izmjene u 2026. godini](https://porezna.gov.hr/fiskalizacija/gotovinski-racuni/gotovinski-racuni-novosti/o/prilagodba-servisa-fiskalizacije-2026) — Porezna uprava, 10 September 2025
[15] [Tehnički podaci](https://porezna.gov.hr/fiskalizacija/gotovinski-racuni/tehnicki-podaci/o/tehnicki-podaci) — Porezna uprava, accessed 2026
[16] [Usporedba fiskalizacije u krajnjoj potrošnji i fiskalizacije eRačuna](https://porezna.gov.hr/fiskalizacija/api/dokumenti/46) — Porezna uprava, accessed 2026
[17] [Davčno potrjevanje računov: tehnična dokumentacija, v2.9](https://www.datoteke.fu.gov.si/dpr/files/TehnicnaDokumentacijaVer2.9.pdf) — Finančna uprava RS, 2025
[18] [Information capacity and versions of QR Code](https://www.qrcode.com/en/about/version.html) — Denso Wave, accessed 2026
[19] [ISO/IEC 15415:2024](https://genorma.com/en/standards/iso-iec-15415-2024) — Genorma catalogue listing (third party), accessed 2026
[20] [fiskalizacija topic](https://github.com/topics/fiskalizacija) — GitHub, accessed 2026
[21] [nticaric/fiskalizacija](https://github.com/nticaric/fiskalizacija) — GitHub, accessed 2026
[22] [l-d-t/fiskalhrgo](https://github.com/l-d-t/fiskalhrgo) — GitHub, accessed 2026
[23] [zxing/zxing](https://github.com/zxing/zxing) — GitHub, accessed 2026
[24] [tgrospic/Cis.Fiscalization](https://github.com/tgrospic/Cis.Fiscalization) — GitHub, accessed 2026
[25] [senko/fiskal-hr](https://github.com/senko/fiskal-hr) — GitHub, accessed 2026
[26] [fiskalizacija_qr_code.rb](https://gist.github.com/zoki/a5d2a76366e5d36adc59c0251c55096c) — GitHub gist (third party), accessed 2026
[27] [Croatia country report](https://docs.barcoder.ai/docs/payments/HR) — Barcoder research corpus, read 2026-10-30

## Deployments

_No country reports mention this standard by name._
