Cjenik u CSV ili XML formatu za web stranicu: struktura, primjeri i gdje ga objaviti

Koje stupce mora imati cjenik za usluge i za proizvode, kako nazvati datoteku, gdje je staviti na stranicu, pravilo 8:00 i arhiva 30 dana. S primjerima.

Ažurirano: 4 min čitanja

Od 17. 11. 2026. svatko tko prodaje potrošačima i ima mrežnu stranicu na njoj objavljuje cjenik u CSV ili XML formatu. Odluka o objavi cjenika (NN 101/2026) kaže što datoteka mora sadržavati, ali ne propisuje nazive stupaca ni predložak. Ovo je struktura koju koristimo za klijente i koju daje naš generator cjenika.

Što točno traži Odluka

Datoteka mora biti:

  • u .csv ili .xml formatu
  • strojno čitljiva: tekst koji program može pročitati, ne slika, ne PDF
  • dostupna softverskim alatima: bez prijave, bez obrasca, bez captche, javni link
  • ažurirana svaki dan do 8:00
  • dostupna 30 dana od objave, dakle stare datoteke ostaju na stranici

Web shop ima zasebnu datoteku. Ako imaš više lokacija, svaka lokacija ima svoju datoteku, s adresom i oznakom lokacije u nazivu.

Stupci za usluge

Za usluge Odluka traži naziv usluge, maloprodajnu cijenu s oznakom je li riječ o posebnom obliku prodaje (akcija, popust) i sidrenu cijenu. Koristimo ove nazive stupaca:

naziv_usluge;maloprodajna_cijena;poseban_oblik_prodaje;sidrena_cijena

Primjer za frizerski salon:

naziv_usluge;maloprodajna_cijena;poseban_oblik_prodaje;sidrena_cijena
Šišanje muško;15,00;NE;14,00
Šišanje žensko;25,00;NE;25,00
Pranje i feniranje;20,00;DA;22,00
Bojanje kose, kratka kosa;45,00;NE;42,00

Redak “Pranje i feniranje” je na akciji (poseban oblik prodaje DA), pa je maloprodajna cijena niža od sidrene.

Za stavke na akciji uz njih na polici i na stranici mora stajati i najniža cijena u zadnjih 30 dana (Zakon o zaštiti potrošača). Odluka je ne traži u datoteci, ali naš generator uvijek dodaje neobavezni zadnji stupac najniza_cijena_30_dana (kod usluga peti, kod proizvoda jedanaesti), da sve tri cijene imaš na jednom mjestu. Kad stavka nije na akciji, polje ostaje prazno; kad je poseban_oblik_prodaje DA, generator traži da ga upišeš.

Stupci za proizvode

Za proizvode traži se više: naziv, šifra, marka, jedinica mjere (ako je primjenjivo), cijena za jedinicu mjere, maloprodajna cijena s oznakom posebnog oblika prodaje, sidrena cijena, barkod i je li proizvod dostupan.

naziv;sifra;marka;jedinica_mjere;cijena_za_jedinicu_mjere;maloprodajna_cijena;poseban_oblik_prodaje;sidrena_cijena;barkod;dostupnost

Primjer za mali dućan:

naziv;sifra;marka;jedinica_mjere;cijena_za_jedinicu_mjere;maloprodajna_cijena;poseban_oblik_prodaje;sidrena_cijena;barkod;dostupnost
Maslinovo ulje 0,5 l;1001;Domaće;l;24,00;12,00;NE;11,50;3850123456789;dostupno
Med bagrem 450 g;1002;OPG Kos;kg;20,00;9,00;DA;9,50;3850123456796;dostupno
Sapun lavanda 100 g;1003;Sapunara;kom;3,50;3,50;NE;3,50;3850123456802;nedostupno

Cijena za jedinicu mjere je cijena po litri, kilogramu ili komadu, isto kao na polici u dućanu. Za proizvode koji se prodaju po komadu upiši kom i istu cijenu.

Dogovori oko formata

Ove stvari Odluka ne propisuje, pa ih biramo tako da datoteka radi u Excelu i u programima:

  • Razdjelnik ; (točka-zarez). Hrvatski Excel tako sprema CSV i tako ga otvara. Zarez kao razdjelnik radi problem jer je zarez i decimalni znak.
  • Decimalni zarez (12,50), kao na računu. Ako ti sustav izbacuje točku (12.50), i to je čitljivo, samo budi dosljedan u cijeloj datoteci.
  • UTF-8 s BOM-om. Bez toga Excel na Windowsima pokvari č, ć, š, ž.
  • DA/NE za poseban oblik prodaje, dostupno/nedostupno za dostupnost. Bez praznih polja u tim stupcima.
  • Iznosi bez oznake valute. Sve je u eurima.

