Start Dokumentacja Jak skonfigurować automatyczne wystawianie faktur (WooCommerce → KSeF)

Jak skonfigurować automatyczne wystawianie faktur (WooCommerce → KSeF)

Kompletna konfiguracja automatu: które statusy zamówień wyzwalają fakturę, co jest wysyłane do KSeF, jak traktować klientów prywatnych (B2C), kiedy klient dostaje PDF i jak to bezpiecznie przetestować. Ze zrzutami ekranu z ustawień wtyczki.

Zanim włączysz automat na produkcjiKażda faktura wysłana na środowisku PRODUKCJA zostaje w rejestrze Ministerstwa Finansów na stałe. Skonfiguruj i przetestuj automat na kredencjale TEST (krok 10), a dopiero potem przełącz się na produkcję.

1Jak działa automat

Łańcuch zdarzeń wygląda tak:

  1. Zamówienie WooCommerce zmienia status na jeden z zaznaczonych w ustawieniach.
  2. Wtyczka sprawdza, czy faktura już istnieje (nie duplikuje) i czy w ogóle ma ją wystawić — dla klienta prywatnego decyduje polityka B2C.
  3. Zadanie trafia do kolejki (Action Scheduler, grupa ksef; bez niego — zdarzenie WP-Cron za 5 s), więc klient nie czeka na odpowiedź KSeF przy zakupie.
  4. Faktura zostaje wystawiona. To, czy od razu poleci do KSeF, zależy od polityki auto-wysyłki. Gdy polityka nie obejmuje danego nabywcy — dokument zostaje lokalnie ze statusem „Wystawiona lokalnie — niewysłana do KSeF”.
  5. Po wysyłce wtyczka odpytuje KSeF o status od razu oraz po 60, 180, 300 i 600 sekundach, a niezależnie od tego co 15 minut chodzi cykliczny cron. Po potwierdzeniu zapisuje numer KSeF i UPO.
  6. Jeśli włączona jest auto-wysyłka PDF — klient dostaje fakturę mailem; przy błędzie automatu administrator dostaje powiadomienie.

2Licencja Pro

Automatyczne wystawianie z WooCommerce to funkcja Pro. Bez ważnej licencji wtyczka w ogóle nie rejestruje wyzwalaczy statusów — zmiana statusu zamówienia nic nie uruchamia i nie zostawia żadnej notatki (brak notatki nie oznacza więc, że z licencją jest wszystko w porządku). W wersji darmowej zostaje ręczne wystawienie z metaboksa zamówienia i formularz faktury; w wersji Pro bez aktywnej licencji każdy ekran wtyczki przekierowuje na stronę Licencja, a przycisk w metaboksie kończy się cichym przeładowaniem strony.

Klucz aktywujesz w e-Faktura KSeF → Licencja.

3Konto KSeF i domyślny sprzedawca

Automat musi wiedzieć, z którego konta KSeF wystawiać. Kolejność wyboru: konto przypisane do zamówienia → domyślne konto z ustawień → pierwsze skonfigurowane. Przy jednym koncie nie musisz nic robić; przy kilku (np. kilka NIP-ów) ustaw domyślne:

OgólneFaktury sprzedażyNumeracja fakturPodatkiWydatkiKSeFEmailUprawnieniaOdinstalowanie
Domyślne konto KSeF (sprzedawca)

Konto KSeF używane domyślnie przy automatycznym wystawianiu faktur z zamówień WooCommerce.

NIP 1234567890 (Moja Firma sp. z o.o.) · PROD Zapisz
Ustawienia → Faktury sprzedaży — wybór domyślnego konta KSeF używanego przy automatycznym wystawianiu z zamówień.

W tej samej zakładce dodasz konta bankowe (domyślny rachunek podpowiada się na fakturze) oraz zestawy danych kontaktowych (e-mail, telefon, miejsce wystawienia).

Sprawdź połączenieW Ustawienia → KSeF kliknij „Testuj połączenie” — wtyczka wykona pełny flow autoryzacji. To najszybszy sposób, żeby wyeliminować problem z tokenem, zanim automat wystawi pierwszą fakturę.

4Statusy wyzwalające wystawienie

Wejdź w e-Faktura KSeF → Ustawienia → Ogólne. Pierwsza pozycja to lista statusów zamówienia — zaznacz te, po przejściu w które faktura ma powstać. Można wybrać kilka.

Wtwojsklep.pl💬 0+ DodajCześć, Anna ▾
Konfiguracja Ustawienia Ogólne
? Pomoc

Ustawienia KSeF

Trigger auto-wystawiania, numeracja faktur, integracja email. Ustawienia per środowisko (test/prod) konfigurujesz w Kredencjałach KSeF.

