Ostatnia weryfikacja: czerwiec 2026. Poniższe ścieżki w panelu administracyjnym i klucze konfiguracji obejmują PrestaShop 1.7, 8 i 9 (etykiety mogą się nieznacznie różnić między wersjami). Stawki podatku i zasady zaokrąglania zależą od jurysdykcji i są aktualizowane — aktualne wymagania dla kraju, z którego wystawiasz faktury, potwierdź z księgowym zamiast traktować jakąkolwiek stawkę z tego artykułu jako niezmienną.

Podatki to jedno z tych ustawień PrestaShop, w którym cichy błąd potrafi narastać miesiącami, zanim ktokolwiek go zauważy. Produkt przypisany do niewłaściwej grupy reguł podatkowych zostaje sprzedany bez podatku; brak kraju w grupie nalicza 0% każdemu klientowi z tego kraju; tryb zaokrąglania niezgodny z oczekiwaniami księgowego daje faktury różniące się o grosz w sposób, który audytorzy naprawdę wychwytują. Nic z tego nie wywoła błędu. Koszyk nadal przejdzie do kasy, zamówienie nadal się potwierdzi, a problem wyjdzie dopiero przy kwartalnym rozliczeniu VAT — albo wtedy, gdy zrobi to za Ciebie urząd skarbowy.

Ten przewodnik dotyczy mechaniki: tego, jak faktycznie zbudowany jest silnik podatkowy PrestaShop, jakie są dokładne ścieżki w panelu administracyjnym i klucze konfiguracji oraz jak połączyć docelowe stawki VAT w UE tak, aby działały poprawnie i pozostały niewidoczne w codziennej pracy. Strona prawna — kiedy musisz zarejestrować się do OSS, jak działa próg 10 000 €, jakie dowody musisz przechowywać — to osobny temat; omawiamy go w artykule VAT w UE: OSS, IOSS i co musi obsłużyć Twój sklep. Tutaj zakładamy, że wiesz już, jaką stawkę naliczać, i chcesz, aby PrestaShop za każdym razem naliczał ją poprawnie.

Jak PrestaShop modeluje podatki: trzy warstwy, nie jedna

Najważniejsza rzecz, którą warto zrozumieć przed zmianą czegokolwiek: w PrestaShop nie ustawiasz na produkcie po prostu „stawki podatku”. Są trzy zagnieżdżone obiekty, a produkt wskazuje najwyższy z nich.

WarstwaCzym jestMiejsce w panelu administracyjnymKlasa
PodatekPojedyncza nazwana stawka — „DE podstawowa 19%”, „FR obniżona 5,5%”. Po prostu liczba z etykietą i flagą aktywności.Międzynarodowe → PodatkiTax
Reguła podatkuJeden wpis mówiący: „dla tego kraju (opcjonalnie tego stanu/zakresu kodów pocztowych) zastosuj ten podatek”. To łącznik między stawką a miejscem.W edytorze grupyTaxRule
Grupa reguł podatkowychNazwany zestaw reguł podatkowych — „Standardowe stawki UE”, „Obniżone UE (książki)”. To właśnie na niego wskazuje produkt, przewoźnik albo pakowanie na prezent.Międzynarodowe → Podatki → Reguły podatkówTaxRulesGroup

Co to daje w praktyce? Definiujesz każdą stawkę krajową raz jako podatek, a potem składasz grupy, które ponownie wykorzystują te stawki. Produkt nigdy nie wskazuje kraju — wskazuje grupę, a grupa w momencie kalkulacji wybiera stawkę na podstawie adresu dostawy klienta. Zmień stawkę Niemiec raz na poziomie podatku, a zaktualizuje się każda grupa, która się do niej odwołuje. Właśnie ta warstwa pośrednia sprawia, że konfiguracja dla 27 krajów UE jest do utrzymania, a nie staje się arkuszem kalkulacyjnym poprawianym ręcznie.

