Dyrektywa europejska 2019/2161, zwana „Omnibus”, obowiązuje od 28 maja 2022 roku. W Polsce wdrożyła ją nowelizacja ustawy o informowaniu o cenach towarów i usług, stosowana od 1 stycznia 2023 roku. W 2026 roku, po kilku falach kontroli, zgodność nie jest już opcjonalna: kary sięgają do 10 % obrotu za naruszenie zbiorowych interesów konsumentów, a UOKiK wielokrotnie sygnalizował, że przecenami w handlu internetowym zajmuje się priorytetowo, zwłaszcza przy wyprzedażach i Black Friday.
Problem polega na tym, że reguła Omnibus jest prosta do wypowiedzenia, złożona we wdrożeniu technicznym i katastrofalna dla promocji, gdy zostanie źle zastosowana. Ten artykuł rozkłada regułę na części, pokazuje pułapki, które zabijają promocje, i poprawną mechanikę w PrestaShop.
Co dokładnie mówi Omnibus
Artykuł 4 ustęp 2 ustawy o informowaniu o cenach towarów i usług, w brzmieniu wdrażającym dyrektywę Omnibus, wymaga, aby przy każdej informacji o obniżce ceny podać obok ceny obniżonej także najniższą cenę tego towaru albo usługi, jaka obowiązywała w okresie 30 dni przed wprowadzeniem obniżki. Jeśli towar jest w sprzedaży krócej niż 30 dni, podaje się najniższą cenę od dnia rozpoczęcia sprzedaży.
Konkretnie narzucają się cztery zasady:
- Każda promocja musi pokazywać cenę odniesienia, czyli najniższą cenę z ostatnich 30 dni.
- Ta cena odniesienia musi być widoczna obok nowej ceny promocyjnej.
- Wyliczenie jest per produkt i per referencja (kombinacja odmiany), a nie per kategoria.
- Wyświetlany procent obniżki musi być liczony od tej ceny odniesienia, a nie od ceny sztucznie zawyżonej.
Wyjątki i przypadki szczególne
Wyprzedaże i sezonowe obniżki
Reguła Omnibus stosuje się do wyprzedaży w pełni. „Cena odniesienia” pokazywana przy wyprzedaży musi być najniższą ceną z 30 dni poprzedzających jej rozpoczęcie, a nie dowolną ceną przekreśloną od producenta.
Promocja stopniowana
Jeśli stosujesz minus 20 % w pierwszym tygodniu, a potem minus 30 % w drugim, ceną odniesienia pozostaje ta z 30 dni poprzedzających PIERWSZĄ obniżkę. Minus 30 % liczy się względem ceny wyjściowej, a nie względem poprzedniej ceny promocyjnej.
Nowy produkt (krócej niż 30 dni)
Jeśli produkt jest w sprzedaży krócej niż 30 dni, bierzemy najniższą cenę od momentu wprowadzenia go do sprzedaży. Reguła nie każe wymyślać ceny wcześniejszej, tylko korzysta z dostępnej historii.
Towary szybko psujące się
Wyjątek dotyczy towarów z krótkim terminem przydatności. Przepisy stosuje się tu z uwzględnieniem specyfiki, ale możliwość udokumentowania cen pozostaje wymagana.
Produkty niewprowadzone wcześniej do obrotu
Obniżka początkowa („cena wprowadzająca”) nie wymaga podawania ceny odniesienia. Nie wolno jednak pokazywać fałszywej „ceny przekreślonej”.
Pułapka, która zabija promocje: zawyżona cena przekreślona
Przed Omnibusem wielu sprzedawców ustawiało cenę katalogową na fantazyjnym poziomie „sugerowanej ceny producenta” i wyświetlało minus 50 % na okrągło. Praktyka martwa od 2023 roku i aktywnie karana.
Typowy przykład z kontroli: sklep pokazuje produkt za 179 zł z ceną przekreśloną 359 zł (minus 50 %). Kontrola żąda historii cen. Produkt nigdy nie był sprzedawany powyżej 219 zł. Skutek: kara administracyjna, nakaz zaprzestania stosowania przekazu promocyjnego, publikacja rozstrzygnięcia.
Błąd u podstaw: mylenie sugerowanej ceny producenta (niewiążącej) z ceną odniesienia z Omnibusa (realnie stosowaną).
Mechanika techniczna w PrestaShop
PrestaShop 8 i 9 nie obsługują natywnie ceny odniesienia z Omnibusa. Moduł katalogu obsługuje „obniżki” i „ceny specyficzne”, ale bez historii z ostatnich 30 dni i bez automatycznego wyliczania rzeczywistej ceny wcześniejszej.
Ręczne wdrożenie wymaga czterech warstw:
1. Śledzenie historii cen
Nowa tabela ps_price_history zapisuje każdą zmianę ceny per id_product i id_product_attribute, wraz ze znacznikiem czasu. Wyzwalana albo hookiem actionObjectProductUpdateAfter, albo dobowym cronem robiącym migawkę cen.
CREATE TABLE ps_price_history (
id_history INT AUTO_INCREMENT PRIMARY KEY,
id_product INT NOT NULL,
id_product_attribute INT DEFAULT 0,
id_shop INT NOT NULL,
id_currency INT NOT NULL,
price DECIMAL(20,6) NOT NULL,
date_change DATETIME NOT NULL,
INDEX idx_product_date (id_product, date_change)
) ENGINE=InnoDB;
2. Wyliczenie ceny odniesienia
W momencie wyświetlenia promocji moduł liczy dla każdego produktu najniższą cenę z ostatnich 30 dni:
SELECT MIN(price) AS cena_odniesienia
FROM ps_price_history
WHERE id_product = :product_id
AND id_product_attribute = :attribute_id
AND date_change >= DATE_SUB(NOW(), INTERVAL 30 DAY)
AND date_change < :promo_start_date;
3. Zgodne wyświetlanie
Na karcie produktu i na listingach blok ceny pokazuje:
- Aktualną cenę promocyjną (dużą czcionką)
- Cenę odniesienia z ostatnich 30 dni, przekreśloną („Najniższa cena z 30 dni przed obniżką: 219 zł”)
- Procent obniżki wyliczony od ceny odniesienia
Opcjonalnie podpowiedź albo odnośnik „Zobacz historię cen” poprawia przejrzystość i rozbraja spory.
4. Możliwość udokumentowania na potrzeby kontroli
W razie kontroli musisz umieć przedstawić historię na żądanie. Tabelę ps_price_history należy przechowywać co najmniej 2 lata, najlepiej dłużej, zgodnie z Twoimi terminami przechowywania dokumentacji. Eksportowalna do CSV z poziomu zaplecza.
Częste błędy na produkcji
- Liczenie ceny odniesienia od ceny netto zamiast brutto albo odwrotnie. Reguła dotyczy ceny płaconej przez konsumenta, więc w B2C ceny brutto.
- Pomijanie odmian. Cena odniesienia jest per referencja fizyczna, a nie per produkt nadrzędny.
- Brak obsługi wielu walut. Jeśli sprzedajesz w złotych i w euro, historia musi być prowadzona per waluta.
- Zerowanie historii przy każdej aktualizacji katalogu. Migracja albo masowy import potrafi nadpisać historię. Moduł musi zachować historię przeszłą.
- Pokazywanie „sugerowanej ceny producenta” zamiast ceny odniesienia. To główny błąd prawny.
- Nieobjęcie stron kategorii i listingów. Jeśli karta produktu jest zgodna, ale miniatura w kategorii pokazuje zawyżoną cenę przekreśloną, jesteś w naruszeniu.
Nasz moduł dfomnibus: automatyczna zgodność
Wdrożenie tej mechaniki ręcznie to projekt na 5 do 8 dni pracy deweloperskiej, z testami na multisklepie, wielu walutach i odmianach. Nasz moduł dfomnibus dla PrestaShop 8 i 9 uprzemysławia cały stack:
- Automatyczne śledzenie historii przez hook na zmianie ceny, bez crona, w czasie rzeczywistym.
- Wyliczenie ceny odniesienia z Omnibusa per produkt i per odmiana, z obsługą multisklepu i wielu walut.
- Zgodne wyświetlanie na kartach produktów, listingach kategorii, blokach cross-sell i w koszyku.
- Możliwość udokumentowania: eksport historii do CSV, gotowy na kontrolę.
- Procent obniżki przeliczany od ceny odniesienia, nigdy od ceny dowolnej.
- Zgodność z wyprzedażami i promocjami zaplanowanymi.
- Wielojęzyczność dla sklepów międzynarodowych, bo dyrektywa Omnibus obowiązuje w całej Unii Europejskiej.
Za 79 € przechodzisz na zgodność bez dotykania katalogu i bez ryzyka przy nadchodzących promocjach.
Poza zgodnością: konwersja
Paradoksalnie promocja zgodna z Omnibusem konwertuje często lepiej niż promocja zawyżona. Powód: konsumenci stali się nieufni wobec sztucznych cen przekreślonych. Pokazanie zweryfikowanej ceny odniesienia i uczciwego procentu wzmacnia wiarygodność. W sklepach, które przeprowadziliśmy na ścisłą zgodność, współczynnik kliknięć w miniatury promocyjne ustabilizował się albo lekko wzrósł.
A przede wszystkim zgodność usuwa poważne ryzyko operacyjne: zgłoszenie do organu (często składane przez konkurenta) uruchamia postępowanie, które potrafi sparaliżować strategię promocyjną na wiele miesięcy.
FAQ
Czy Omnibus stosuje się do wyprzedaży?
Tak, w całości. Cena odniesienia pokazywana przy wyprzedaży musi być najniższą ceną stosowaną w ciągu 30 dni poprzedzających jej rozpoczęcie, a nie „ceną katalogową” czy „sugerowaną ceną producenta”. Okresy wyprzedażowe i Black Friday należą do najczęściej kontrolowanych.
Co zrobić z produktami w promocji permanentnej?
Promocja „permanentna” jest nie do pogodzenia z Omnibusem. Jeśli produkt ma obniżkę minus 30 % od trzech miesięcy, ceną odniesienia jest w rzeczywistości cena po obniżce, bo to najniższa cena z ostatnich 30 dni. Czyli minus 30 % względem minus 30 % daje 0 % realnej obniżki do zakomunikowania. Albo rezygnujemy z przekazu promocyjnego, albo przeplatamy okresy promocyjne z okresami w cenie zwykłej.
Czy moduł obsługuje działanie wstecz?
Jeśli zainstalujesz dfomnibus dzisiaj, historia zaczyna się od daty instalacji. Przy kontroli dotyczącej promocji przeszłych, sprzed instalacji, historię trzeba będzie odtworzyć innymi środkami (kopie zapasowe bazy, dawne eksporty CSV). Zalecamy instalację modułu z wyprzedzeniem przed wyprzedażami albo dużymi akcjami promocyjnymi, a nie w dniu ich startu.
Jaka sankcja grozi za niezgodność?
Za naruszenie obowiązku informowania o najniższej cenie z 30 dni przewidziana jest kara pieniężna, a przy uznaniu praktyki za naruszającą zbiorowe interesy konsumentów UOKiK może nałożyć karę sięgającą 10 % obrotu osiągniętego w roku poprzedzającym. Do tego dochodzą nakazy zaprzestania praktyki i publikacja rozstrzygnięcia. Wysokość zależy od skali, uporczywości i recydywy, więc konkretne widełki warto skonsultować z prawnikiem.
Czy Omnibus obowiązuje poza Unią Europejską?
Nie, to dyrektywa europejska. Ale jeśli Twój sklep sprzedaje konsumentom europejskim z kraju trzeciego (Wielka Brytania, Szwajcaria, Stany Zjednoczone), podlegasz tej regule przy sprzedaży B2C w Unii. Kryterium jest kierowanie oferty do konsumenta, a nie siedziba sprzedawcy.
Aby pójść dalej
Zgodność regulacyjna w e-commerce 2026 opiera się na trzech filarach: RODO (Consent Mode v2), Omnibus (cena odniesienia) i przepisy branżowe (weryfikacja wieku, oznaczenia żywności, bezpieczeństwo produktów). Zobacz także nasz przewodnik po RODO i Consent Mode v2 w PrestaShop oraz listę kontrolną GPSR. Trzy niezależne warstwy, które trzeba czysto na sobie ułożyć.
Przeczytaj także: weryfikacja wieku w e-commerce.
Aby przejść do działania: nasz wybór modułów do zgodności produktowej.