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.
1Jak działa automat
Łańcuch zdarzeń wygląda tak:
- Zamówienie WooCommerce zmienia status na jeden z zaznaczonych w ustawieniach.
- Wtyczka sprawdza, czy faktura już istnieje (nie duplikuje) i czy w ogóle ma ją wystawić — dla klienta prywatnego decyduje polityka B2C.
- 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. - 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”.
- 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.
- 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:
Konto KSeF używane domyślnie przy automatycznym wystawianiu faktur z zamówień WooCommerce.
W tej samej zakładce dodasz konta bankowe (domyślny rachunek podpowiada się na fakturze) oraz zestawy danych kontaktowych (e-mail, telefon, miejsce wystawienia).
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.
Ustawienia KSeF
Trigger auto-wystawiania, numeracja faktur, integracja email. Ustawienia per środowisko (test/prod) konfigurujesz w Kredencjałach KSeF.
| 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ść✓Wstrzymane✓W trakcie realizacji✓Zrealizowane✓Anulowane✓Zwrócone✓Nieudane✓Wersja 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 2 | ✓Po 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 4 | Wystawiaj 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
- 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.
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:
| Ustawienie | Efekt |
|---|---|
| Wystawiaj fakturę imienną (jeśli klient zaznaczył „Chcę fakturę”) — domyślne | Faktura 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 firm | Zamó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:
- 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) — 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.0lub84713000.
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ą
- W Ustawienia → KSeF ustaw kredencjał na środowisko TEST (token z panelu testowego MF) i kliknij „Testuj połączenie”.
- Zaznacz status wyzwalający, ustaw politykę wysyłki na „Wszystkie faktury” i zapisz.
- Złóż zamówienie testowe (raz z NIP-em, raz bez) i przestaw je w wyzwalający status.
- Otwórz zamówienie: metabox „KSeF — faktura” powinien pokazać numer i status, a notatki zamówienia — całą historię.
Notatki do zamówienia
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
| Nabywca | Polityka B2C | Auto-wysyłka do KSeF | Wynik po zmianie statusu |
|---|---|---|---|
| Firma (NIP) | dowolna | Wyłączone | Faktura wystawiona lokalnie; wyślij ją ręcznie z metaboksa. |
| Firma (NIP) | dowolna | Tylko firmy / Wszystkie | Faktura wystawiona i wysłana do KSeF, potem numer KSeF + UPO. |
| Osoba prywatna, zaznaczyła „Chcę fakturę” | Na żądanie | B2C / Wszystkie | Faktura imienna wystawiona i wysłana do KSeF. |
| Osoba prywatna, bez żądania | Na żądanie | dowolna | Brak faktury; notatka o pominięciu (ręcznie nadal możesz wystawić). |
| Osoba prywatna | Zawsze dla każdego | Wyłączone | Faktura imienna wystawiona lokalnie, bez wysyłki do KSeF. |
| Osoba prywatna | Tylko firmy | dowolna | Automat 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.