Dostosowanie numeracji faktur i zamówień: dlaczego domyślne numery nie wystarczają
Zweryfikowano w czerwcu 2026. Dotyczy PrestaShop 1.6, 1.7, 8 i 9. Poniższe klucze konfiguracyjne są stabilne we wszystkich tych wersjach; etykiety menu nieco różnią się między wydaniami, dlatego potwierdź dokładną ścieżkę we własnej instalacji. Nic w tym artykule nie stanowi porady prawnej ani podatkowej — o tym, jak wygląda zgodna z przepisami seria numeracji w Twoim kraju, decydują Twój księgowy i lokalne przepisy.
Domyślnie PrestaShop nadaje każdemu zamówieniu referencję w rodzaju "XKJHQWER" i zaczyna numerację faktur od numeru 1. W testowym katalogu to prawie niewidoczne. W dniu, w którym przyjmujesz prawdziwe zamówienia, staje się to problemem: pracownik obsługi nie potrafi wygodnie odczytać numeru zamówienia przez telefon, księgowy nie widzi od razu, który dokument jest który, a kontroler skarbowy pyta, dlaczego po fakturze #4521 następuje #4598 i nic pomiędzy. Ten poradnik dotyczy konkretnie numerów — referencji zamówienia oraz sekwencji faktur i korekt — czyli tego, co PrestaShop pozwala zmienić z panelu administracyjnego, gdzie kończą się jego możliwości i jak uzyskać schemat numeracji, który zaakceptuje księgowość i z którego zespół będzie naprawdę korzystać.
To celowo wąski temat. Sam format PDF faktury, krajowe wymogi prawne dotyczące elementów faktury oraz przejście na ustrukturyzowane e-fakturowanie to osobne zagadnienia z własnymi odpowiedziami, podlinkowanymi na końcu. Tutaj trzymamy się numeracji.
Co PrestaShop daje natywnie — a czego nie daje
W PrestaShop działają obok siebie dwa różne systemy numeracji, które sprzedawcy bardzo często mylą.
Referencja zamówienia to kod widoczny dla klienta, generowany w chwili złożenia zamówienia. PrestaShop tworzy go w Order::generateReference() jako losowy ciąg wielkich liter i cyfr (znany format "XKJHQWER"). Nie jest sekwencyjny, nie da się go skonfigurować z panelu administracyjnego i sam w sobie nic nie oznacza. To on pojawia się w wiadomości z potwierdzeniem, w Zamówienia → Zamówienia i to jego klient odczytuje Ci przez telefon.
Numer faktury działa inaczej: jest nadawany dopiero wtedy, gdy faktura zostanie faktycznie wygenerowana (kiedy zamówienie osiągnie status oznaczony jako faktura dostępna) i jest ciągłą sekwencją. Masz nad nim podstawową kontrolę w sekcji Zamówienia → Faktury (PrestaShop 1.7 i nowsze: Sprzedaż → Zamówienia → Faktury):
| Ustawienie natywne | Klucz konfiguracji | Co robi |
|---|---|---|
| Prefiks faktury | PS_INVOICE_PREFIX | Stały prefiks tekstowy, często z tokenem roku (np. #IN). Osobny dla języków. |
| Dodaj bieżący rok | PS_INVOICE_USE_YEAR | Dodaje rok przed numerem albo po numerze. |
| Resetuj sekwencję co roku | PS_INVOICE_RESET | Uruchamia licznik od nowa na początku nowego roku. |
| Początkowy numer faktury | PS_INVOICE_START_NUMBER | Ustawia następny numer — używane jednorazowo przy migracji. |
| Prefiks dokumentu dostawy / następny numer | PS_DELIVERY_PREFIX / PS_DELIVERY_NUMBER | Osobny prefiks i licznik dla dokumentów dostawy. |
To pokrywa podstawy i dla sklepu działającego w jednym kraju, bez multistore, może w zupełności wystarczyć. Luki pojawiają się wtedy, gdy konfiguracja jest choć trochę bardziej wymagająca:
- Referencja zamówienia pozostaje losowa. Żadne natywne ustawienie jej nie zmienia. Magazyn i zespół obsługi nadal muszą literować "XKJHQWER".
- Brak kontroli nad zerami wiodącymi. Numery faktur idą jako 1, 2, 3 … 999, bez możliwości wymuszenia stałej długości typu 00001 — przez co w eksportach nie sortują się ani nie wyrównują czysto.
- Natywne korekty mają własną podstawową numerację i prefiks, ale ograniczone formatowanie. PrestaShop generuje korekty jako osobny typ dokumentu z osobnym licznikiem i prefiksem, jednak daje niewielką kontrolę nad ich formatem, resetem czy serią w porównaniu z dedykowanym modułem. W części jurysdykcji korekty powinny mieć wyraźnie osobną, samoopisującą się serię.
- Rok to jedyny okres resetu. Jeśli księgowy używa serii miesięcznych, natywny przełącznik tego nie obsłuży.
- Rozróżnienie per sklep jest dość zgrubne. W multistore możesz różnicować prefiks dla sklepu, ale ręczne zbudowanie czystego schematu dla konkretnych rynków jest niewygodne.
I co z tego? Dlaczego numeracja naprawdę ma znaczenie
To część, którą sprzedawcy często lekceważą, dopóki coś nie pójdzie źle. Trzy konkretne korzyści:
Bezpieczeństwo przy kontroli. Przepisy UE wymagają sekwencyjnej, unikalnej numeracji faktur opartej na jednej lub kilku seriach, a wiele organów podatkowych oczekuje, że każdą lukę da się wyjaśnić i udokumentować — luka, której nie potrafisz wyjaśnić, potrafi zmienić rutynową weryfikację w realny problem. To, co dokładnie uznaje się za zgodne z przepisami, zależy od kraju, a te szczegóły należą do poradników prawnych, nie tutaj: zobacz dostosowanie faktur: szablony PDF i wymogi prawne, jeśli chcesz sprawdzić, czego poszczególne rynki wymagają na dokumencie, oraz omówienie prawa e-commerce w UE dla szerszych obowiązków. W kontekście numeracji chodzi po prostu o to: przewidywalna, kontrolowana sekwencja jest warunkiem tego, by "brak niewyjaśnionych luk" był w ogóle osiągalny.
Szybsza obsługa. Klient, który podaje konsultantowi "ORD-2026-00142", pozwala znaleźć zamówienie od razu. Ten sam klient czyta "XKJHQWER", ktoś słyszy K jako Q, gubi jeden znak i tracicie dwie minuty na potwierdzanie pisowni. Pomnóż to przez każdą rozmowę z obsługą.
Księgowość, która importuje dane bez poprawek. Niezależnie od tego, czy biuro rachunkowe używa Datev, Xero czy lokalnego programu, oczekuje spójnego formatu i numerów o stałej długości, które poprawnie się sortują. Ustawienie formatu przed pierwszym eksportem jest znacznie tańsze niż późniejsze uzgadnianie rozbieżności.
Projektowanie schematu numeracji, który wytrzyma praktykę
Zanim dotkniesz jakiegokolwiek ustawienia, zaprojektuj schemat na papierze. Dobry schemat jest czytelny, sam wskazuje datę i ma stałą długość. Praktyczny wzór:
- Prefiks określający dokument i rynek — RE dla niemieckiej Rechnung, FA dla francuskiej facture, INV dla ogólnej faktury po angielsku.
- Rok (i miesiąc, jeśli księgowy używa serii miesięcznych) — dokument sam wskazuje okres, więc nie trzeba sprawdzać w innym miejscu, kiedy został wystawiony.
- Licznik z zerami wiodącymi — 00001, a nie 1, dzięki czemu wszystko się wyrównuje i sortuje.
- Osobna seria dla faktur korygujących — używaj oddzielnego licznika korekt, chyba że księgowy lub lokalne przepisy dopuszczają wspólną serię; korekta to odrębny typ dokumentu, a osobna seria zwykle jest czytelniejsza.
W efekcie powstają formaty takie jak RE-2026-00001 albo FV/00001/06/2026. Jedna zasada jest ważniejsza niż sam kształt numeru: wybierz go raz i nie zmieniaj w środku okresu. Zmiana formatu w trakcie roku obrotowego tworzy mylące zapisy i pozorne "luki", których audytorzy nie lubią. Jeśli musisz zmienić format, zrób to na granicy roku i zostaw księgowemu pisemną notatkę.
Pełna kontrola: droga przez moduł

Kiedy kończą się natywne ustawienia — a dla referencji zamówienia kończą się natychmiast — dwa nasze moduły przejmują brakującą część pracy, każdy dla jednego z dwóch systemów numeracji.
Nasz moduł Order Number zastępuje losową referencję zamówienia sensowną, sekwencyjną numeracją. Działa przez nadpisanie rdzeniowej klasy Order, więc nowa referencja trafia wszędzie tam, gdzie wcześniej była stara — na listę w panelu administracyjnym, do konta klienta i do wiadomości z potwierdzeniem — bez edycji motywu. Format budujesz z tokenów: {YYYY} dla roku, {MM} dla miesiąca, {NNNNNN} dla licznika z zerami wiodącymi, a nawet {PAYMENT}, aby uwzględnić metodę płatności. Co Ci to daje? Referencję typu ORD-2026-000142, którą klient odczyta bez pomyłek, a magazyn natychmiast zeskanuje i wyszuka — największe codzienne tarcie przy obsłudze zamówień znika.
Nasz moduł Invoice Number robi to samo po stronie dokumentów, wychodząc daleko poza natywny przełącznik prefiksu i roku. Ustawiasz własny prefiks, wstawiasz token {YYYY}, wybierasz długość licznika przez {NNNN} albo {NNNNNN}, przełączasz reset między trybem rocznym i miesięcznym, a także — czego rdzeń nie potrafi zrobić czysto — prowadzisz osobną, niezależnie formatowaną sekwencję dla faktur korygujących. I co z tego? Dajesz księgowemu dokładnie taki format, o jaki prosił, z długością, która importuje się bez ręcznego poprawiania, oraz z korektami w ich własnej, czytelnie opisanej serii. Porządek wymagany przy kontroli (ciągłość, kontrola, możliwość wyjaśnienia) i wygoda księgowania wynikają z tego samego ustawienia.
Jeśli chodzi o treść korekty, a nie jej numer — poprawne rozbicie podatków, odniesienia do faktury pierwotnej i format dokumentu gotowy dla księgowości — to jest zadanie dla Financial Revolution, który rozszerza korekty generowane przez PrestaShop przy zwrocie. Numeracja i treść dokumentu to celowo osobne obszary; użyj narzędzia pasującego do tego, co naprawiasz.
Multistore: jeden schemat na sklep
Jeśli prowadzisz kilka sklepów — różne marki, kraje, kanały sprzedaży — każdy powinien mieć własny licznik i własny prefiks. Mieszanie ich tworzy pozorne luki, gdy patrzysz na księgi pojedynczego sklepu, i uniemożliwia szybkie rozpoznanie, który sklep wystawił dokument. Czytelny układ:
| Sklep | Format faktury | Referencja zamówienia |
|---|---|---|
| Niemcy | RE-DE-2026-00001 | DE-2026-000142 |
| Francja | FA-FR-2026-00001 | FR-2026-000142 |
| Wielka Brytania | INV-UK-2026-00001 | UK-2026-000142 |
Każdy sklep zwiększa i resetuje licznik niezależnie, a rynek da się odczytać z samego prefiksu. Ustawienia faktur w PrestaShop multistore już uwzględniają kontekst; przy referencjach zamówień moduł realnie na siebie zarabia, bo natywna losowa referencja w ogóle nie ma pojęcia per sklep.
Migracja z domyślnych numerów bez tworzenia duplikatów
Zmiana w działającym sklepie wymaga ostrożności — źle ustawiony numer początkowy może zderzyć się z dokumentami, które już istnieją. Bezpieczna kolejność:
- Wybierz datę przejścia — najlepiej granicę roku obrotowego albo kwartału; jeśli musisz zmienić format w środku okresu, udokumentuj zmianę i zadbaj, aby stara i nowa seria były jednoznacznie identyfikowalne.
- Ustaw następny licznik powyżej najwyższego istniejącego numeru — dla faktur to PS_INVOICE_START_NUMBER (albo wartość początkowa w module); to gwarantuje brak duplikatów.
- Zostaw stare dokumenty bez zmian. Nigdy nie numeruj ponownie wystawionych faktur wstecz — zachowują swoje pierwotne numery przez cały wymagany okres przechowywania. Tylko nowe dokumenty dostają nowy format.
- Przetestuj reset, zanim na nim polegasz. Jeśli konfigurujesz reset roczny albo miesięczny, sprawdź na kopii testowej, że faktycznie przechodzi na nową serię, zamiast odkrywać 1 stycznia, że tego nie zrobił.
- Zapisz to dla księgowego — jednozdaniowa notatka o tym, co i kiedy się zmieniło, usuwa pytania o "lukę" w momencie przejścia.
Jeśli wolisz sprawdzić lub ustawić te wartości bezpośrednio, wszystkie znajdują się w tabeli ps_configuration jako zwykłe wiersze klucz/wartość. Odczytaj je przed jakąkolwiek zmianą w panelu administracyjnym, żeby znać aktualny stan:
-- Inspect the native invoice-numbering settings
SELECT name, value
FROM ps_configuration
WHERE name IN (
'PS_INVOICE_PREFIX',
'PS_INVOICE_USE_YEAR',
'PS_INVOICE_RESET',
'PS_INVOICE_START_NUMBER',
'PS_DELIVERY_PREFIX',
'PS_DELIVERY_NUMBER'
);
Część z nich jest zależna od języka (zwłaszcza prefiks), więc w sklepie wielojęzycznym wiersz może znajdować się w ps_configuration_lang, powiązany przez id_lang. Najbezpieczniejszym miejscem do ich ustawiania nadal jest panel administracyjny, który zapisuje właściwy wiersz dla właściwego kontekstu sklepu i języka; traktuj powyższy SQL jako sposób, aby zobaczyć aktualny stan, i wykonaj kopię zapasową przed każdym ręcznym zapisem. Sam następny sekwencyjny numer faktury nie jest przechowywany jako pojedynczy wiersz konfiguracji — PrestaShop wylicza go z najwyższego istniejącego pola number w ps_order_invoice połączonego z wartością początkową, dlatego ustawienie numeru początkowego powyżej najwyższego istniejącego dokumentu (zamiast przenumerowywania czegokolwiek) jest ruchem odpornym na duplikaty.
Najczęstsze błędy
- Zmiana formatu w środku roku. Klasyczne źródło nieczytelnej księgowości i niewyjaśnionych luk. Przechodź tylko na granicy okresu.
- Jedna seria dla faktur i korekt. Niektóre jurysdykcje lub biura rachunkowe wymagają albo preferują osobną serię — sprawdź lokalnie; nawet tam, gdzie wspólna seria jest dozwolona, mieszanie dokumentów utrudnia księgowanie. Zachowaj INV- i odrębną serię korekt.
- Pozostawienie licznika bez zer wiodących. Numery o różnej długości źle sortują się w arkuszach i eksportach. Ustaw stałą długość od pierwszego dnia.
- Zapomnienie, że istnieje referencja zamówienia. Sprzedawcy poprawiają numery faktur, ale zostawiają zamówienia na losowej referencji — a potem dziwią się, że rozmowy z obsługą nadal trwają długo. To dwa osobne systemy; napraw oba.
- Niespójna numeracja dokumentów dostawy. Mają mniej wymogów prawnych, ale chaotyczna sekwencja dokumentów dostawy nadal kosztuje zespół magazynu czas.
Gdzie kończy się numeracja, a zaczyna reszta zgodności
Numeracja to tylko jeden element poprawnych dokumentów i podatków w PrestaShop. Sąsiednie tematy, każdy z własnym poradnikiem:
- Co musi pokazywać PDF faktury i jak przygotować szablon — dostosowanie faktur: szablony PDF i wymogi prawne.
- Ustrukturyzowane e-fakturowanie tam, gdzie jest obowiązkowe (włoski SDI, francuska reforma i inne) — e-fakturowanie w Europie: które kraje go wymagają.
- Poprawne rozliczanie VAT przy sprzedaży transgranicznej — VAT w UE: OSS, IOSS i co musi obsłużyć Twój sklep oraz praktyczna konfiguracja podatków w PrestaShop.
- Jak ceny wyglądają przed finalizacją zamówienia — zasady prezentowania cen w Europie.
- Obsługa zwrotów od początku do końca, w której korekta jest jednym z etapów — zwroty i refundacje: jak uprościć proces.
Najczęściej zadawane pytania
Czy mogę ustawić sekwencyjną referencję zamówienia w PrestaShop bez modułu?
Nie z poziomu panelu administracyjnego. Referencja zamówienia pochodzi z Order::generateReference(), która zwraca losowy ciąg wielkich liter, i nie ma natywnego ustawienia, które to zmienia. Jedynym sposobem, aby była sekwencyjna, jest samodzielne nadpisanie klasy Order albo użycie modułu, który to robi — numer faktury da się skonfigurować natywnie, ale referencji zamówienia nie.
Dlaczego moja numeracja faktur ma luki?
Prawie zawsze dlatego, że zamówienie wygenerowało fakturę, a potem zostało anulowane lub zwrócone, albo dlatego, że status, po którym nie spodziewałeś się faktury, miał włączoną flagę "Faktura". Numer został nadany, a dokument później unieważniono, zostawiając lukę. W kilku krajach UE luka jest akceptowalna tylko wtedy, gdy potrafisz ją wyjaśnić, więc praktyczne rozwiązanie to proces, nie kasowanie: zachowaj unieważniony dokument, zanotuj powód i nigdy nie przenumerowuj faktur, żeby "zamknąć" lukę. To, czy luki są w ogóle tolerowane, zależy od jurysdykcji — potwierdź to z księgowym.
Migruję istniejący sklep — jaki numer początkowy ustawić?
Ustaw go o jeden wyżej niż najwyższy numer faktury, który został już wystawiony. PrestaShop wylicza następny numer na podstawie istniejących dokumentów oraz wartości początkowej, więc numer początkowy powyżej obecnego maksimum gwarantuje brak kolizji. Nigdy nie obniżaj numeru początkowego poniżej wystawionego dokumentu i nigdy nie numeruj starych faktur wstecz — zachowują pierwotne numery przez pełny wymagany prawem okres przechowywania.
Czy faktury i korekty powinny dzielić jedną serię numerów?
Zwykle nie. Korekta jest odrębnym typem dokumentu, a wielu księgowych i część jurysdykcji preferuje albo wymaga osobnej, samoopisującej się serii. PrestaShop daje korektom własny podstawowy licznik; jeśli potrzebujesz niezależnie formatowanej serii faktur korygujących z własnym resetem, moduł Invoice Number wychodzi poza natywny przełącznik. Zanim użyjesz wspólnej serii, zweryfikuj lokalną zasadę.
Czy zmiana prefiksu faktury przenumeruje moje stare faktury?
Nie. Prefiks i tokeny roku dotyczą dokumentów wygenerowanych po zmianie ustawienia; już wystawione faktury zachowują format, z którym powstały, ponieważ PrestaShop zapisuje nadany numer w każdym wierszu ps_order_invoice. Właśnie dlatego format warto zmieniać tylko na granicy okresu — mieszanie dwóch formatów w jednym roku obrotowym tworzy zapisy, które audytorzy uznają za mylące.
Numeracja dokumentów to jedno z tych ustawień, którego nikt nie chwali, ale wszyscy zauważają, kiedy jest błędne. Ustal schemat raz — czytelny prefiks, data widoczna w numerze, stała długość, korekty we własnej serii — skonfiguruj go z panelu administracyjnego albo modułem, który uzupełnia natywne braki, a potem go nie ruszaj. Zrobiona dobrze, po cichu wykonuje swoją pracę przy każdej kontroli, rozmowie z obsługą i zamknięciu roku tak długo, jak działa sklep.
Komentarze
Brak komentarzy. Bądź pierwszy!
Bądź pierwszy: zadaj pytanie albo podziel się przydatną opinią.
Dodaj komentarz
Dodaj pytanie, szczegół montażu albo opinię, która może pomóc innemu czytelnikowi.