Skip to content

Croatia (FINA)

Full support for Croatian B2C fiscalization requirements (FINA).

Prerequisites

RequirementDescription
OIBEntity with Croatian OIB (tax number)
CertificateDigital certificate (.p12) from FINA

Scope

TransactionStatus
B2C domesticFiscalized via FINA
B2B foreignAllowed, no fiscalization
B2B domesticNot supported (Fiskalizacija 2.0 requirements)

Setup

1. Upload Certificate

Upload FINA certificatetypescript
import SpaceInvoices from "@spaceinvoices/js-sdk";

const sdk = new SpaceInvoices("YOUR_API_KEY");

await sdk.finaCertificate.uploadFinaCertificate({
  file: fs.readFileSync("certificate.p12"),
  passphrase: "cert-password",
});

2. Register Business Premise

Register your business location with a unique premise ID. This creates the premise and registers it with FINA.

Register premisetypescript
const _premise = await sdk.finaPremises.create({
  business_premise_name: "OFFICE1",
});

3. Register Electronic Device

Register a device for the premise. Device IDs are numeric (e.g., 1, 2, 3).

Register devicetypescript
await sdk.finaDevices.registerFinaDevice("prm_123", { electronic_device_name: "1" });

4. Enable FINA

Enable FINAtypescript
await sdk.finaSettings.update({ enabled: true });

Fiscalized Invoices

Invoices are automatically fiscalized when FINA is enabled:

Create fiscalized invoicetypescript
const _invoice = await sdk.invoices.create({
  items: [{ name: "Service", quantity: 1, price: 100 }],
  fina: {
    business_premise_name: "OFFICE1",
    electronic_device_name: "1",
  },
});

FINA returns confirmation data on the invoice:

Response Fields
jir
Unique invoice identifier from FINA (Jedinstveni Identifikator Racuna)
zki
Protective mark / security code (Zastitni Kod Izdavatelja)

QR Code

Fiscalized invoices include a verification QR code linking to the Croatian tax authority, embedded automatically in the PDF:

Render PDFtypescript
const _pdf = await sdk.invoices.renderPdf(invoice.id);