Gdy składane jest zamówienie, PrestaShop wylicza stawkę przez adres dostawy i grupę przypisaną do produktu — TaxManagerFactory przekazuje pracę do TaxRulesTaxManager, który dopasowuje kraj z adresu (oraz stan/kod pocztowy tam, gdzie ma to znaczenie) do TaxRule i przekazuje wynikową stawkę do TaxCalculator. Nigdy nie wywołujesz tego bezpośrednio, ale znajomość tego łańcucha pozwala rozwiązać zgłoszenie „dlaczego to zamówienie jest bez podatku” w dwie minuty zamiast w dwie godziny.

Budowanie konfiguracji UE krok po kroku

Ekran konfiguracji VAT UE w PrestaShop z walidacją na żywo, czasem przechowywania w pamięci podręcznej i opcjami zwolnienia z podatku dla grup klientów
Konfiguracja podatku UE łączy walidację VAT na żywo, zachowanie awaryjne i reguły grup klientów – każde ustawienie zmienia końcową stawkę, którą widzi kupujący.

Krok 1 — utwórz jeden podatek dla każdej stawki, którą faktycznie naliczasz

Przejdź do Międzynarodowe → Podatki i dodaj podatek dla każdej stawki podstawowej, którą będziesz pobierać. Sklep wysyłający towary fizyczne ze stawką podstawową na terenie UE potrzebuje wszystkich 27 podstawowych stawek państw członkowskich, więc nazwij je tak, aby człowiek mógł szybko przeskanować listę: DE podstawowa 19%, FR podstawowa 20%, PL podstawowa 23% i tak dalej. Jeśli sprzedajesz cokolwiek kwalifikującego się do stawki obniżonej (książki, żywność, niektóre wyroby medyczne), dodaj je również jako osobne podatki — FR obniżona 5,5%, DE obniżona 7% — ponieważ stawki obniżone są powiązane z konkretnymi kategoriami produktów i różnią się w zależności od kraju.

Przełącznik „Włącz” przy podatku ma znaczenie: wyłączony podatek zostaje w bazie danych (więc historyczne zamówienia zachowują prawidłową stawkę), ale nie pojawi się na liście rozwijanej podczas budowania reguł. W ten sposób wycofujesz wygasłą stawkę tymczasową bez psucia starych faktur.

Krok 2 — zbuduj grupę reguł podatkowych dla każdego profilu produktu

W sekcji Międzynarodowe → Podatki → Reguły podatków utwórz grupę — zacznij od Standardowe stawki UE. W jej środku dodaj po jednej regule podatku dla każdego kraju, każdą wskazującą krajowi odpowiadający mu podatek. To żmudna część i właśnie tu najczęściej pojawiają się błędy: musisz dodać regułę dla każdego kraju UE, do którego wysyłasz, łącznie z krajem macierzystym.

Oto scenariusz awarii, który dopada wszystkich. Jeśli kraj dostawy klienta nie ma reguły w grupie, PrestaShop niczego nie zgaduje — stosuje 0% podatku. Nie ma żadnego ostrzeżenia. Zamówienie z Luksemburga bez reguły dla Luksemburga przechodzi po cenie netto, nadal jesteś winien luksemburski VAT, tylko po prostu go nie pobrałeś. Traktuj „każdy kraj, do którego można wysłać zamówienie, ma regułę” jako punkt listy kontrolnej do sprawdzenia, nie jako założenie.

Jeśli sprzedajesz towary o różnych stawkach, skończysz z kilkoma grupami — Standardowe stawki UE, Obniżone UE (książki), UE zero / zwolnione. Każda z nich jest tylko innym zestawem tych samych bazowych podatków.

Krok 3 — przypisz produkty do właściwej grupy

Otwórz produkt, przejdź do karty Ceny i ustaw Regułę podatku na właściwą grupę. To krok, który po cichu psuje proces dodawania nowych produktów: w zależności od wersji PrestaShop, formularza i domyślnych ustawień importu nowy albo importowany produkt może domyślnie dostać Bez podatku lub niezamierzoną grupę reguł podatkowych, więc jeśli ktoś zostawi to źle raz — albo import uzupełni pole niepoprawnie — każdy produkt dodany później w pośpiechu będzie niósł ten błąd aż do audytu. Jawnie weryfikuj grupę reguł podatkowych każdego produktu zamiast ufać automatycznemu uzupełnieniu.

