hr.invalid_vat_rate
HTTP 400 type: validation_error param: vat.0.rate{ "error": { "type": "validation_error", "code": "hr.invalid_vat_rate", "message": "VAT rate \"22.00\" is not permitted. Croatian VAT rates are 0.00, 5.00, 13.00 and 25.00 (restrictive error 182).", "param": "vat.0.rate", "upstream": null, "doc_url": "https://docs.fiskhub.com/errors/hr.invalid_vat_rate" }}param identifies which line failed, indexed from zero.
What happened
A VAT rate in the vat array is not one of the permitted Croatian rates. Restrictive error
182 limits them to:
| Rate | |
|---|---|
"0.00" | Zero-rated |
"5.00" | Reduced |
"13.00" | Reduced |
"25.00" | Standard |
FiskHub checks this locally, before sending.
Should you retry?
Not unchanged. The set is fixed by law.
The fix
Send one of the four rates, as a decimal string with exactly two places.
{ "vat": [ { "rate": "25.00", "base": "3.60", "amount": "0.90" }, { "rate": "5.00", "base": "4.57", "amount": "0.23" } ]}Common causes:
| Sent | Problem |
|---|---|
25 | A JSON number. Send "25.00". |
"25" | No decimals. Send "25.00". |
"25.0" | One decimal. Send "25.00". |
0.25 | A fraction rather than a percentage. Send "25.00". |
"22.00" | Not a Croatian rate — probably another country’s standard rate. |
"10.00" | Not a Croatian rate. The reduced rates are 5 and 13. |
One entry per rate. A sale spanning two rates has two entries, each with its own base and amount.
For a company that is not VAT-registered, send an empty array — or omit vat entirely, since it
defaults to [].
Rates change; the check does not
The permitted set comes from the specification, which has changed four times in fourteen months. If a rate you believe is current is being refused, check the current country schema and then tell us — a rate the regulation permits and we refuse is our bug.
Do not hard-code the rates in a way that requires a device firmware update to change. Rates are configuration.
Consumption tax is a different field
consumption_tax (porez na potrošnju) has its own range, 0.00–3.00, and its own error:
hr.invalid_pnp_rate. Do not put it in vat.