Publishing a price list: XML and CSV, every day
The Croatian decision on publishing price lists requires XML ili CSV on your website, refreshed daily and kept for 30 days. The plugin does it on a permanent address, with an archive.
The 1 October 2026 start has been postponed, and permanent rules are expected in November. The minister says the aim has not been dropped. Setup takes five minutes, price history is recorded from day one, and updates for the new rules come through WordPress at no extra cost.
What gets published
Every day, right after the price snapshot, the whole catalogue is exported to the chosen formats at a permanent address. The dated file stays as an archive and an undated file always points at the newest list.
https://your-store.com/cjenik/
https://your-store.com/cjenik/cjenik.csv
https://your-store.com/cjenik/cjenik-2026-09-21.csv
https://your-store.com/cjenik/index.jsonThree formats, the same content
CSV is semicolon separated, the notation Croatian ERPs and localised Excel produce. Numbers use a decimal point and no thousands separator.
XML carries one element per product; JSON adds a product count at the end so a truncated file is obvious.
Archive and JSON index
index.json lists every available day and address per format, plus the store name, export date, product count and column list.
Retention is a setting, ninety days by default.
Why it is served through PHP
A file in uploads is public on both Apache and nginx, while an .htaccess rule only applies to Apache. Serving through WordPress honours the visibility setting on any web server and keeps the headers correct.
Large catalogues
The export runs in batches, writing to a temporary file and renaming only once the whole catalogue is in. Anyone fetching mid-export gets yesterday's complete list rather than today's half one.
Customising the content
Each row passes through a filter before it is written, so values can be changed from a theme or your own plugin.
add_filter( 'klikoteka_cjenik_red', function ( $red, $product ) {
$red['kategorija'] = strtoupper( $red['kategorija'] );
return $red;
}, 10, 2 );Export columns
| Column | What it holds |
|---|---|
| sifra | Product SKU; the WooCommerce id when there is none |
| naziv | Product name as shown in the store |
| barkod | GTIN/EAN from the WooCommerce field, when filled |
| kategorija | Full categories, separated by a slash |
| cijena | Selling price including tax, as the buyer sees it |
| cijena_bez_pdv | The same price excluding tax |
| valuta | Store currency, e.g. EUR |
| sidrena_cijena | Anchor price, when one exists |
| sidrena_na_dan | Which day that is |
| najniza_30_dana | Lowest price in the window, when covered |
| na_snizenju | da or ne |
| stanje | Stock quantity, when enabled in settings |
| url | Product address in the store |
Price on 2.5.2025.: €29.90
Lowest price in the last 30 days: €24.50
This is what your buyer sees under the price
This page explains one obligation. The plugin handles all three at once, including what the Ministry clarified on 18 September 2026.
Price on 2.5.2025.
Shampoo is cosmetics, so the earlier reference day applies. The plugin knows this by category.
Lowest price in the last 30 days
From daily snapshots of the price the buyer actually saw. Without enough snapshots it prints nothing.
Price list
The same data for the whole catalogue, every night in XML and CSV, at a permanent address.
From purchase to the first anchor price
Buy
By card through Stripe, with an invoice on your VAT id.
Download the ZIP and key
Right on the page and by e-mail.
Install
Open Plugins, Add new, Upload plugin, then Activate. Do not unzip the file.
Go through the wizard
It opens by itself after activation: key, label language, reference dates, anchor and lowest prices, a display check and the price list. Recording starts at once; updates arrive through WordPress.
If the download or install gets stuck, write to info@klikoteka.hr. We reply the same business day and sort it out with you.
€20 + VAT, paid once
€25,00 incl. VAT.Price on 21.9.2026.: 20,00 € + VAT
- All three obligations, no tiers or add-ons
- One store and its staging copy (3 addresses)
- Updates through WordPress, no renewal
- In Croatian and English: the plugin shows in the language your WordPress admin is set to
- E-mail support in Croatian or English
- Invoice with your VAT id
If we build your webshop, the plugin is included at no charge.
Version 1.8.6, WordPress 6.3+, PHP 7.4+.
The same job, three ways
- History for the lowest price
- Plugin: Recorded daily, automatically
- By hand, in Excel: Someone logs it every day
- Custom build: Has to be programmed
- Two reference days
- Plugin: Category rule
- By hand, in Excel: Product by product
- Custom build: Per specification
- XML and CSV price list
- Plugin: Publishes itself nightly
- By hand, in Excel: Export and upload daily before 8:00
- Custom build: Per specification
- Regulatory clarifications
- Plugin: The 18 Sep 2026 one shipped as update 1.3
- By hand, in Excel: Track them yourself
- Custom build: Changes by agreement
- Cost
- Plugin: €20 + VAT, once
- By hand, in Excel: Your time, every day
- Custom build: Quoted per scope
| Task | Plugin | By hand, in Excel | Custom build |
|---|---|---|---|
| History for the lowest price | Recorded daily, automatically | Someone logs it every day | Has to be programmed |
| Two reference days | Category rule | Product by product | Per specification |
| XML and CSV price list | Publishes itself nightly | Export and upload daily before 8:00 | Per specification |
| Regulatory clarifications | The 18 Sep 2026 one shipped as update 1.3 | Track them yourself | Changes by agreement |
| Cost | €20 + VAT, once | Your time, every day | Quoted per scope |
Rather not do it yourself? We will set it up.
For €40,00 + VAT you get the plugin and one of our people to set it up on your site. Within one business day of purchase we e-mail you and ask for administrator access to your WordPress, ideally a temporary admin user you delete once we are done. Then we:
- install and activate the plugin and enter your licence
- sort categories by reference day (2 May 2025 or 10 Sep 2026)
- switch on the XML and CSV price list and add a link to it
- check the display on product pages and product cards in your theme
- tell you what was done; you then delete the access
Something special, like a custom theme, an ERP without a price export or several shops? Write to info@klikoteka.hr and we will send an estimate and a quote for your system.
On Shopify? The Shopify version is finished and awaiting App Store approval. It will be available in the coming business days.
€50,00 incl. VAT.Price on 24.9.2026.: 40,00 € + VAT
You get the key and ZIP right away, same as without setup. At checkout you enter your site address and phone.
Before you buy
How long does exporting a few thousand products take?
It runs in batches and each batch schedules the next. Typically a few minutes, and the previous list stays fully available throughout.
Can I export only some categories?
The export covers the whole published catalogue. Row content can be changed through the klikoteka_cjenik_red filter.
Are variations included?
Yes, each variation is its own row. Variable parents have no price of their own and are skipped.
Is the price list indexed by Google?
The index page carries noindex, and the files themselves are data, not search content.
What if I already have a Google Shopping feed?
Different job. An advertising feed has its own fields and rules; this is a full catalogue export with pricing and historical values.
The same plugin also handles
More time, and setup still takes five minutes
The 1 October 2026 start has been postponed, and permanent rules are expected in November.
Need theme integration or an ERP history import? Get in touch.