I co z tego? Zrób z „ustaw regułę podatku” wyraźny krok na liście kontrolnej tworzenia produktu zamiast polegać na wstępnie wypełnionej wartości, a po każdym imporcie CSV wykonaj kontrolę wyrywkową — import bez problemu przyjmie pustą albo błędną grupę podatkową i nie zobaczysz w interfejsie żadnej czerwonej flagi. Dla katalogu już działającego na produkcji szybki filtrowany eksport produktów według grupy podatkowej to najszybszy sposób na wyłapanie pozycji sprzedawanych bez podatku.

Nie musisz przeklikiwać każdego produktu, aby znaleźć odstające przypadki. To zapytanie tylko do odczytu wyświetla produkty bez przypisanej grupy reguł podatkowych (przypadek id_tax_rules_group = 0, czyli „Bez podatku”) — uruchom je w Parametry zaawansowane → Baza danych po każdym imporcie zbiorczym:

-- Find products set to "No tax" (id_tax_rules_group = 0).
-- Read-only spot-check; run after every CSV import. Adjust the lang id if needed.
SELECT p.id_product, pl.name, p.reference, p.id_tax_rules_group
FROM ps_product p
JOIN ps_product_lang pl
  ON pl.id_product = p.id_product AND pl.id_lang = 1
WHERE p.id_tax_rules_group = 0          -- 0 = no tax group assigned
  AND p.active = 1
ORDER BY p.id_product;

Pusty wynik to odpowiedź, której oczekujesz. Każdy zwrócony wiersz oznacza produkt sprzedawany bez podatku, dopóki go nie poprawisz — dokładnie ten cichy przypadek, który w przeciwnym razie pierwszy znalazłby audyt.

Ustawienia, które decydują o końcowej kwocie

Dwa produkty w koszyku, „właściwe” stawki skonfigurowane, a suma na fakturze nadal nie zgadza się z wyliczeniem księgowego — to prawie zawsze kwestia zaokrąglania albo opodatkowania dodatków, nie samych stawek.

Zaokrąglanie: gdzie Niemcy i Francja faktycznie się różnią

W sekcji Parametry sklepu → Ogólne ustawienia Tryb zaokrąglania i Typ zaokrąglania (PS_PRICE_ROUND_MODE i PS_ROUND_TYPE) zmieniają obliczenia, nie tylko sposób wyświetlania. Zaokrąglaj przy każdej pozycji sumuje już zaokrąglone wartości linii; Zaokrąglaj na sumie zaokrągla raz na końcu. W koszyku z wieloma pozycjami daje to różne sumy — czasem o grosz lub dwa, czyli dokładnie taki rodzaj rozbieżności, przez który faktury nie przechodzą uzgodnienia.

To nie jest kwestia preferencji, tylko jurysdykcji. Co do zasady niemiecka praktyka oczekuje zaokrąglania na poziomie pozycji, a Francja dopuszcza zaokrąglanie na sumie — ale potwierdź aktualne wymagania dla kraju, z którego wystawiasz faktury, zamiast opierać się na słowie z bloga, bo te zasady bywają zmieniane. Przetestuj to uczciwie: zbuduj prawdziwy koszyk z wieloma pozycjami, sprawdź fakturę i porównaj ją z oczekiwaniami księgowego.

Dostawa podlega opodatkowaniu — a PrestaShop Ci o tym nie przypomni

Każdy przewoźnik ma własną grupę reguł podatkowych, ustawianą w Dostawa → Przewoźnicy na ekranie edycji przewoźnika. Fabryczną wartością domyślną dla nowego przewoźnika często jest Bez podatku. Dostawa podlega VAT w większości krajów UE, więc przewoźnik ustawiony na „Bez podatku” oznacza, że pobierasz za mało przy opłacie za dostawę w każdym zamówieniu. Skonfiguruj podatek każdego przewoźnika zgodnie z lokalnymi zasadami VAT — opodatkowanie dostawy może zależeć od jurysdykcji i od koszyków z mieszanymi stawkami — i przetestuj koszyki mieszane z księgowym, zamiast zakładać, że do dostawy zawsze stosuje się główną stawkę produktu.

Pakowanie na prezent i ekopodatek — dwa dodatki, o których łatwo zapomnieć

