Przejdź do treści
Darmowa wtyczka WooCommerce

WPNest Returns for WooCommerce

Zgodność z dyrektywą UE 2023/2673 (Return Button Directive, obowiązuje od 19 czerwca 2026). Plugin dodaje przycisk „Zwróć zamówienie" w My Account, prowadzi klienta przez wizard 3-krokowy i zarządza całym procesem zwrotu z poziomu admin — bez wchodzenia w edycję zamówienia WC.

Pobierz darmowy plugin - v1.2.1 ↓ Zobacz, jak to działa
PROSprawdź wersję Pro →

100% zgodne z UE 2023/2673 · Bez konfiguracji — działa od pierwszej aktywacji

EU Directive 2023/2673

19 czerwca 2026

Termin transpozycji obowiązku przycisku zwrotu

Okno zwrotu

14 dni

Minimum z art. 13 CRD (ustawa o prawach konsumenta)

Sankcje UOKiK

do 10%

Maksymalna kara od rocznego obrotu firmy

Wersja Free

0 zł

Dożywotnio, bez limitu sklepów

Co plugin robi automatycznie

Pełny proces zwrotu — od kliknięcia po refund

Klient klika przycisk, przechodzi wizard, dostaje potwierdzenie z PDF i modelowym formularzem. Ty zarządzasz wszystkim z jednej strony w admin — zmieniasz statusy, wystawiasz refundy, prowadzisz notki, wysyłasz maile. Bez zewnętrznych usług.

Proces

Trzy kroki do działającego systemu zwrotów

Plugin działa od momentu aktywacji — bez konfiguracji i bez tworzenia strony. Cały proces zwrotu otwiera się jako pop-up, custom statusy WooCommerce rejestrują się same, a przycisk „Zwróć zamówienie" pojawia się w My Account i w mailu o zrealizowaniu zamówienia. Chcesz osadzić proces inline? Dodaj blok „WPNest Returns — Portal" lub shortcode na wybranej stronie i wskaż ją w ustawieniach.

Podstawa prawna

Zgodne z prawem UE i polską ustawą

Plugin implementuje wymagania dyrektywy UE 2023/2673 (Return Button) oraz polskiej ustawy o prawach konsumenta. Domyślne ustawienia są zgodne z polskim prawem — możesz korzystać bez żadnej zmiany konfiguracji.

Unia Europejska

Dyrektywa 2023/2673 (Return Button)

Akt UE wymagający, aby każdy sklep e-commerce obsługujący konsumentów udostępnił widoczny przycisk inicjujący zwrot zamówienia. Termin transpozycji do prawa krajowego: 19 czerwca 2026.

Polska

art. 27 ustawy o prawach konsumenta

14 dni na odstąpienie od umowy zawartej na odległość bez podania przyczyny. Plugin domyślnie ustawia okno 14 dni — możesz je rozszerzyć w ustawieniach do dowolnej liczby dni.

FAQ

Najczęściej zadawane pytania

Czy plugin wystarcza do zgodności z dyrektywą 2023/2673?

Tak. Wersja Free spełnia podstawowy wymóg dyrektywy: udostępnia widoczny przycisk „Return this order" w My Account, prowadzi klienta przez wizard zgłoszenia zwrotu i wysyła potwierdzenie z modelowym formularzem odstąpienia z dyrektywy UE. Wersja Pro dodaje warstwę automatyzacji (etykiety kurierskie, refundy przez bramkę, SMS) ale nie jest wymagana do zgodności prawnej.

Czy muszę tworzyć stronę /returns/?

Nie. Od wersji 1.2.0 plugin nie tworzy już żadnej strony przy aktywacji — zwroty działają od razu jako pop-up (modal), więc nawet klient bez konta zawsze ma działające wejście. Jeśli wolisz osadzić proces inline w swojej strukturze strony, dodaj blok „WPNest Returns — Portal" (lub shortcode [wpnestreturns_returns_page]) na dowolnej stronie i wskaż ją w WooCommerce → Returns Manager. Istniejące strony /returns/ ze starszych instalacji działają dalej bez zmian.

Co się dzieje gdy ktoś znajdzie URL do PDF potwierdzenia?

