Najniższa cena z 30 dni: jak poprawnie podawać obniżki w sklepie
Jeśli w sklepie internetowym ogłaszacie obniżkę – przekreśloną ceną, procentem lub hasłem reklamowym podkreślającym korzystną cenę – musicie podać cenę poprzednią. To najniższa cena, po jakiej sprzedawaliście towar w ciągu 30 dni przed obniżką. To od niej trzeba też liczyć samą obniżkę, dlatego przekreślona „regularna” cena zapisana przy produkcie często nie wystarcza.
W praktyce oznacza to, że sklep potrzebuje wiarygodnej historii cen. Bez niej nie wykażecie, jaka była najniższa cena z 30 dni, a promocja na Black Friday łatwo zamieni się w fałszywą obniżkę. Poniżej znajdziecie regułę, przykład poglądowy, sposób wdrożenia w WooCommerce i w innym sklepie, tabelę decyzyjną oraz listę kontrolną.
Artykuł dotyczy strony technicznej i procesowej. Interpretację prawną dla waszego konkretnego przypadku, zwłaszcza przy wyjątkach, skonsultujcie z prawnikiem.
Czego dokładnie wymaga reguła
Na Słowacji regułę określa § 7 słowackiej ustawy nr 108/2024 o ochronie konsumentów. Przedsiębiorca musi w każdym ogłoszeniu o obniżce ceny towaru podać cenę poprzednią i na jej podstawie ustalić obniżkę. Cena poprzednia to najniższa cena, po jakiej sprzedawał towar w okresie 30 dni przed obniżką. Jeśli sprzedaje go krócej, decyduje najniższa cena od rozpoczęcia sprzedaży.
Ten sam paragraf zawiera dwa odstępstwa. Przy stopniowym obniżaniu ceny możecie podawać cenę poprzednią ustaloną przed pierwszą obniżką. Przepisy o cenie poprzedniej nie dotyczą towarów, które szybko tracą jakość lub ulegają zepsuciu.
Sposób obliczania obniżki doprecyzował Trybunał Sprawiedliwości UE w wyroku w sprawie C-330/23 (Aldi Süd) z 26 września 2024 r. Obniżkę ogłoszoną w procentach lub komunikatem reklamowym podkreślającym korzystność oferty trzeba ustalić na podstawie najniższej ceny z okresu co najmniej 30 dni przed obniżką. Według komunikatu prasowego Trybunału zapobiega to sytuacji, w której przedsiębiorca podnosi cenę przed promocją, a potem pokazuje fałszywe obniżki.
Spór dotyczył ulotek reklamowych sieci dyskontów. Organizacja konsumencka argumentowała, że w pierwszym przykładzie cena tuż przed promocją wynosiła 1,69 €, ale najniższa cena z 30 dni 1,29 € – tyle samo co rzekomo obniżona cena. Jej zdaniem samo podanie najniższej ceny w reklamie nie wystarcza. Trybunał potwierdził, że obniżkę trzeba ustalić właśnie od niej.
Przepisy w Czechach i w Niemczech
Reguła wynika z art. 6a dyrektywy 98/6/WE zmienionej dyrektywą (UE) 2019/2161, zwaną w praktyce dyrektywą Omnibus. Przepisy krajowe różnią się jednak szczegółami. W Czechach według ministerstwa przemysłu i handlu od 6 stycznia 2023 r. obowiązuje § 12a czeskiej ustawy nr 634/1992 o ochronie konsumentów: informacja o obniżce musi zawierać najniższą cenę, po jakiej przedsiębiorca oferował i sprzedawał towar w ciągu 30 dni przed obniżką, tzw. cenę referencyjną.
W Niemczech § 11 rozporządzenia o uwidacznianiu cen (PAngV) nakazuje przy każdym ogłoszeniu obniżki ceny towaru podać najniższą cenę całkowitą z ostatnich 30 dni przed obniżką. Przy obniżce, która rośnie stopniowo i bez przerwy, w trakcie promocji można podawać najniższą cenę sprzed jej rozpoczęcia. Wyraźnie wyłączone są indywidualne obniżki cen oraz towary szybko psujące się lub o krótkim terminie przydatności, jeśli cenę obniża się z powodu grożącego zepsucia lub upływu terminu i jest to odpowiednio oznaczone. Sprzedając do Polski, na Węgry lub do innego kraju UE, sprawdźcie tamtejsze przepisy.
Przykład: cena na Black Friday, która nie jest obniżką
Ten przykład ma charakter poglądowy – sklep i ceny są zmyślone. Młynek do kawy miał w ostatnich tygodniach takie ceny:
| Okres | Cena dla klienta | Co się stało |
|---|---|---|
| do 31.10 | 129 € | Cena regularna |
| 1–7.11 | 99 € | Tygodniowa promocja reklamowana w mediach społecznościowych |
| 8–16.11 | 129 € | Powrót do ceny regularnej |
| 17–26.11 | 149 € | Podwyżka według nowego cennika dostawcy |
| od 27.11 | 119 € | Black Friday: szablon pokazuje przekreślone 149 € i plakietkę „−20%” |
Dla promocji od 27 listopada decydujący jest okres od 28 października do 26 listopada. Najniższa cena w nim to 99 € z tygodniowej promocji. Cena 119 € jest więc o 20 € wyższa od ceny poprzedniej i nie jest obniżką, choć jest niższa od przekreślonych 149 €. Plakietka „−20%” wprowadzałaby klienta w błąd.
Sklep ma dwie uczciwe możliwości. Albo sprzedaje za 119 € bez przekreślonej ceny, procentu i reklamy obniżki, albo obniża cenę poniżej 99 €. Przy cenie 89 € obniżka od ceny poprzedniej wynosi 10,1%, więc pokazuje przekreślone 99 € i „−10%”.
Dlaczego standardowa konfiguracja sklepu nie wystarcza
Dokumentacja REST API WooCommerce opisuje przy produkcie cenę regularną (regular_price), cenę promocyjną (sale_price), początek i koniec ceny promocyjnej w strefie czasowej witryny (date_on_sale_from, date_on_sale_to) oraz cenę bieżącą (price). To bieżący stan produktu. Pola z historią cen ani z najniższą ceną z 30 dni w tej dokumentacji nie znajdziecie.
Jeśli wasz szablon w czasie promocji przekreśla cenę regularną i liczy procent z różnicy między ceną regularną a promocyjną, wynik jest poprawny tylko wtedy, gdy w ostatnich 30 dniach cena dla klienta nie była niższa od bieżącej ceny regularnej. Wystarczy jednak zmiana cennika albo krótka promocja i liczby przestają się zgadzać.
Do tego cena zmienia się z wielu miejsc: ręcznie w panelu administracyjnym, przez edycję zbiorczą, import, synchronizację z ERP albo zaplanowany początek i koniec promocji. Przy zaplanowanej promocji cena dla klienta zmienia się, choć nikt w tym momencie nie edytuje produktu. Historia, która rejestruje tylko ręczne zmiany, jest więc niepełna.
Jak wdrożyć historię cen i obliczanie obniżki
1. Spiszcie wszystkie miejsca, w których ogłaszacie obniżki
Strona produktu, lista kategorii, wyniki wyszukiwania, plakietki, banery, newslettery, posty w mediach społecznościowych i drukowane ulotki. Ustawa mówi o każdym ogłoszeniu o obniżce ceny, nie tylko o stronie produktu.
2. Rejestrujcie każdą zmianę ceny
Dla każdego produktu i wariantu zapisujcie cenę, którą klient widział i płacił, z VAT, okres obowiązywania od – do, źródło zmiany (panel, import, ERP, zaplanowana promocja) oraz użytkownika lub proces, który jej dokonał. Oprócz zdarzeń dodajcie nocny zapis faktycznie obowiązującej ceny. Wychwyci też zmianę, którą zdarzenie by pominęło.
3. Braki w historii uzupełniajcie tylko z weryfikowalnych danych
Jeśli nie macie historii, można ją częściowo odtworzyć z kopii zapasowych bazy, eksportów, ERP lub zamówień. Przy każdej danej zapiszcie, skąd pochodzi. Tam, gdzie ceny nie da się wykazać, nie ogłaszajcie obniżki i zacznijcie zbierać zapisy co najmniej 30 dni przed promocją.
4. Na starcie promocji obliczcie i zapiszcie cenę poprzednią
System bierze najniższą cenę z 30 dni przed rozpoczęciem promocji, a dla nowego towaru od rozpoczęcia sprzedaży. Wynik zapisuje przy promocji, żeby nie zmieniał się w jej trakcie. Przy stopniowym obniżaniu możecie zachować cenę poprzednią ustaloną przed pierwszą obniżką; na rynku niemieckim obniżka musi rosnąć bez przerwy.
5. Pokazujcie jedną cenę i jeden procent
Najprostsze i najbezpieczniejsze jest, gdy przekreślona cena to cena poprzednia, a procent liczy się od niej. Dodajcie zrozumiały opis, na przykład „Najniższa cena z 30 dni przed obniżką: 99 €”. Procenty zaokrąglajcie w dół, aby nigdy nie zawyżyć obniżki.
6. Przed startem kampanii zróbcie kontrolę
Wygenerujcie zestawienie wszystkich produktów w promocji: cena poprzednia, cena promocyjna, obliczony procent i procent, który się wyświetli. Produkt, którego cena promocyjna nie jest niższa od poprzedniej, nie może dostać plakietki obniżki. Zestawienie niech zatwierdzi osoba odpowiedzialna.
7. Podłączcie marketing do tych samych danych
Treści banerów, e-maili i postów bierzcie z zatwierdzonego zestawienia kampanii, a nie z ręcznego przepisywania. Jeśli planujecie i zatwierdzacie treści centralnie, pomoże automatyzacja mediów społecznościowych podłączona do tych samych cen. Zestawienie kampanii archiwizujcie na wypadek kontroli.
Tabela decyzyjna: jaka jest cena poprzednia
Tabela podsumowuje słowacką regułę i różnice wynikające z tekstu niemieckiego. Nie zastępuje oceny prawnej.
| Sytuacja | Cena poprzednia | Uwaga |
|---|---|---|
| Sprzedajecie towar dłużej niż 30 dni, a cena w tym czasie nie spadła poniżej bieżącej ceny regularnej | Bieżąca cena regularna | Tylko w tym przypadku obliczenie od ceny regularnej zapisanej przy produkcie jest poprawne |
| W ostatnich 30 dniach trwała inna promocja | Cena z tej promocji, jeśli była najniższa | Wpływa na każdą promocję, która zacznie się w ciągu 30 dni od jej zakończenia |
| W ostatnich 30 dniach podnieśliście cenę regularną | Niższa cena sprzed podwyżki | Podwyżka tuż przed promocją nie zwiększy obniżki |
| Sprzedajecie towar krócej niż 30 dni | Najniższa cena od rozpoczęcia sprzedaży | Słowacja: § 7 ust. 2 lit. b) ustawy nr 108/2024 |
| Stopniowe obniżanie ceny | Cena poprzednia ustalona przed pierwszą obniżką | Słowacja: § 7 ust. 3; Niemcy: tylko jeśli obniżka rośnie bez przerwy |
| Towar szybko psujący się | Na Słowacji obowiązek nie ma zastosowania (§ 7 ust. 4) | Niemcy: tylko przy grożącym zepsuciu lub upływie terminu i z oznaczeniem |
| Indywidualna obniżka dla konkretnego klienta | W Niemczech nie trzeba jej podawać – wyraźny wyjątek | Słowacki § 7 nie wymienia takiego wyjątku – skonsultujcie z prawnikiem |
Wtyczka, zmiana szablonu czy własne rozwiązanie
Gotowa wtyczka jest najszybsza. Przed wdrożeniem sprawdźcie jednak, czy rejestruje też zmiany z importów, ERP i REST API, czy śledzi warianty, czy zapisuje cenę z VAT, jak obsługuje zaplanowane promocje, gdzie wyświetla cenę poprzednią i co stanie się z historią po jej wyłączeniu lub migracji.
Zmiana szablonu rozwiązuje tylko wyświetlanie. Bez wiarygodnej historii nie obliczy poprawnej przekreślonej ceny.
Własny moduł daje pełną kontrolę nad obliczeniami, zestawieniem kampanii i zatwierdzaniem. Wymaga jednak programowania, testów i utrzymania przy aktualizacjach WooCommerce. Jeśli ceny powstają w ERP, często czyściej jest liczyć cenę poprzednią tam i przesyłać ją do sklepu przez integrację API. Sklep wtedy tylko ją wyświetla.
Rekomendacja: przy mniejszym katalogu z cenami zarządzanymi w panelu zacznijcie od sprawdzonej wtyczki i kontroli przed kampanią. Przy importach, ERP lub sprzedaży do kilku krajów zaprojektujcie historię cen jako osobną część systemu.
Częste błędy
- Procent od ceny regularnej. Cena regularna podniesiona przed promocją tworzy fałszywą obniżkę – według Trybunału Sprawiedliwości UE właśnie temu ma zapobiegać liczenie od ceny poprzedniej.
- Zapomniana krótka promocja. Promocja, która skończyła się mniej niż 30 dni temu, wciąż może wyznaczać cenę poprzednią.
- Historia tylko z panelu. Importy, ERP i zaplanowane promocje pozostają poza rejestrem.
- Tylko produkt główny. Warianty z różnymi cenami potrzebują własnej historii.
- Różne liczby w kanałach. Baner obiecuje „−30%”, a strona produktu pokazuje inny procent.
- Utrata historii przy migracji. Przy zmianie wtyczki lub platformy zapisy nie zostają przeniesione.
- Zły dzień lub strefa czasowa. Jeśli historia, planowanie promocji i obliczenia nie działają w tej samej strefie czasowej, okres 30 dni przesuwa się o dzień.
Lista kontrolna przed promocją
- Historia cen obejmuje co najmniej 30 dni przed rozpoczęciem promocji dla wszystkich produktów i wariantów w promocji.
- Zapisy obejmują zmiany z panelu, importów, ERP i zaplanowanych promocji.
- Cena poprzednia jest obliczona i zapisana na starcie promocji.
- Przekreślona cena i procent wynikają z ceny poprzedniej.
- Produkty, których cena promocyjna nie jest niższa od poprzedniej, nie mają plakietki obniżki.
- Banery, e-maile i posty używają tych samych liczb co sklep.
- Istnieje jasna reguła dla nowych towarów, obniżek stopniowych i wyjątków.
- Zestawienie kampanii zatwierdziła osoba odpowiedzialna i jest zarchiwizowane.
- Sytuacje z tabeli decyzyjnej są przetestowane na testowej kopii sklepu.
Najczęściej zadawane pytania
Czy przy kuponie rabatowym też muszę podawać najniższą cenę?
Słowacki § 7 mówi o każdym ogłoszeniu o obniżce ceny towaru i nie przewiduje wyjątku dla kuponów. Niemieckie PAngV wyraźnie wyłącza indywidualne obniżki cen. Przy publicznie reklamowanych kodach na cały asortyment skonsultujcie się z prawnikiem i technicznie przygotujcie to samo obliczenie.
Co, jeśli sprzedajemy towar krócej niż 30 dni?
Według słowackiej ustawy ceną poprzednią jest najniższa cena od rozpoczęcia sprzedaży. System potrzebuje więc także daty, od której sprzedajecie towar.
Jak zaokrąglać procent obniżki?
§ 7 nie reguluje zaokrąglania. Bezpieczne podejście to liczyć od ceny poprzedniej i zaokrąglać w dół, aby wyświetlany procent nigdy nie był wyższy od rzeczywistego.
Czy dotyczy to także newslettera i mediów społecznościowych?
Obowiązek dotyczy każdego ogłoszenia o obniżce ceny towaru, a sprawa przed Trybunałem dotyczyła ulotek reklamowych. Jeśli podajecie obniżkę w e-mailu lub poście, liczcie ją tak samo jak w sklepie i z tych samych danych.
Czy historię cen można odtworzyć wstecz?
Tylko z weryfikowalnych danych, takich jak kopie zapasowe, eksporty, ERP lub zamówienia, z zapisanym źródłem. Jeśli nie wykażecie ceny za niektóre dni, nie ogłaszajcie obniżki, dopóki nie będziecie mieć 30 dni wiarygodnych zapisów.
Jak możemy pomóc
Jeśli przed kolejną kampanią chcecie mieć pewność, że przekreślone ceny i procenty się zgadzają, zobaczcie, jak tworzymy sklepy internetowe na zamówienie. Dodamy historię cen, obliczanie ceny poprzedniej, kontrolę przed kampanią i połączenie z ERP. Napiszcie do nas, a razem ustalimy, skąd pochodzą ceny w waszym sklepie i co zmienić w pierwszej kolejności.
Źródła
- Słowacka ustawa nr 108/2024 o ochronie konsumentów, § 7 (Slov-Lex, tekst obowiązujący od 27 września 2026 r., sprawdzono 13 listopada 2026 r.)
- Trybunał Sprawiedliwości UE: komunikat prasowy nr 152/24 w sprawie C-330/23 Aldi Süd (26 września 2024 r.)
- Niemieckie rozporządzenie o uwidacznianiu cen (Preisangabenverordnung, PAngV), § 11
- Ministerstwo Przemysłu i Handlu Republiki Czeskiej: informacja o wyroku Trybunału Sprawiedliwości UE
- WooCommerce: dokumentacja REST API v3 – produkty