Pakowanie na prezent ma własną grupę reguł podatkowych w Parametry sklepu → Ustawienia zamówień (sekcja pakowania na prezent). Zostawisz je bez podatku i masz ten sam problem z niedopobraniem, tylko na mniejszej pozycji. Jeśli działasz w kraju z ekopodatkiem (na przykład francuska opłata środowiskowa), włącz i skonfiguruj ekopodatek w Międzynarodowe → Podatki (ustawienia podatków), a następnie uzupełnij pola ekopodatku przy produktach, których to dotyczy — PrestaShop obsłuży go wtedy na fakturze jako osobny opodatkowany składnik.

B2C kontra B2B: gdzie stawka faktycznie się zmienia

Stawka kraju przeznaczenia obejmuje zwykłą sprzedaż konsumencką. Są dwa przypadki, które ją zmieniają, a każdy jest na tyle obszerny, że powinien mieć własny przewodnik zamiast być tu upychany na siłę.

  • Wewnątrzwspólnotowe B2B (odwrotne obciążenie). Prawidłowy numer VAT firmy z innego kraju UE przestawia zamówienie na 0% VAT, a nabywca rozlicza podatek u siebie — ale krajowe B2B (niemiecka firma kupująca w niemieckim sklepie) nadal płaci pełny VAT. PrestaShop obsługuje to przez grupy klientów i walidację numeru VAT; pełna konfiguracja, walidacja VIES i treść na fakturze są opisane w e-commerce B2B z PrestaShop.
  • To, czy ceny pokazują się netto czy brutto, jest regułą prezentacji wymaganej prawem, nie zasadą obliczania podatku, i zależy od rynku oraz typu klienta. Ten temat trzymamy w całości w artykule zasady wyświetlania cen w Europie, aby nie mieszać dwóch różnych spraw.

W sklepach mocno nastawionych na B2B część, z którą standardowy system grup klientów PrestaShop radzi sobie najsłabiej, to niezawodna walidacja numerów VAT w VIES — także wtedy, gdy VIES nie działa albo zwraca częściowe dopasowania. Moduł Automatic EU VAT Checker prowadzi ten proces od początku do końca: waliduje przy rejestracji i w kasie, stosuje zwolnienie tylko dla prawdziwego transgranicznego B2B i zachowuje się rozsądnie, gdy usługa VIES jest niedostępna, więc klient z poprawnym numerem nie zostaje zablokowany przez awarię rządowego API. Korzyścią nie jest „więcej walidacji” — tylko brak ręcznego poprawiania zamówień, które domyślne zachowanie błędnie zwolniło (albo nie zwolniło) w gorszy dzień VIES. Jeśli ci sami klienci handlowi płacą również z odroczonym terminem, B2B Deferred Payment Terms obsługuje część związaną z fakturą i limitem kredytowym.

Multistore: wspólne stawki, osobne wartości domyślne

Jeśli prowadzisz kilka sklepów w ramach jednej instalacji PrestaShop (częsty układ dla witryn krajowych), obiekty podatkowe mogą być wspólne, a wartości domyślne pozostają specyficzne dla sklepu. Praktyczny układ wygląda tak:

  • Udostępniaj podatki i grupy reguł podatkowych we wszystkich sklepach — nie chcesz mieć „DE podstawowa 19%” zdefiniowanego trzy razy i rozjeżdżającego się między sklepami. Zdefiniuj raz na poziomie Wszystkich sklepów.
  • Ustaw domyślny kraj dla każdego sklepu (PS_COUNTRY_DEFAULT działa w kontekście sklepu, więc każda witryna może mieć własny kraj macierzysty) i przypisz produkty każdego sklepu do właściwej grupy w kontekście tego sklepu. Niemiecka witryna ustawia Niemcy jako kraj macierzysty; francuska robi to samo z Francją.
  • Przetestuj ponownie zaokrąglanie w każdym sklepie, jeśli waluty się różnią — zaokrąglanie podatku wchodzi w interakcję z przeliczeniem walut, więc cena równa w euro może wypaść o grosz inaczej w innej walucie. Zweryfikuj to na prawdziwym koszyku w walucie każdego sklepu.

Lista kontrolna podatków przed uruchomieniem