Trójwarstwowa ochrona. Nazwa pliku zawiera losowy token 32-hex (URL nie da się zgadnąć). Katalog ma .htaccess Deny from all (Apache) lub web.config (IIS) — bezpośredni link zwraca 403. Pobieranie odbywa się przez autoryzowany endpoint REST /wpnestreturns/v1/pdf/{id}, który sprawdza czy użytkownik jest właścicielem zamówienia, adminem albo ma ważny token gościa.

Czy klient bez konta (gość) może zgłosić zwrot?

Tak. Gość otwiera pop-up zwrotu — z linku w mailu „Zamówienie zrealizowane" albo przyciskiem „Zwróć zamówienie" — i podaje email oraz numer zamówienia. Po weryfikacji dostaje 15-minutowy token transient, który pozwala mu przejść wizard zwrotu bez zakładania konta, w tym samym oknie i bez przeładowania strony. Dwuwarstwowy rate-limit chroni endpoint przed brute-force: 5 prób weryfikacji na godzinę z jednego IP oraz 15 prób dziennie z jednego adresu email.

Czy mogę wgrać własny modelowy PDF zamiast tego z dyrektywy UE?

Tak. W ustawieniach (Customer-facing return forms) możesz wgrać własne PDF-y dla wersji EN i PL. Plugin automatycznie wybierze odpowiedni język na podstawie locale klienta i dołączy go do maila potwierdzającego. Jeśli nie wgrasz własnych, używane są domyślne formularze z dyrektywy.

Czy plugin wystawia refundy przez bramkę płatności?

W wersji Free: nie. Plugin wywołuje wc_create_refund() z refund_payment=false — refund jest zarejestrowany w WooCommerce i widoczny w panelu, ale samo zwrócenie pieniędzy musisz przepuścić ręcznie przez przycisk „Refund" w edycji zamówienia WC. Automatyczne refundy przez bramkę (Stripe/PayU/Przelewy24) to feature Pro.

Czy działa z HPOS (High-Performance Order Storage)?

Tak. Plugin deklaruje pełną kompatybilność z HPOS przez FeaturesUtil::declare_compatibility(). Wszystkie operacje na zamówieniach idą przez wc_get_order() i metody $order->*, nigdy bezpośrednio przez get_post_meta().

Co się stanie z danymi po odinstalowaniu?

Domyślnie tabele zwrotów zostają w bazie po dezaktywacji i odinstalowaniu — to dane regulacyjne, ważne dla audytu. Jeśli świadomie chcesz je usunąć, włącz opcję „Skasuj dane przy odinstalowaniu" w ustawieniach przed dezaktywacją.

Czy mogę wyłączyć przycisk zwrotu w niektórych zamówieniach?

Tak, na kilka sposobów. Możesz wykluczyć całe statusy zamówień (domyślnie wykluczone: cancelled, failed, refunded, trash), produkty z określonymi ID, subskrypcje (wymaga WC Subscriptions), produkty z waiver dla treści cyfrowych oraz produkty oznaczone jako personalizowane. Dla bardziej zaawansowanych reguł filter wpnestreturns_is_eligible pozwala dodać własną logikę.

Czy plugin wysyła jakiekolwiek dane na zewnątrz?

Nie. Wersja Free działa wyłącznie lokalnie — żadnych wp_remote_get/post, brak analityki, brak phone-home, brak licencjonowania domenowego (to feature Pro). PDF-y potwierdzeń są generowane lokalnie przez bundled tFPDF 1.33 (LGPL), maile wysyłane przez natywne WP wp_mail(). Refundy idą wyłącznie przez wc_create_refund() — bramki płatności wywoływane są tylko gdy ręcznie podasz refund_payment=true (admin UI Free domyślnie tego nie eskaluje).

Gdzie znajdę kod / mogę zgłosić bug?

Pełne źródło wersji Free jest publicznie dostępne na GitHubie: github.com/patrykluba/wpnest-returns-for-woocommerce. Licencja GPLv2 (lub nowsza). Issues, pull requests i security disclosures przyjmujemy bezpośrednio przez GitHub. Releases tagowane semver odpowiadają wersjom publikowanym na WordPress.org.

Konfiguracja

Pełna lista opcji

Wszystkie opcje konfiguracji dostępne w panelu admin (WooCommerce → Returns Manager). Domyślne wartości są zgodne z polskim prawem — możesz zostawić wszystko jak jest.

Zakładka Ogólne (15 opcji)

Włączanie, etykieta przycisku, nadawca maili (From / Reply-To), strona portalu, customowe PDF-y