OgólneFaktury sprzedażyNumeracja fakturPodatkiWydatkiKSeFEmailUprawnieniaOdinstalowanie
Automatyczne wystawianie faktur 1

Zaznacz statusy zamówienia WooCommerce, po przejściu w które faktura ma być automatycznie wystawiona i wysłana do KSeF. Można wybrać kilka.

Oczekiwanie na płatnośćWstrzymaneW trakcie realizacjiZrealizowaneAnulowaneZwróconeNieudaneWersja robocza

Zalecane: „W trakcie realizacji (processing)" — klient dostaje fakturę z e-mailem o zamówieniu. Brak zaznaczeń = tylko ręczne wystawianie.

Auto-wysyłka PDF do nabywcy 2Po wystawieniu faktury wyślij PDF e-mailem na adres nabywcy z zamówienia WC

Wysyłka odbywa się przez wp_mail() (Resend / SMTP jeśli skonfigurowano).

Auto-wysyłka do KSeF 3

Które faktury wysyłać automatycznie do KSeF po wystawieniu w sklepie. Domyślnie wyłączone — sam decydujesz co i kiedy.

Wyłączone (nic nie wysyłaj automatycznie)Tylko faktury dla firm (z NIP)Tylko faktury dla osób fizycznych (B2C — bez NIP)Wszystkie faktury (firm i osób prywatnych)

Zgodnie z ustawą KSeF dla osób prywatnych (B2C) faktura jest na żądanie — przy „B2C" lub „Wszystkie" wtyczka wystawi imienną z BrakID dla każdego klienta bez NIP.