Zanim powierzysz konfiguracji prawdziwe zamówienia, przejdź przez tę listę — to zestaw rzeczy, które potrafią psuć się po cichu:

  • Każdy kraj, do którego można wysłać zamówienie, ma regułę podatku w każdej używanej grupie. Brak kraju = naliczone 0%, VAT nadal należny. Otwórz każdą grupę i policz.
  • Twój kraj macierzysty jest w grupie — najłatwiej go zapomnieć, bo „oczywiście” naliczasz krajowy VAT.
  • Każdy produkt ma właściwą grupę reguł podatkowych — nowe i importowane produkty mogą domyślnie dostać Bez podatku albo niezamierzoną grupę zależnie od wersji i danych importu, więc każdy trzeba ustawić (albo zweryfikować), a nie zakładać, że jest poprawnie.
  • Przewoźnicy nie są ustawieni na „Bez podatku”, chyba że naprawdę nie opodatkowujesz dostawy.
  • Pakowanie na prezent i ekopodatek są skonfigurowane, jeśli je oferujesz.
  • Tryb zaokrąglania odpowiada wymaganiom kraju, z którego wystawiasz faktury — sprawdzone na koszyku z wieloma pozycjami, nie przyjęte na wiarę.
  • Złóż prawdziwe zamówienia testowe z trzech lub czterech różnych krajów UE (użyj adresu testowego dla każdego kraju) i przeczytaj faktyczne sumy na fakturach. To wychwytuje więcej problemów niż dowolnie długie wpatrywanie się w ekrany konfiguracji.

Najczęściej zadawane pytania

Dlaczego jeden z moich produktów nalicza 0% podatku bez żadnego błędu?

Są dwie przyczyny i obie są ciche. Albo produkt ma ustawione Bez podatku na karcie Ceny (id_tax_rules_group = 0 — powyższe zapytanie SQL znajduje takie przypadki), albo kraj dostawy klienta nie ma reguły podatku w przypisanej grupie. PrestaShop nigdy nie ostrzega o brakującym kraju; po prostu stosuje 0%. Otwórz odpowiednią grupę reguł podatkowych, potwierdź, że kraj dostawy ma regułę, i sprawdź, czy produkt wskazuje właściwą grupę.

Czy ustawienie „Podatek na podstawie” powinno wskazywać adres dostawy czy adres faktury?

Dla VAT UE opartego na kraju przeznaczenia (czyli tego, którego oczekuje raportowanie OSS), użyj adresu dostawy w sekcji Międzynarodowe → Podatki. Stawka powinna iść za miejscem, do którego trafiają towary. Pozostawienie adresu faktury naliczy niewłaściwą stawkę zawsze wtedy, gdy kraje rozliczeniowy i dostawy są różne — a Twoje uzgodnienie VAT się nie zepnie. Prawne tło tego, dlaczego decyduje kraj przeznaczenia, znajdziesz w VAT w UE: OSS, IOSS.

Czy PrestaShop waliduje numery VAT B2B i automatycznie stosuje odwrotne obciążenie?

Nie. Rdzeń przechowuje numer VAT i może pokazywać ceny netto przez grupy klientów, ale nigdy nie odpytuje VIES i nigdy nie zeruje VAT tylko dlatego, że wpisano numer. Zwolnienie z tytułu odwrotnego obciążenia — walidacja na żywo, warunek transgraniczny, treść na fakturze, bezpieczne zachowanie przy niedostępnym VIES — to luka, którą wypełnia Automatic EU VAT Checker. Sama przynależność do grupy zmienia wyświetlanie, nie naliczany podatek.

Suma na fakturze z wieloma pozycjami różni się o grosz od kwoty księgowego — co jest nie tak?

Prawie zawsze chodzi o zaokrąglanie, nie o stawki. Sprawdź Tryb zaokrąglania i Typ zaokrąglania w Parametry sklepu → Ogólne. „Zaokrąglaj przy każdej pozycji” i „zaokrąglaj na sumie” dają różne sumy w koszyku z wieloma liniami, a właściwy wybór zależy od jurysdykcji (niemiecka praktyka zwykle oczekuje zaokrąglania na poziomie pozycji; Francja dopuszcza zaokrąglanie na sumie — potwierdź swoje zasady). Testuj na prawdziwym koszyku z wieloma pozycjami, nie na jednym produkcie, bo pojedyncza linia nigdy nie pokaże różnicy.

