Description
Croatian law requires invoices to be reported to the Tax Administration (Porezna uprava) in real time – “fiskalizacija”. Fiskalizator for WooCommerce connects your store to the Fiskalizator service, which creates the invoice for each paid order, signs it with your fiscalization certificate, reports it to the Tax Administration and returns the JIR and ZKI codes.
Hrvatski: dodatak povezuje WooCommerce trgovinu s Fiskalizatorom, koji za svaku plaćenu narudžbu izradi račun, potpiše ga vašim certifikatom, fiskalizira kod Porezne uprave i vrati JIR i ZKI. Sučelje je na hrvatskom kad je WordPress na hrvatskom.
What it does
- Fiscalizes orders automatically when they reach “Processing” or “Completed” (Fiskalizacija 1.0, B2C receipts with JIR/ZKI).
- Issues a structured B2B e-invoice (eRačun, Fiskalizacija 2.0) when the buyer enters a company tax number (OIB) at checkout, sent through your own information intermediary.
- Writes the result back to the order: an order note, the invoice number and JIR, and a “Fiscalization” column in the orders list (classic and HPOS screens).
- Guided setup inside the WordPress admin: company details, certificate upload, business premises, e-invoice access point, EU OSS sales and reverse charge.
- Invoice book with late fiscalization, proformas and invoices from orders, and offers.
- Optional “Withdraw from the contract” button (EU Directive 2023/2673), as a footer button you switch on or the
[fiskalizator_raskid]shortcode. - An OIB / EU VAT number field at checkout – both the block checkout and the classic one – with a check-digit validation.
The plugin is an interface to the Fiskalizator service. The fiscalization itself – certificate handling, XML signing and the connection to the Tax Administration – runs in the service, not on your site.
Requirements
- A WooCommerce store selling under a Croatian tax number (OIB).
- A Fiskalizator account. The plugin can open one for you when you connect the store. The service is paid, with a free trial; see https://fiskalizator.klikoteka.hr.
- A fiscalization certificate (.p12) from FINA or Certilia.
- For e-invoices: your own contract with a Croatian information intermediary (for example ePoslovanje or Moj-eRačun).
External services
This plugin relies on the Fiskalizator service, operated by Klikoteka d.o.o. (https://fiskalizator.klikoteka.hr). It cannot fiscalize anything without it. Nothing is sent until you connect the store on the plugin’s “Connection” screen.
What is sent, and when:
- When you connect the store: the site URL, the site name and the admin e-mail address, so the service can open or find your account. The service calls your site back once (
/wp-json/fiskalizator/v1/verify) to confirm that you control the domain: it sends a random challenge and your site answers with a keyed hash of it. That address answers only for a few minutes after an administrator presses a connect button, and never returns the key itself. - When an order reaches “Processing” or “Completed”: the order data needed to issue the invoice – line items, amounts, tax, payment method, and the buyer’s name, address, e-mail and tax number if one was entered. The request is signed with a secret key shared between your store and the service.
- When you refund an order (in full or in part): the order number, the refund’s number, amount and reason, and how the refunded amount falls across VAT rates, so the service can issue the storno or credit note that refers to the invoice.
- When a buyer types a company tax number (OIB) at checkout or in the cart: that number, to look up the company’s public registry name and address.
- When you issue a proforma or an invoice for an order by hand (Orders screen): the same order data as above.
- When you press “Import customers from the store” (Settings screen): for WooCommerce customers that have a company name – that name, the billing address, the e-mail address and a VAT number if one is stored.
- When you use the plugin’s admin screens: the plugin’s own version number (so the service can tell you when a newer one is out; the plugin never downloads or installs anything itself), and what you enter there (company details, premises, settings, offers) and, if you upload it, your fiscalization certificate and its password, which go directly to the service over HTTPS and are not stored on your site.
- When you press “Choose a plan” (Overview screen): nothing is sent by your site. The button is a link to the service’s plan page on https://klikoteka.hr, and the link carries an identifier of your account so the plan is attached to it.
- When you turn on the withdrawal button: nothing is sent by your site; the button is a link to a form hosted by the service, which the buyer fills in there.
What comes back: after fiscalization the service calls your site (/wp-json/fiskalizator/v1/order-fiscalized, signed with the same key) to write the invoice number, JIR and status onto the order.
Service terms of use: https://fiskalizator.klikoteka.hr/terms
Service privacy policy: https://fiskalizator.klikoteka.hr/privacy
The service in turn reports invoices to the Croatian Tax Administration, as the law requires, and sends e-invoices through the information intermediary you connect.
Installation
- Install and activate the plugin. WooCommerce must be active.
- Open Fiskalizator Connection in the WordPress admin.
- If you already have a Fiskalizator account, enter its e-mail address and confirm the message sent to it. If you do not, choose “open a new account” and the store is connected in one click.
- Follow Fiskalizator Setup: company details, certificate, business premises and, if you sell to companies, your e-invoice access point.
From then on orders are fiscalized automatically.
FAQ
-
When is an invoice fiscalized?
-
When the order reaches the status “Processing” or “Completed”. You can also turn automatic fiscalization off and confirm invoices yourself from the Invoices screen.
-
Where is my certificate stored?
-
In the Fiskalizator service, encrypted. You upload it from the plugin’s Setup screen; it is sent straight to the service and is never saved on your WordPress site.
-
Is the service free?
-
No. The plugin is free and open source; the Fiskalizator service it connects to is a paid subscription with a free trial.
-
Does it work with High-Performance Order Storage (HPOS)?
-
Yes. Compatibility is declared and order data is written through the WooCommerce CRUD objects.
-
No. It is off until you switch it on under Fiskalizator Settings, or place it with the
[fiskalizator_raskid]shortcode. -
Which languages does the plugin use?
-
English, with a Croatian translation included. It follows the WordPress site (or user) language.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Fiskalizator for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Fiskalizator for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
2.6.1
- The plugin is now distributed through the WordPress.org plugin directory, so updates arrive through WordPress like those of any other plugin.
- The “newer version available” notice now points to the WordPress update screen instead of a separate download.
2.6.0
- A refund made in WooCommerce – a partial one too – now issues the storno or credit note in Fiskalizator by itself, referencing the original invoice. It can be switched off in the business premises settings.
- The plugin reports which items were refunded, so VAT is reduced at the right rate on orders that mix VAT rates.
- The order gets a note naming the document issued for the refund.
- A notice on the Fiskalizator screens says when a newer plugin version is out and lists what changed; after an update, what the new version changed.
2.5.0
- The company tax number field now works in the block checkout too.
- The Overview screen shows the account’s plan (trial, active, ended) with a link to choose one. The plan is attached to the account the store is already connected to.
- A plan paid for before the store was connected is applied after an e-mail confirmation, instead of a second account being opened.
- Translations go through the WordPress translation system; Croatian ships with the plugin.
2.4.0
- Security: the domain check no longer returns the site token. The service sends a challenge and the site answers with an HMAC of it, only while an administrator is connecting the store. Tokens created by earlier versions are discarded.
- The order write-back endpoint checks its signature in the REST permission callback.
- When an older copy of the plugin is still active, this one now asks you to deactivate it first instead of doing so itself.
- Activating the plugin again switches its WooCommerce webhook back on.
- Requests to the service use the safe HTTP API; form output is escaped where it is printed.
2.3.0
- The plugin is now named “Fiskalizator for WooCommerce” and lives in the folder
fiskalizator-for-woocommerce. - Moving from the older copy: deactivate the old copy, then activate this one. The store stays connected, and deleting the old copy no longer removes the connection.
2.2.0
- The automatic “Withdraw from the contract” footer button is now opt-in. Stores that were already showing it keep it.
- The overview screen says when the button is off and links to the setting.
- readme in English, with a full description of the external service.
2.1.0
- Connection: new “I have a Fiskalizator account” option – the store is attached to your existing account after an e-mail confirmation, instead of a second account being opened.
- “Open a new account” no longer opens a second account when the e-mail address already has one.
2.0.0
- The whole product inside the WordPress admin: Overview, Connection, Setup, Invoices, Orders, Offers, Settings.
- One-click connection: the plugin proves control of the domain and the service opens an account and a business unit.
- Guided setup, including certificate upload and connecting an e-invoice access point.
- Invoice book with late fiscalization, proforma/invoice from an order, offers.
- Every call to the service is signed with the store’s own secret key.
1.7.0
- The fiscalization result is written onto the order: note, meta data and a “Fiscalization” column (classic and HPOS screens).
- Bilingual interface: Croatian on Croatian installs, English otherwise.
1.6.0
- Settings show which account the store is connected to and what is left to set up.
- Company name and address filled in from the registry at checkout.
1.5.0
- High-Performance Order Storage (HPOS) compatibility.
1.0.0
- First version: automatic webhook registration and connection status.