Prawo odstąpienia od umowy w WooCommerce (przycisk odstąpienia)
Autor: Mariusz Szatkowski · Zaktualizowano: 2026-07-02
Prawo odstąpienia od umowy to najbardziej znane uprawnienie konsumenta w handlu internetowym: 14 dni na rezygnację z zakupu na odległość, bez podawania przyczyny. Przepis jest stary, ale sposób jego obsługi właśnie się zmienia. Dyrektywa (UE) 2023/2673 dodaje do unijnego prawa konsumenckiego wymóg tzw. funkcji odstąpienia, czyli wyraźnie oznaczonej możliwości odstąpienia od umowy dostępnej w tym samym interfejsie, w którym umowę zawarto. Konsument nie ma już szukać adresu do korespondencji ani drukować formularza z PDF-a: klika, wskazuje zamówienie i składa oświadczenie. Dla sklepu WooCommerce oznacza to konkretne zadanie techniczne, bo WooCommerce nie ma takiej funkcji wbudowanej. Ten przewodnik wyjaśnia, co dokładnie wynika z przepisów, jak wygląda poprawna obsługa odstąpienia (w tym częściowego i dla gości) i jak wdrożyć ją w WooCommerce bez pisania własnego modułu.
Co mówią przepisy: 14 dni i funkcja odstąpienia
Podstawa jest znana od lat. Dyrektywa o prawach konsumenta (2011/83/UE), w Polsce wdrożona ustawą o prawach konsumenta, daje konsumentowi 14 dni na odstąpienie od umowy zawartej na odległość, liczone co do zasady od objęcia towaru w posiadanie, czyli w praktyce od dostarczenia przesyłki. Konsument nie musi podawać przyczyny, a oświadczenie może złożyć na wzorze formularza odstąpienia (załącznik I.B do dyrektywy) albo w dowolnej innej jednoznacznej formie. Sprzedawca ma następnie 14 dni na zwrot płatności, z możliwością wstrzymania się do czasu otrzymania towaru z powrotem lub dowodu jego odesłania. Jeżeli sklep nie poinformował o prawie odstąpienia, okres wydłuża się aż o 12 miesięcy, co samo w sobie jest dobrym argumentem, by informację i formularz mieć na widoku.
Nowość to sposób składania oświadczenia. Dyrektywa (UE) 2023/2673, przyjęta przy okazji reformy przepisów o usługach finansowych na odległość, dodaje do dyrektywy 2011/83/UE artykuł 11a. Wynika z niego, że gdy umowa jest zawierana za pomocą interfejsu internetowego, przedsiębiorca ma zapewnić konsumentowi możliwość odstąpienia przez funkcję odstąpienia: wyraźnie oznaczoną, łatwą do znalezienia i stale dostępną przez cały okres odstąpienia. Po jej uruchomieniu konsument podaje lub potwierdza podstawowe dane identyfikujące (kogo dotyczy, która umowa), a po wysłaniu oświadczenia przedsiębiorca bez zbędnej zwłoki potwierdza jego otrzymanie na trwałym nośniku, wraz z datą złożenia. Potocznie mówi się o przycisku odstąpienia, analogicznie do znanego już przycisku rezygnacji z subskrypcji. Państwa członkowskie stosują nowe przepisy od 19 czerwca 2026, więc dla sklepów to już teraźniejszość, nie odległy plan.
Warto zapamiętać trzy praktyczne konsekwencje. Po pierwsze, e-mail czy telefon do biura obsługi przestają wystarczać jako jedyna ścieżka: potrzebna jest funkcja w interfejsie sklepu. Po drugie, oświadczenie musi być proste do złożenia, bez zakładania konta i bez zbędnych pól. Po trzecie, sklep musi umieć wykazać, kiedy oświadczenie wpłynęło, bo od tej daty liczy się termin zwrotu płatności.
Kogo to dotyczy
Obowiązki dotyczą przedsiębiorców zawierających z konsumentami umowy na odległość przez interfejs internetowy, czyli w praktyce każdego sklepu internetowego sprzedającego konsumentom w UE. Nie ma znaczenia, czy sklep działa na WooCommerce, platformie hostowanej czy własnym kodzie. Prawo odstąpienia ma ustawowe wyjątki (m.in. towary wykonane na indywidualne zamówienie, rzeczy szybko psujące się, nagrania i programy w otwartym opakowaniu, treści cyfrowe dostarczone za zgodą przed upływem terminu), ale wyjątki nie zwalniają z posiadania samej funkcji: o tym, czy konkretne odstąpienie jest skuteczne, sklep rozstrzyga po otrzymaniu oświadczenia, nie przez ukrycie formularza.
Sprzedaż B2B pozostaje poza tym reżimem, bo prawo odstąpienia przysługuje konsumentom (w Polsce także przedsiębiorcom na prawach konsumenta przy umowach niezwiązanych zawodowo z ich działalnością). Jeśli sklep sprzedaje i firmom, i konsumentom, funkcja odstąpienia musi działać dla tych drugich.
Czego brakuje w samym WooCommerce
WooCommerce dobrze obsługuje techniczną stronę zwrotu pieniędzy: w widoku zamówienia jest przycisk Refund, integracje płatności potrafią zwrócić środki na kartę, a zamówienie dostaje status zwrócone. Brakuje natomiast całej warstwy oświadczenia konsumenta:
- nie ma formularza, w którym klient zadeklaruje odstąpienie od umowy;
- nie ma licznika okresu odstąpienia ani weryfikacji, czy 14 dni już minęło;
- nie ma przycisku odstąpienia w widoku zamówienia w koncie klienta;
- nie ma ścieżki dla gości, którzy kupili bez konta;
- nie ma ewidencji wniosków ze statusami, do której można sięgnąć przy sporze;
- nie ma automatycznego potwierdzenia złożenia oświadczenia e-mailem.
Zbudowanie tego samodzielnie oznacza własny shortcode lub stronę z formularzem, bezpieczne wyszukiwanie zamówień (z ochroną przed odpytywaniem cudzych zamówień), logikę terminu liczonego od dostarczenia, tabelę na wnioski, ekran administracyjny i dwa szablony e-maili. Do tego testy w klasycznym i blokowym WooCommerce oraz zgodność z HPOS. To wykonalne, ale to kilka dni pracy nad czymś, co jest identyczne w każdym sklepie.
Jak powinna wyglądać poprawna obsługa odstąpienia
Niezależnie od tego, czy piszesz kod, czy instalujesz wtyczkę, kompletna implementacja potrzebuje tych elementów:
- Widoczny punkt wejścia. Przycisk odstąpienia przy szczegółach zamówienia w koncie klienta plus osobna strona z formularzem, do której można dojść z regulaminu i stopki. Funkcja ma być łatwa do znalezienia, nie schowana w FAQ.
- Identyfikacja zamówienia bez konta. Para numer zamówienia + e-mail z zamówienia wystarcza do bezpiecznej identyfikacji i obejmuje też gości. Wymaganie logowania odcina każdego, kto kupił jako gość.
- Weryfikacja terminu. Licz okres odstąpienia od dostarczenia towaru (w WooCommerce najbliższym odpowiednikiem jest data zakończenia zamówienia), a jeśli zamówienie nigdy nie zostało oznaczone jako zrealizowane, od daty złożenia. Odrzucaj wnioski po terminie z czytelnym komunikatem.
- Odstąpienie częściowe. Pozwól wskazać konkretne pozycje i ilości. Klient, który zamówił trzy sztuki i chce zwrócić jedną, nie powinien być zmuszany do deklaracji o całym zamówieniu.
- Wzór oświadczenia. Pokaż na formularzu treść zgodną z ustawowym wzorem formularza odstąpienia (załącznik I.B), z możliwością edycji pod własną jurysdykcję.
- Potwierdzenie na trwałym nośniku. Automatyczny e-mail do klienta z listą pozycji i datą złożenia oświadczenia oraz powiadomienie do sklepu.
- Ewidencja wniosków. Rejestr z datą, zamówieniem, pozycjami i statusem obsługi. Przy sporze albo kontroli to ewidencja rozstrzyga, kiedy oświadczenie wpłynęło i co się z nim stało.
- Rozdzielenie oświadczenia od pieniędzy. Zwrot płatności wykonuj świadomie w ekranie zamówienia, po weryfikacji. Formularz przyjmuje oświadczenie, człowiek decyduje o przelewie.
Jak zrobić to z wtyczką Plogins Withdraw
Darmowa wtyczka Plogins Withdraw pakuje dokładnie ten przepływ. Tworzysz stronę z shortcodem [withdraw_form] i wskazujesz ją w ustawieniach (WooCommerce → Withdrawal). Formularz działa dwustopniowo: klient najpierw wyszukuje zamówienie po numerze i adresie e-mail z zamówienia (działa też dla gości, bez konta), a potem zaznacza pozycje i ilości, których dotyczy odstąpienie, opcjonalnie dopisuje powód i wysyła oświadczenie. Obie ścieżki są chronione noncem, a ilości są przycinane do faktycznie zamówionych.
Wtyczka sama pilnuje terminu: okres odstąpienia jest konfigurowalny (domyślnie ustawowe 14 dni, można wydłużyć do 365) i liczony od daty zakończenia zamówienia, a gdy zamówienie nigdy nie zostało zakończone, od daty jego złożenia. Konfigurujesz też, które statusy zamówień kwalifikują się do odstąpienia (domyślnie zrealizowane i w trakcie realizacji). Zamówienia po terminie albo w innym statusie dostają czytelną odmowę, a dla zamówienia z już otwartym wnioskiem nie da się złożyć drugiego.
W koncie klienta, pod szczegółami kwalifikującego się zamówienia, pojawia się przycisk odstąpienia, który prowadzi na stronę formularza z numerem zamówienia wpisanym z góry. Na formularzu wyświetlany jest edytowalny tekst wzoru odstąpienia (do dostosowania pod załącznik I.B), a treść wprowadzenia też ustawiasz sam. Po wysłaniu klient dostaje e-mail z potwierdzeniem i listą pozycji, a sklep powiadomienie na wskazany adres (domyślnie e-mail administratora).
Każdy wniosek trafia do ewidencji na ekranie WooCommerce → Withdrawal Requests: numer, zamówienie, klient, pozycje z ilościami, data i status. Wnioski przechodzą przez statusy oczekujący, zaakceptowany, odrzucony i zrealizowany, z filtrowaniem po statusie i zmianą statusu przy każdym wierszu. Wtyczka celowo nie rusza pieniędzy: zwrot wykonujesz normalnie w ekranie zamówienia WooCommerce, a w ewidencji odnotowujesz, że wniosek został obsłużony. Zamówienia są czytane przez API zamówień WooCommerce, więc całość jest zgodna z HPOS. Wszystko powyższe jest w edycji darmowej.
Rozsądne wdrożenie
Zacznij od strony z formularzem i wpisu w regulaminie oraz stopce, żeby funkcja odstąpienia była łatwa do znalezienia. Ustaw okres zgodny z własną polityką (14 dni to minimum, dłuższy okres bywa argumentem sprzedażowym) i dopasuj tekst wzoru odstąpienia do brzmienia obowiązującego w Twojej jurysdykcji, najlepiej po konsultacji z prawnikiem, bo wtyczka dostarcza funkcję techniczną, nie poradę prawną. Przetestuj pełny obieg na zamówieniu testowym: złożenie wniosku jako gość, e-maile, zmiana statusu w ewidencji, zwrot w ekranie zamówienia. Cel jest prosty: konsument, który chce odstąpić od umowy, ma zrobić to w minutę, a sklep ma mieć każdy taki wniosek udokumentowany z datą i rozstrzygnięciem.