Skip to content
All postsBlog

The anchor price on your site: how to publish an XML/CSV price list and show the 10 September 2026 price by 1 October

A guide for webshops and service businesses selling in Croatia: what the Government decisions of 10 September 2026 require, what the price-list file looks like (fields, CSV and XML examples, file name), step by step for WooCommerce, WordPress, Shopify and custom builds, common mistakes, fines and a 5-day plan.

  • Ecommerce
  • Consumer protection
  • Guide
Jurica StublićJurica StublićFounder · ai.webica.hr17 September 2026·9 min read

The deadline is 1 October 2026. By then every webshop and every service business with a website selling to consumers in Croatia needs two things: the sidrena cijena (anchor price) shown next to every price, and a price list published in XML or CSV. This guide covers what exactly is required, what the file looks like and how to get there on each platform. It ends with a 5-day plan.

One note first: the decisions were adopted at the Government session on 10 September 2026, but at the time of writing they have not yet been published in Narodne novine (the Official Gazette). HOK (the Croatian Chamber of Trades and Crafts) has asked for clarification on exemptions. Everything below follows the text the Government adopted; when the final text is out, I update the guide, the check and the plugin.

What changed on 10 September

Two decisions, one legal basis: Zakon o iznimnim mjerama kontrole cijena, NN 40/2025 (the Croatian Act on Exceptional Price Control Measures), Articles 6 and 8.

The decision on displaying the additional price. The obligation that since May 2025 covered food, drinks, cosmetics, cleaning products, toiletries and household goods now covers all products and all services. The reference date for the newly covered products and services is 10 September 2026. The old categories keep 2 May 2025.

The decision on publishing price lists of products and services. The obligation that covered supermarkets, hypermarkets, discounters and cash and carry now covers every trader and service provider with an established website.

Both enter into force on 1 October 2026.

The anchor price is not the Omnibus price

Two obligations people confuse:

  • Omnibus (Consumer Protection Act, Article 19): when you announce a reduction, you must state the lowest price in the 30 days before it. It applies only while the promotion runs.
  • Anchor price (the price control act): next to every price, always, you show the price that applied on the reference date. It applies regardless of promotions.

A product on sale can therefore carry three amounts: the current price, the lowest price in 30 days and the anchor price. The labels must be clearly different. I recommend the literal Croatian label "Cijena na dan 10.9.2026." because it is unambiguous and an inspector recognises it at once.

Two edge cases the decision settles:

  • A product on sale on 10 September. The anchor is the regular price of that day, not the promotional one. The decision explicitly excludes special forms of sale.
  • A product created after 10 September. No anchor price, because it had no price on that day. Nothing is shown next to it. That is not a loophole, it is the text.

Who is covered

Three groups, with different work to do:

Webshop. An anchor price next to every price on product cards and product pages. The decision talks about the point of sale and advertising; it does not mention the basket. The conservative option is to show it there too until an official interpretation arrives. On top of that, a daily price list of all products.

Service business with prices on its site. Hairdressers, repair shops, clinics, holiday rentals, gyms. An anchor price next to every service and a price list of services refreshed on every change.

Site without prices. This is the biggest surprise. The price-list obligation reads "whoever has an established website", not "whoever publishes prices on it". Under the text, a brochure site with no prices at all still has to publish a price list of services. This is exactly what HOK asked to have clarified. Until the answer comes, I recommend preparing rather than waiting.

Services "by agreement", with no fixed price, are not mentioned. No price, nothing to display. A price list of the services that do have a price is still required.

What the file must contain

Point III of the decision prescribes the fields for products:

FieldNote
nameproduct name
codeyour internal code or SKU
brandbrand
unit of measurewhere applicable (kg, l, piece)
price per unitwhere applicable
retail pricethe current price, with a flag for a special form of sale and its name
anchor pricethe price on 10 September 2026 (or 2 May 2025 for the old categories)
barcodeEAN, if any
availabilityavailable or unavailable

Point IV prescribes the fields for services: service name, retail price with the special-sale flag and anchor price.

Example CSV, semicolon-separated, UTF-8, with the Croatian column names the market expects:

naziv;sifra;marka;jedinica_mjere;cijena_za_jedinicu_mjere;maloprodajna_cijena;posebni_oblik_prodaje;naziv_posebnog_oblika;sidrena_cijena;barkod;dostupnost
Cotton T-shirt;T-001;Example;kom;;19,90;NE;;18,90;3850123456789;dostupno
Glass set 6/1;G-014;Example;kom;;24,90;DA;akcija;29,90;3850123456796;dostupno

The same content as XML:

<?xml version="1.0" encoding="UTF-8"?>
<cjenik objekt="internetska trgovina" datum="2026-10-01T06:30:00+02:00">
  <stavka>
    <naziv>Cotton T-shirt</naziv>
    <sifra>T-001</sifra>
    <marka>Example</marka>
    <jedinica_mjere>kom</jedinica_mjere>
    <maloprodajna_cijena>19,90</maloprodajna_cijena>
    <posebni_oblik_prodaje>NE</posebni_oblik_prodaje>
    <sidrena_cijena>18,90</sidrena_cijena>
    <barkod>3850123456789</barkod>
    <dostupnost>dostupno</dostupnost>
  </stavka>
</cjenik>

The Ministry has not published an official schema for small traders. The structure above follows the fields in the decision and the practice large retailers adopted under the earlier decision (Official Gazette 75/2025). When an official schema appears, adapting is a matter of renaming columns, not building a new system.