wpnestreturns_enabled
Główny przełącznik wtyczki. Default: 1 (włączone).
wpnestreturns_withdrawal_window_days
Liczba dni, w których klient może zainicjować zwrot. Default: 14 (zgodnie z art. 27 UPK).
wpnestreturns_button_label
Tekst przycisku w My Account. Default: "Return this order".
wpnestreturns_merchant_email
Email sklepu, na który lecą powiadomienia. Default: pusty (fallback do admin_email).
wpnestreturns_email_from_name
Nazwa nadawcy maili zwrotów. Default: pusty (fallback do ustawień e-mail WooCommerce, potem WordPress).
wpnestreturns_email_from_address
Adres nadawcy (From). Default: pusty (fallback do woocommerce_email_from_address, potem default WP). Ustawia tylko nagłówek — nie uwierzytelnia skrzynki.
wpnestreturns_email_reply_to
Adres Reply-To dla odpowiedzi klientów. Default: pusty (fallback do adresu From).
wpnestreturns_returns_page_id
ID strony hostującej portal inline. Default: 0 = brak strony, proces otwiera się jako pop-up (z auto-detekcją strony zawierającej blok/shortcode).
wpnestreturns_notify_customer_on_status
Czy wysyłać maila do klienta przy zmianie statusu zwrotu. Default: 1.
wpnestreturns_delete_data_on_uninstall
Skasować tabele po odinstalowaniu wtyczki. Default: 0 (zostają — dane regulacyjne).
wpnestreturns_show_on_my_account
Pokazywać przycisk w My Account → Orders. Default: 1.
wpnestreturns_show_on_view_order
Pokazywać przycisk na stronie szczegółów zamówienia. Default: 1.
wpnestreturns_show_on_returns_page
Pokazywać sekcje landing (lista zamówień + formularz gościa) na osadzonym portalu. Default: 1. Gdy 0 — ukrywa te sekcje, ale bezpośrednie linki zwrotu (?order=/?token=) i pop-up dalej działają (już bez 404).
wpnestreturns_custom_form_en_id
ID załącznika z customowym PDF modelowego formularza (EN). Default: 0 (używa domyślnego).
wpnestreturns_custom_form_pl_id
ID załącznika z customowym PDF modelowego formularza (PL). Default: 0.
Zakładka Wykluczenia (5 opcji)

Statusy, subskrypcje, produkty cyfrowe, customizowane

wpnestreturns_excluded_statuses
Statusy zamówień, dla których przycisk zwrotu się nie pokazuje. Default: [cancelled, failed, refunded, trash].
wpnestreturns_exclude_digital_with_waiver
Wyklucz produkty cyfrowe gdy klient zaakceptował waiver na rezygnację z prawa odstąpienia. Default: 1.
wpnestreturns_exclude_customized
Wyklucz produkty personalizowane (custom-made). Default: 0.
wpnestreturns_exclude_subscriptions
Wyklucz subskrypcje WC (wymaga pluginu WooCommerce Subscriptions). Default: 1.
wpnestreturns_excluded_product_ids
Tablica ID produktów, dla których zwrot jest zablokowany. Default: [] (pusta).
⭐ Wersja Pro — dla zaawansowanych sklepów

Etykiety kurierskie, bramka refundów i konwersacja z klientem

Wersja Pro automatycznie generuje etykiety zwrotów dla InPost / Apaczka / DHL, refunduje przez bramkę płatności jednym kliknięciem, wysyła SMS do klienta i prowadzi pełną konwersację — wszystko bez wychodzenia z panelu admin.

✓ Licencja domenowa ✓ Aktualizacje 12 mies. ✓ Domeny dev darmowe
returns-pro.feature
Co dostajesz w Pro
  • ✦ Generowanie etykiet kurierskich (InPost, Apaczka, DHL)
  • ✦ Refund przez bramkę płatności (refund_payment=true)
  • ✦ Konwersacja klient ↔ sklep (threaded messages)
  • ✦ SMS przez SMSAPI
  • ✦ Webhooki Slack / Discord / generic JSON
  • ✦ Dashboard analityki zwrotów
  • ✦ Customowe templatki HTML maili
  • ✦ White-label dla agencji

Szanujemy Twoją prywatność

Ta strona używa plików cookie do analityki i marketingu. Możesz zaakceptować wszystkie, odrzucić nieobowiązkowe lub dostosować swoje preferencje.