Sidrena cijena: XML/CSV-Preisliste für Webshops in Kroatien
So erstellen Sie die XML/CSV-Preisliste mit sidrena cijena für einen individuellen Webshop: Pflichtfelder, Update bis 8:00 Uhr, Dateinamen, 30-Tage-Archiv.
Ab dem 1. Oktober 2026 muss jeder kroatische Händler und Dienstleister mit einer Website seine Preise als maschinenlesbare Datei veröffentlichen: XML oder CSV. Neben jedem Preis in dieser Datei steht eine zweite Zahl, die sidrena cijena (Ankerpreis): der Preis, den der Artikel am 10. September 2026 hatte. Produktlisten werden täglich bis 8:00 Uhr aktualisiert (das Wirtschaftsministerium versteht darunter Werktage). Dienstleistungslisten werden bis 8:00 Uhr an dem Tag aktualisiert, an dem sich ein Preis ändert. Jede veröffentlichte Version bleibt mindestens 30 Tage online.
Kurz gesagt besteht die Umsetzung aus einer Ankerpreis-Spalte mit Datum, einem geplanten Job, der vor 8:00 Uhr läuft, und einem Speicher, in den nur neue Dateien hinzukommen, hinter einer öffentlichen URL. Für WooCommerce gibt es dafür bereits Plugins. Dieser Beitrag richtet sich an Shops auf einem individuellen oder headless Stack, bei denen die Datei Aufgabe Ihres eigenen Teams ist.
Was der Beschluss verlangt
Die Regeln stehen in zwei Regierungsbeschlüssen, veröffentlicht in Narodne novine (dem kroatischen Amtsblatt) 101/2026, beide ab dem 1. Oktober 2026 in Kraft: der Odluka o objavi cjenika (Beschluss über die Veröffentlichung von Preislisten) und der Odluka o isticanju dodatne cijene (Beschluss über die Angabe des Ankerpreises).
Für Produkte (Punkt III des Preislisten-Beschlusses) muss die Datei enthalten:
Bezeichnung
Code (SKU)
Marke
Maßeinheit und Preis pro Einheit, sofern zutreffend
Einzelhandelspreis, dazu die Angabe, ob es sich um eine besondere Verkaufsform handelt, mit deren Bezeichnung
Ankerpreis
Barcode
verfügbar / nicht verfügbar
Für Dienstleistungen (Punkt IV) ist die Liste kürzer: Bezeichnung der Dienstleistung, Einzelhandelspreis mit derselben Kennzeichnung für Sonderverkäufe und der Ankerpreis.
Stichtag für den Ankerpreis ist bei den meisten Waren und Dienstleistungen der 10. September 2026. Für Lebensmittel, Getränke, Kosmetik, Reinigungsmittel, Hygieneartikel und Haushaltswaren, die bereits unter die Regeln von 2025 fielen, bleibt der 2. Mai 2025 der Stichtag.
Die Klarstellung des Wirtschaftsministeriums vom 22. September ergänzt drei Punkte, die für einen Webshop wichtig sind. Die Pflicht gilt für jede bestehende Website, auch für eine rein informative. Ein Social-Media-Profil zählt nicht als Website. Und eine Preisänderung im Laufe des Tages erfordert nicht noch am selben Tag eine neue Datei.
Die Bußgelder ergeben sich aus dem Zakon o iznimnim mjerama kontrole cijena (Gesetz über außerordentliche Preiskontrollmaßnahmen, NN 40/25, Artikel 20): 3.000 bis 30.000 Euro für ein Unternehmen, 1.000 bis 4.000 Euro für dessen verantwortliche Person, 1.000 bis 20.000 Euro für einen Gewerbetreibenden (obrtnik) und 1.000 bis 6.000 Euro für einen Händler, der eine natürliche Person ist.
CEO von Neviox Digital mit einem Ingenieurabschluss in Informatik von der Universität Split sowie mehreren Zertifizierungen. Meine Kernkompetenzen umfassen Frontend- und Backend-Technologien, mit besonderem Fokus auf LangChain, Next.js und AWS.
Neviox Digital
Haben Sie eine Vision für eine digitale Lösung? Möchten Sie Ihr technisches Know-how teilen oder Ihre Marke bewerben? Lassen Sie uns zusammenarbeiten und gemeinsam die Zukunft gestalten!
Was wir gebaut haben, was schiefging und was wir heute anders machen würden. Keine Linksammlungen.
Was der Beschluss offenlässt
Der Beschluss zählt die Daten auf, legt aber nicht fest:
Spaltennamen oder Spaltenreihenfolge
ein CSV-Trennzeichen oder eine Zeichenkodierung
ein XML-Schema (XSD)
eine URL, unter der die Datei liegen muss
Die Kroatische Handwerkskammer (HOK) hat eine Excel-Vorlage veröffentlicht. Sie ist hilfreich, aber nicht verbindlich. Jeder Shop trifft also eigene Entscheidungen. Treffen Sie sie einmal und dokumentieren Sie sie.
Zwei Anforderungen im Beschluss werden leicht übersehen.
Dateinamen tragen Metadaten. Laut Punkt VI enthalten die Dateinamen die Art der Verkaufsstelle, ihre Adresse, ihre Kennzeichnung, eine "broj pohrane" (Speichernummer) sowie einen Zeitstempel mit Datum und Uhrzeit der Veröffentlichung. Stand 24. September 2026 hat niemand offiziell definiert, was "broj pohrane" bedeutet. Wir behandeln sie als interne Nummer der Verkaufsstelle und halten sie stabil.
Maschinen müssen die Datei abrufen können. Punkt VII verpflichtet Händler, Softwaretools und automatisierten Programmen das Erfassen der Preisdaten zu ermöglichen. Unsere Lesart: Eine Datei hinter einem Login, einer Cookie-Wall oder einer Bot-Abfrage Ihrer Firewall erfüllt das nicht, selbst wenn ein Mensch sie im Browser öffnen kann.
Eine Umsetzung, die hält
So würden wir es auf einem Next.js-Shop oder einem anderen individuellen Stack aufsetzen. Dasselbe Muster funktioniert mit einem PHP- oder Python-Backend.
Ankerpreis pro Artikel (Ankerpreis-Beschluss, Punkt II): eine Spalte price_anchor plus eine Spalte price_anchor_date, einmal befüllt und nie überschrieben.
XML oder CSV, maschinenlesbar (Preislisten-Beschluss, Punkt II): aus der Datenbank erzeugt, UTF-8, Kopfzeile, eine Zeile pro SKU.
Produkte täglich bis 8:00 Uhr aktualisiert (Punkt II): ein geplanter Job gegen 6:00 Uhr mit Alarm bei Fehlschlag, damit Zeit für einen erneuten Lauf bleibt.
Dienstleistungen bei Preisänderung aktualisiert (Punkt II): derselbe Job, ausgelöst beim Speichern eines Dienstleistungspreises.
Metadaten im Dateinamen (Punkt VI): zum Beispiel webshop_<address>_<outlet>_<storage>_<YYYY-MM-DDTHHmm>.csv.
30 Tage abrufbar (Punkt II): jede Datei einmal in den Object Storage geschrieben und nie überschrieben, eine Indexseite, die sie auflistet, Löschung erst nach 30 Tagen.
Offen für automatisierte Tools (Punkt VII, unsere Lesart): eine öffentliche URL, ausgenommen von Bot-Abfragen und Login und nicht in der robots.txt gesperrt.
Eine CSV-Kopfzeile und eine Produktzeile könnten so aussehen (mit Semikolon getrennt, da Produktnamen oft Kommas enthalten):
Die Feldnamen sind unser eigenes Beispiel, kein offizielles Format, und der Barcode ist eine Platzhalter-EAN.
Woher der Ankerpreis kommt
In der Praxis ist das der schwierigste Teil. Hat Ihr Shop eine Preishistorie-Tabelle geführt, ist der Ankerpreis eine einzige Abfrage. Wenn nicht, sind die üblichen Quellen, nach Verlässlichkeit geordnet:
ein Datenbank-Backup vom 10. September
Bestellpositionen von diesem Tag, für Produkte, die verkauft wurden
ein Export an Preisvergleichsportale oder ein Marktplatz-Feed von diesem Datum
Der Ankerpreis-Beschluss selbst sagt, dass besondere Verkaufsformen beim Ankerpreis nicht berücksichtigt werden. War ein Produkt am 10. September reduziert, ist der Ankerpreis also sein regulärer Preis. Für Produkte, die nach diesem Datum eingeführt wurden, ist laut der Klarstellung des Ministeriums, wie N1 berichtet, der erste Verkaufspreis der Ankerpreis, mit deutlich angegebenem Datum. Deshalb braucht der Ankerpreis eine eigene Datumsspalte: Ein Shop kann SKUs mit Stichtag 2. Mai 2025, 10. September 2026 und einem späteren Einführungsdatum führen.
Speichern Sie außerdem die Quelle jedes Ankerpreises neben dem Wert. Fragt ein Prüfer nach, ist "aus dem Backup vom 10. September übernommen" eine bessere Antwort als eine Zahl ohne Herkunft.
Für Produkte mit konfigurierbaren Preisen wird der Ankerpreis laut der Klarstellung des Ministeriums für die einzelnen Elemente angegeben, aus denen sich der Endpreis berechnet, nicht für jedes einzelne Kundenangebot.
Eine einzige Datenquelle
Der Ankerpreis muss außerdem neben dem aktuellen Preis auf der Produktseite und in der Online-Werbung erscheinen. Liest die Seite ein Feld und der Dateigenerator ein anderes, laufen die Werte auseinander. Beide sollten dieselben Spalten price_anchor und price_anchor_date lesen, und beide sollten im Admin-Bereich schreibgeschützt sein.
Fragen, die Shopbetreiber stellen
"Ich habe über 500 Produkte. Wie stelle ich diese Liste zusammen?" Gar nicht von Hand. Sie wird aus derselben Datenbank erzeugt, die der Shop ohnehin nutzt, 500 Produkte machen also genauso viel Aufwand wie 50.
"Meine Produkte haben keinen Barcode. Darf das Feld leer bleiben?" Der Beschluss nennt den Barcode ohne den Zusatz "sofern zutreffend", den er bei den Einheitenfeldern macht, und sagt nicht, was gilt, wenn keiner vorhanden ist. Wir lassen das Feld leer, statt eine Nummer zu erfinden, und empfehlen, beim Ministerium schriftlich nachzufragen.
"Meine Website zeigt keine Preise. Muss ich trotzdem eine Liste veröffentlichen?" Laut Ministerium gilt die Pflicht auch für informative Websites. Nach den Hinweisen der HOK veröffentlichen Sie die Datei trotzdem.
Was wir vor dem 1. Oktober prüfen würden
Die Datei öffnet sich unter einer öffentlichen URL ohne Cookies oder Login, und eine curl-Anfrage liefert eine 200-Antwort, keine Abfrageseite.
Die CSV- oder XML-Datei lässt sich sauber parsen: richtige Kodierung, durchgehend dasselbe Trennzeichen, keine Zeilenumbrüche innerhalb von Feldern.
Jede aktive SKU hat einen Ankerpreis, ein Ankerdatum und einen Nachweis, woher der Preis stammt.
Der geplante Job schreibt eine neue Datei mit neuem Zeitstempel und lässt die Datei von gestern unverändert.
Jemand wird benachrichtigt, wenn die Datei um 8:00 Uhr nicht erschienen ist.
Nichts davon ist ein Redesign. Es sind zwei Tabellenspalten, ein geplanter Job und ein Storage-Bucket. Das meiste Risiko steckt in den Daten (den Ankerpreisen) und in den Details (ob die URL erreichbar ist), nicht im Code.
Läuft Ihr Shop auf einem individuellen Stack und Sie sind nicht sicher, ob er diese Liste besteht: Wir bauen und betreuen und können Ihnen sagen, wo Ihr Shop steht. Senden Sie uns die URL Ihres Shops über das Kontaktformular.
Dieser Beitrag erklärt die technische Seite der Regeln, wie sie in NN 101/2026 und in der Klarstellung des Wirtschaftsministeriums vom 22. September 2026 veröffentlicht wurden. Er ist keine Rechtsberatung. Für Sonderfälle fragen Sie schriftlich beim Ministerium oder bei Ihrem Steuerberater nach.