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 nie rejestruje wyzwalaczy statusów, a przy zmianie statusu zapisze notatkę: „KSeF: pominięto auto-wystawianie — wymaga aktywnej licencji Pro.” Ręczne wystawienie z metaboksa zamówienia i formularz faktury pozostają dostępne.

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. 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:

Szczegóły płatności
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 (notatka w zamówieniu to potwierdzi),
  • 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).

Automat działa mimo odznaczonych statusów

Dotyczy wyłącznie instalacji aktualizowanych z bardzo starych wersji: gdy lista statusów jest pusta, wtyczka sięga po historyczne ustawienie pojedynczego wyzwalacza (ksef_auto_send_trigger). Doraźnie ustaw Auto-wysyłkę do KSeF na „Wyłączone” — nic nie poleci wtedy do MF — i napisz do wsparcia, wyczyścimy stary wpis.

Chcę zatrzymać automat natychmiast

Odznacz wszystkie statusy w Ustawienia → Ogólne i zapisz — wtyczka wróci do trybu wyłącznie ręcznego.