XML verzija

Ista struktura, samo u XML-u. Korijenski element nosi podatke o trgovcu, lokaciji i datumu, a svaka stavka ima elemente istog naziva kao stupci u CSV-u:

<?xml version="1.0" encoding="UTF-8"?>
<cjenik trgovac="Salon Ana" lokacija="Zadar, Ulica 1" datum="2026-10-01" vrsta="usluge">
  <stavka>
    <naziv_usluge>Šišanje muško</naziv_usluge>
    <maloprodajna_cijena>15,00</maloprodajna_cijena>
    <poseban_oblik_prodaje>NE</poseban_oblik_prodaje>
    <sidrena_cijena>14,00</sidrena_cijena>
    <najniza_cijena_30_dana></najniza_cijena_30_dana>
  </stavka>
</cjenik>

Znakovi <, > i & u nazivima moraju biti zapisani kao &lt;, &gt; i &amp;. Generator to radi sam.

Naziv datoteke

Datum i lokacija u nazivu rješavaju obvezu arhive i više lokacija odjednom:

cjenik-zadar-ulica-1-2026-10-01.csv
cjenik-zadar-ulica-1-2026-10-02.csv
cjenik-webshop-2026-10-01.csv

Oblik: cjenik-<oznaka lokacije>-<GGGG-MM-DD>.csv. Oznaka lokacije je kratka i bez razmaka. Web shop je zasebna “lokacija”. Ako u generatoru napraviš i usluge i proizvode, u naziv ulazi i vrsta: cjenik-zadar-ulica-1-usluge-2026-10-01.csv i cjenik-zadar-ulica-1-proizvodi-2026-10-01.csv.

Gdje ga staviti na stranicu

  1. Napravi mapu /cjenik/ na stranici i u nju stavljaj datoteke. Link je onda tvojadomena.hr/cjenik/cjenik-zadar-2026-10-01.csv.
  2. U podnožje stranice dodaj link “Cjenik (CSV/XML)” koji vodi na stranicu /cjenik/ s popisom datoteka ili izravno na današnju datoteku.
  3. Stare datoteke ne briši 30 dana. Najjednostavnije: nikad ih ne briši.

Ako stranicu održava netko drugi (agencija, WordPress developer), pošalji mu ovaj tekst i datoteke iz generatora. Ako je stranica statična i na Cloudflareu, pogledaj objavu o statičnim stranicama bez CMS-a.

Pravilo 8:00 i arhiva

Datoteka za tekući dan mora biti objavljena do 8:00. U praksi to znači jedno od dvoje:

  • Ručno: svaki dan ujutro spremiš novu datoteku s današnjim datumom. Ako se cijene nisu mijenjale, sadržaj je isti.
  • Automatski: sustav (web shop, POS ili naša aplikacija) svako jutro generira datoteku iz trenutnih cijena.

Za salon s 20 stavki ručni način je pet minuta posla. Za dućan s 300 proizvoda i akcijama to je posao za automatizaciju.

Kako provjeriti vlastitu datoteku

  • Otvori link u pregledniku u anonimnom prozoru. Ako traži prijavu ili pokazuje captchu, ne valja.
  • Otvori CSV u Excelu ili LibreOfficeu. Stupci moraju biti razdvojeni, hrvatska slova ispravna.
  • Provjeri da ni jedna sidrena cijena nije 0,00 i da su sve cijene veće od nule.
  • Provjeri da je u nazivu datoteke današnji datum.

Napravi datoteku sada u generatoru cjenika. Ako ti treba netko tko će to postaviti na stranicu i objasniti ti kako ažurirati, radimo to od 150 €: Sidrene cijene na web stranici.

Česta pitanja

Smijem li objaviti cjenik kao PDF?

Ne. Odluka traži .csv ili .xml datoteku koja je strojno čitljiva. PDF, slika ili tablica na stranici ne zadovoljavaju.

Moram li imati i CSV i XML?

Dovoljan je jedan format. Generator ti daje oba pa možeš objaviti oba, ali obveza je jedan.

Što ako se cijene ne mijenjaju svaki dan?

Datoteka svejedno mora biti objavljena svaki dan do 8:00, s datumom tog dana u nazivu. Ako se ništa nije promijenilo, sadržaj je isti, datum je novi.