Polityka dla klientów prywatnych 4Wystawiaj fakturę imienną (jeśli klient zaznaczył „Chcę fakturę")Wystawiaj fakturę imienną (zawsze dla każdego)Wystawiaj tylko faktury dla firm

Zgodnie z ustawą KSeF dla osób prywatnych B2C faktura jest na żądanie.

Zapisz zmiany

Ustawienia → Ogólne — komplet ustawień automatu: statusy, wysyłka PDF, polityka wysyłki do KSeF i polityka B2C.
  • 1Automatyczne wystawianie faktur — statusy WooCommerce wyzwalające fakturę. Brak zaznaczeń = tylko ręczne wystawianie.
  • 2Auto-wysyłka PDF do nabywcy — mail z fakturą PDF na adres z zamówienia.
  • 3Auto-wysyłka do KSeF — które faktury automat wysyła do KSeF (domyślnie: żadne).
  • 4Polityka dla klientów prywatnych — czy i kiedy wystawiać fakturę imienną B2C.

Zalecenie: „W trakcie realizacji (processing)” — status nadawany po opłaceniu zamówienia, więc faktura powstaje razem z e-mailem o zamówieniu. „Zrealizowane (completed)” wybierz, jeśli fakturujesz dopiero po wysyłce towaru.

Kilka statusów naraz jest bezpieczneWtyczka pilnuje, żeby nie wystawić drugiej faktury do tego samego zamówienia — jeśli dokument jest już wysłany, oczekuje na UPO albo został potwierdzony, kolejna zmiana statusu nic nie zrobi.

5Auto-wysyłka do KSeF (co faktycznie leci do MF)

To jest przełącznik oddzielający wystawienie od wysyłki. Wystawienie następuje zawsze, gdy zadziała trigger; wysyłka do KSeF — tylko dla wskazanego typu nabywcy:

  • Wyłączone (domyślnie) — faktury powstają lokalnie, do KSeF wysyłasz je ręcznie (metabox zamówienia albo lista faktur). Dobry wariant na start.
  • Tylko faktury dla firm (z NIP) — automat wysyła B2B, faktury imienne zostają lokalnie.
  • Tylko faktury dla osób fizycznych (B2C — bez NIP).
  • Wszystkie faktury — pełna automatyzacja.

Zmiana polityki działa też wstecz w prosty sposób: gdy faktura czeka lokalnie (status „issued”), a zamówienie ponownie wejdzie w wyzwalający status, wtyczka wyśle istniejący dokument — bez duplikatu i bez nowego numeru.

6Polityka dla klientów prywatnych (B2C)

Decyduje, czy w ogóle wystawiać fakturę klientowi bez NIP:

UstawienieEfekt
Wystawiaj fakturę imienną (jeśli klient zaznaczył „Chcę fakturę”) — domyślneFaktura powstaje tylko dla zamówień z zaznaczonym w koszyku żądaniem faktury. Pozostałe: notatka „pominięto wystawienie — klient prywatny bez żądania faktury”.
Wystawiaj fakturę imienną (zawsze dla każdego)Każde zamówienie B2C dostaje fakturę imienną (w XML nabywca oznaczony jako BrakID).
Wystawiaj tylko faktury dla firmZamówienia bez NIP są pomijane przez automat (ręcznie nadal możesz wystawić z metaboksa).

Faktury dla firm (poprawny 10-cyfrowy NIP w zamówieniu) są wystawiane zawsze, niezależnie od tego ustawienia.

7Auto-wysyłka PDF do klienta i powiadomienia administratora

Auto-wysyłka PDF do nabywcy (w tej samej zakładce Ogólne, domyślnie włączona) wysyła po wystawieniu maila z fakturą PDF na adres e-mail z zamówienia. To ona odpowiada za faktury z zamówień; drugi przełącznik — Ustawienia → Email → „Wysyłaj fakturę na email klienta automatycznie po wystawieniu” — dotyczy faktur wystawianych ręcznie z formularza. Wysyłka idzie przez wp_mail(), więc korzysta z Twojego SMTP/Resend, jeśli jest skonfigurowany. Wynik trafia do notatek zamówienia („KSeF: PDF faktury wysłany na …”).

Treść wiadomości ustawisz w Ustawienia → Email: temat i body ze zmiennymi {numer}, {kwota}, {termin}, {ksef}, {data}, {nabywca}, {sprzedawca}. Tam też włączysz powiadomienia dla administratora:

  • o błędach synchronizacji i nieudanej automatycznej wysyłce faktury,
  • o otwarciu bezpiecznika (circuit breaker),
  • o potwierdzeniu faktur (domyślnie wyłączone),
  • z limitem częstotliwości (domyślnie 10 minut), żeby nie zalać skrzynki.

Niezależnie od tego wtyczka pilnuje terminu ważności tokenu/certyfikatu KSeF i ostrzega mailem 14, 7 i 1 dzień przed wygaśnięciem.

8Pola faktury w koszyku (skąd bierze się NIP)

Automat rozpoznaje firmę po poprawnym, 10-cyfrowym NIP w zamówieniu. Wtyczka dokłada w koszyku trzy pola:

Dodatkowe informacje
Uwagi na temat zamówienia, np. szczegóły dotyczące dostawy.
Chcę otrzymać fakturę VAT 1
Na firmę (z NIP)
10 cyfr, bez kresek
Checkout WooCommerce — pola dodawane przez wtyczkę. Pole NIP i wybór rodzaju faktury pokazują się po zaznaczeniu „Chcę otrzymać fakturę VAT”.
  • 1Chcę otrzymać fakturę VAT — to zaznaczenie honoruje polityka B2C „na żądanie”.
  • 2Rodzaj faktury — na firmę (z NIP) albo na osobę fizyczną (bez NIP).
  • 3Wpisz numer NIP — 10 cyfr bez kresek. Przy zaznaczonym żądaniu faktury na firmę WooCommerce nie przepuści zamówienia bez NIP-u o poprawnej długości.

Dla faktury imiennej klient może zaznaczyć „Faktura na inne dane niż dane zamówienia” i podać imię i nazwisko oraz adres — te dane mają pierwszeństwo przed polami rozliczeniowymi. Dla firm wtyczka Pro uzupełnia nazwę i adres z GUS po numerze NIP.

9Oznaczenia KSeF na produktach

Żeby faktury z automatu były od razu poprawne podatkowo, uzupełnij oznaczenia raz na karcie produktu: Produkty → edycja produktu → Dane produktu → Oznaczenia KSeF (faktura).

Dane produktu — Ogólne

Oznaczenia KSeF (faktura)

Załącznik 15 (split payment)?
Kod GTU— brak —
PKWiU / CN62.01.11.0
Karta produktu WooCommerce — pola dodawane przez wtyczkę; wartości dziedziczy każda faktura z zamówienia.
  • Załącznik 15 (split payment) — pozycja zostanie oznaczona jako objęta obowiązkowym mechanizmem podzielonej płatności (P_12_Zal_15).
  • Kod GTU — GTU_01 … GTU_13.
  • PKWiU / CN — np. 62.01.11.0 lub 84713000.

Stawki VAT automat bierze z zamówienia (produkty, dostawa i opłaty), więc muszą być poprawnie skonfigurowane w WooCommerce — zakładka Ustawienia → Podatki we wtyczce pokazuje, czy podatki są włączone i czy ceny wprowadzasz netto czy brutto.

10Test przed produkcją

  1. W Ustawienia → KSeF ustaw kredencjał na środowisko TEST (token z panelu testowego MF) i kliknij „Testuj połączenie”.
  2. Zaznacz status wyzwalający, ustaw politykę wysyłki na „Wszystkie faktury” i zapisz.
  3. Złóż zamówienie testowe (raz z NIP-em, raz bez) i przestaw je w wyzwalający status.
  4. Otwórz zamówienie: metabox „KSeF — faktura” powinien pokazać numer i status, a notatki zamówienia — całą historię.

Notatki do zamówienia

KSeF: zakolejkowano wystawienie faktury (trigger: on_processing).
31.07.2026 o 10:04
KSeF: faktura wysłana — czekamy na potwierdzenie (UPO).
31.07.2026 o 10:04
KSeF: faktura zatwierdzona — pobrano UPO i numer KSeF.
31.07.2026 o 10:05
Notatki zamówienia po poprawnym przejściu automatu: kolejkowanie → wysyłka → potwierdzenie UPO.

Stan całej integracji podejrzysz w e-Faktura KSeF → Monitoring: liczniki faktur wysyłanych/potwierdzonych, stan bezpiecznika (circuit breaker), ostatnie synchronizacje i ostatnie błędy.

Po udanym teście przełącz kredencjał na PRODUKCJA (token produkcyjny) i ponownie kliknij „Testuj połączenie”. Faktury testowe zostają w piaskownicy MF — nie są sprzedażą.

11Ściąga: co się stanie przy jakich ustawieniach

NabywcaPolityka B2CAuto-wysyłka do KSeFWynik po zmianie statusu
Firma (NIP)dowolnaWyłączoneFaktura wystawiona lokalnie; wyślij ją ręcznie z metaboksa.
Firma (NIP)dowolnaTylko firmy / WszystkieFaktura wystawiona i wysłana do KSeF, potem numer KSeF + UPO.
Osoba prywatna, zaznaczyła „Chcę fakturę”Na żądanieB2C / WszystkieFaktura imienna wystawiona i wysłana do KSeF.
Osoba prywatna, bez żądaniaNa żądaniedowolnaBrak faktury; notatka o pominięciu (ręcznie nadal możesz wystawić).
Osoba prywatnaZawsze dla każdegoWyłączoneFaktura imienna wystawiona lokalnie, bez wysyłki do KSeF.
Osoba prywatnaTylko firmydowolnaAutomat pomija zamówienie.

12Rozwiązywanie problemów

Automat nic nie robi

  • brak zaznaczonych statusów w Ustawienia → Ogólne,
  • brak ważnej licencji Pro — wtedy w zamówieniu nie pojawi się żadna notatka(wyzwalacze nie są w ogóle rejestrowane); stan licencji sprawdzisz w e-Faktura KSeF → Licencja,
  • zamówienie ma już fakturę (statusy „wysłana”, „oczekuje”, „potwierdzona” blokują ponowne wystawienie),
  • klient prywatny bez żądania faktury przy polityce „na żądanie”.

Faktury powstają, ale nie idą do KSeF

Sprawdź Auto-wysyłkę do KSeF — przy „Wyłączone” to zachowanie oczekiwane. Statusy faktur zobaczysz na liście Faktury sprzedaży; pojedyncze dokumenty wyślesz przyciskiem „Wyślij do KSeF”.

Faktura wystawiona lokalnie po błędzie

Gdy KSeF odrzuci wysyłkę, dokument zostaje lokalnie, a w zamówieniu pojawia się notatka z treścią błędu i mail do administratora. Popraw przyczynę i ponów wysyłkę — numer jest zarezerwowany, więc w numeracji nie powstanie dziura.

Wszystko wisi w „czeka na UPO”

Statusy dociąga cron. Jeśli WordPress ma wyłączony WP-Cron (DISABLE_WP_CRON), ustaw systemowy cron wywołujący wp-cron.php. Doraźnie kliknij „Sprawdź status / pobierz UPO” w metaboksie zamówienia.

Faktury z błędnymi danymi nabywcy

Sprawdź kolejność źródeł: dane potwierdzone na checkoucie → GUS po NIP → pola rozliczeniowe zamówienia. Jeśli klient wpisał nazwisko w polu „Firma”, ale podał NIP, faktura i tak pójdzie na firmę (decyduje NIP).

Chcę zatrzymać automat natychmiast

Odznacz wszystkie statusy w Ustawienia → Ogólne i zapisz — pusta lista oznacza wyłączony automat i wtyczka wraca do trybu wyłącznie ręcznego. Jeśli aktualizujesz z bardzo starej wersji, jednorazowe, historyczne ustawienie pojedynczego wyzwalacza jest przy aktualizacji automatycznie przenoszone na listę statusów i czyszczone — nic nie zadziała „w tle” wbrew temu, co widzisz w ustawieniach.