Zmieniłem stawkę VAT w Niemczech — czy muszę edytować każdą grupę?

Nie, i właśnie po to istnieje model trójwarstwowy. Zmień stawkę raz na poziomie Podatku (Międzynarodowe → Podatki), a każda grupa reguł podatkowych odwołująca się do tego podatku zaktualizuje się automatycznie. W przypadku wygasającej stawki tymczasowej wyłącz stary podatek zamiast go usuwać — historyczne zamówienia zachowają pierwotną stawkę, a wyłączony podatek po prostu przestanie pojawiać się na liście rozwijanej podczas tworzenia nowych reguł.

Gdzie kończy się konfiguracja podatków, a zaczynają inne przewodniki

Zadaniem tego artykułu jest doprowadzenie stawek do zamówień. Trzy sąsiednie tematy, które często się z tym myli, mają własne miejsce, żeby nie zostawiać tu półodpowiedzi:

  • Prawne ramy VAT — OSS, IOSS, próg 10 000 €, miejsce świadczenia dla produktów cyfrowych, dowody lokalizacji, które musisz zachować — są opisane w VAT w UE: OSS, IOSS i co musi obsłużyć Twój sklep.
  • Faktury — sprawienie, aby PDF pokazywał kwoty netto, podatek, brutto i właściwe wzmianki prawne dla danego kraju — omawiamy w artykule dostosowywanie faktur w PrestaShop.
  • Szerszy obraz zgodności, w którym mieści się Twoja konfiguracja podatkowa — prawo konsumenckie, regulamin, zwroty — zaczyna się od prawo e-commerce w UE.

PrestaShop daje Ci naprawdę sprawny silnik podatkowy — trzy czytelne warstwy, kalkulację świadomą kraju przeznaczenia, kontrolę per przewoźnik i per dodatek, wartości domyślne gotowe na multistore. Nie powie Ci natomiast, jaka konfiguracja jest poprawna, ani nie ostrzeże, gdy zabraknie kraju; ta ocena należy do Ciebie. Skonfiguruj podatki świadomie, zweryfikuj je prawdziwymi testowymi zamówieniami transgranicznymi i przeglądaj stawki co kwartał, gdy wygasają tymczasowe obniżki. Zrób to, a podatki staną się tym, czym powinny być: ustawieniem skonfigurowanym raz, do którego nie wracasz myślami — aż do kontroli, którą przechodzisz bez nerwowego szukania wyjaśnień.

Udostępnij ten wpis:
David Miller

David Miller

Założyciel, mypresta.rocks

David Miller to specjalista PrestaShop z ponad dekadą praktycznego doświadczenia i założyciel mypresta.rocks — studia programistycznego z Tychów. Tworzy i utrzymuje katalog 152 modułów PrestaShop — w tym 21 pakietów „Revolution" obejmujących SEO, checkout, bezpieczeństwo, wydajność, marketing, wyszukiwanie, wsparcie i operacje magazynowe — które każdego dnia usprawniają realne sklepy, testowanych na PrestaShop 1.7.8, 8.x i 9.x. Sprawuje również opiekę nad sklepami produkcyjnymi generującymi miliony rocznego obrotu, dlatego jego pracę ocenia się po realnej sprzedaży, a nie po wersjach demo. Jego doświadczenie obejmuje pełen zakres e-commerce — wydajność, bezpieczeństwo, SEO i marketing — oraz wykracza poza PrestaShop, sięgając WooCommerce, Shopify i systemów tworzonych na zamówienie. Na blogu pisze o technicznej stronie PrestaShop: co platforma naprawdę robi pod maską, co psuje się na produkcji i które rozwiązania faktycznie się sprawdzają.

Spodobał Ci się ten artykuł?

Otrzymuj nasze najnowsze porady, przewodniki i aktualizacje modułów prosto na swoją skrzynkę.

Komentarze

Brak komentarzy. Bądź pierwszy!

Bądź pierwszy: zadaj pytanie albo podziel się przydatną opinią.

Ładowanie...
Do góry