File name, updates, retention, bots

Point VI wants the file name to carry the type of outlet, the outlet address, an outlet code, a sequence number and a timestamp with date and time. The text was written for physical shops. For a webshop use the type "internetska trgovina", your registered address and a code of your choosing:

internetska-trgovina_ilica-1-10000-zagreb_shop01_0042_20261001T0630.csv

Updates: products once a day by 8:00 for the current working day, services on every change, by 8:00 on the day of the change. In practice: an automated job at 6:30 every morning.

Retention: every published file stays available for 30 days. Do not overwrite one file; accumulate them with the date in the name and keep an index.

Bots: point VII requires you to let software tools fetch the data in real time. That means no captcha, no bot protection on the price-list path, no login, a correct Content-Type (text/csv or application/xml) and Allow: /cjenik/ in robots.txt. Cloudflare's bot fight mode across the whole domain breaks compliance here.

Where the file must live: on your own site. The decision says "on its own website". Linking to someone else's server is a risk I would not take.

Step by step, by platform

WooCommerce

  1. Record the regular prices of all products and variations as of 10 September 2026. If you have a database backup from that day or a sync from your ERP, take the prices from there. If not, take the current regular price only for products whose price has not changed since, and note that you did.
  2. Store the anchor price as a product and variation meta field.
  3. Show it next to the price through the price display filter, labelled "Cijena na dan 10.9.2026.".
  4. Set up a daily WP-Cron job that generates CSV and XML into the uploads folder and publishes an index at /cjenik/.
  5. Add a "Cjenik (XML/CSV)" link to the footer and Allow: /cjenik/ to robots.txt.

All of that is what my plugin for WordPress and WooCommerce does. The same plugin has a services module for sites without a shop.

WordPress without a shop (service sites)

  1. Enter your services in a table: name, price, anchor price, special form of sale.
  2. Show the price list on a page with both prices.
  3. Every price change regenerates the file immediately.

Shopify

  1. A metafield on the product and the variant for the anchor price, filled by CSV import.
  2. Display in the theme next to the price (Liquid), on cards and product pages.
  3. The file: Shopify does not serve arbitrary files from your domain. The solution is an app or an external job that generates CSV and XML daily and publishes them on a subdomain of your domain, linked from the footer.

Custom shop or an ERP as the source of prices

  1. The anchor price is a new column in the catalogue, filled once from the ERP as of 10 September.
  2. A daily export from the catalogue to CSV and XML, kept for 35 days.
  3. A public /cjenik/ route with an index and the files, without protection.

rent.webica.hr

The platform adds the anchor price display and the daily price list for all webshop and booking packages by 1 October. You confirm the anchor prices in the dashboard where the price history does not reach back to 10 September.

Common mistakes

  • The price list as a PDF. The decision requires a file suitable for automatic processing. A PDF, an image or an HTML table is not that.
  • An anchor price without a label. Two amounts side by side with no text are not "clear, visible and legible".
  • The promotional price as the anchor. The decision excludes special forms of sale. The anchor is the regular price of that day.
  • Overwriting the same file. After 30 days you have no proof of what was published.
  • Bot protection across the whole domain. The inspection tool gets a 403 and that is a finding.
  • The price list on someone else's domain. The decision says on your own website.

Fines and enforcement

Article 20 of the price control act: a company 3,000 to 30,000 EUR, the responsible person in a company 1,000 to 4,000 EUR, a sole trader 1,000 to 20,000 EUR, a natural-person trader 1,000 to 6,000 EUR. Enforcement is by the market inspectors of Državni inspektorat (the Croatian State Inspectorate), Article 18. The fines sit in the act, not in the decisions, so they apply from the first day.

What is still open

Three things await an answer from the Ministry or publication in the Official Gazette:

  1. Exemptions by sector and for sites without prices. HOK has asked for clarification.
  2. The anchor price in the basket and at checkout. The decision does not mention them.
  3. The file name for a webshop. The text was written for physical outlets.

So keep the reference date, the fields and the file name in settings, not in code. A change in the text then becomes a change of a setting.

How to comply in 5 days

Day 1: check. The free check looks at a product page, the /cjenik/ path, robots.txt and the footer. It shows whether there is an anchor price, whether there is a file and whether bots can fetch it.

Day 2: prices as of 10 September. A backup, an ERP export or confirmation that prices have not changed. This is the one step software cannot do for you.

Days 3 and 4: plugin or implementation. On WordPress the plugin (74 EUR), or the plugin with setup (114 EUR) if you would rather not do it yourself. Shopify and custom builds go by quote.

Day 5: control. Run the check again, open /cjenik/ in a browser, download the CSV, check the label next to the price on three random products.

Summary

  • From 1 October 2026 every price carries an anchor price as of 10 September 2026. No promotion, a clear label.
  • Whoever has a website publishes a price list in CSV or XML, daily, kept for 30 days, reachable by bots.
  • Prescribed fields: name, code, brand, unit of measure, retail price with a sale flag, anchor price, barcode, availability.
  • Fines up to 30,000 EUR for companies, up to 20,000 EUR for sole traders.
  • The decisions are not yet in the Official Gazette. Keep dates and fields in settings.

Sources

About the author

Jurica Stublić

Jurica Stublić

Founder of webica.hr, ai.webica.hr and rent.webica.hr

4+ years of development and AI automation. I build AI solutions and process automation, and help SMEs make use of EU digitalisation vouchers - from the eKohezija application through to delivering the solution and training the team.