KSeF Kit

Odrzucenia i problemy

Odrzucona, wstrzymana czy w kolejce

Najpierw rozróżnij trzy sytuacje:

  • Odrzucona. KSeF nie przyjął faktury i zwrócił kod. Coś w danych albo w połączeniu wymaga poprawy. Zobacz Odrzucenia.
  • Wstrzymana. Świadomie jej nie wysłaliśmy, bo to nie jest dokument do KSeF albo takiej faktury jeszcze nie składamy. Zobacz Wstrzymane.
  • W kolejce / zablokowana. Czeka na wysłanie, bo darmowy limit się wyczerpał albo profil firmy jest niekompletny. To nie błąd KSeF. Fakturę zablokowaną przez limit wyślemy sami, gdy w limicie zwolni się miejsce (może to potrwać nawet miesiąc), albo od razu po przejściu na wyższy plan. Zobacz Plany i limity.

Wstrzymane

Wstrzymana faktura nie trafiła do KSeF. Nie ma kodu błędu i nie wysyłamy e-maila. Przy części powodów fakturę trzeba złożyć ręcznie, więc przeczytaj „Co zrobić” przy swoim powodzie.

Out of KSeF scope

Co oznacza: sprzedaż konsumencka (B2C) albo brak NIP nabywcy. KSeF dotyczy faktur między firmami (B2B) z polskim NIP-em, a ta sprzedaż się w nim nie mieści.

Dlaczego nic nie wysłaliśmy: to nie jest dokument do KSeF, więc nie ma czego składać.

Co zrobić: rozlicz sprzedaż tak jak zwykle (paragon / ewidencja VAT). Jeśli to jednak miała być faktura firmowa, dodaj NIP nabywcy w Stripe i złóż ponownie.

Out of KSeF scope (EU OSS)

Co oznacza: sprzedaż wygląda na cyfrową usługę dla konsumenta z innego kraju UE. Takie sprzedaże rozlicza się w procedurze VAT-OSS (One Stop Shop), a nie w KSeF.

Dlaczego nic nie wysłaliśmy: KSeF obejmuje krajowe faktury B2B, a nie unijne B2C. To inna ścieżka rozliczenia.

Co zrobić: ujmij VAT w swojej deklaracji OSS. Po stronie KSeF nie musisz nic robić.

Nothing charged

Co oznacza: suma faktury wynosi 0,00 i żadna pozycja nie ma kwoty. Stripe wystawia takie dokumenty za okres próbny (także przy zmianie liczby użytkowników albo planu w jego trakcie) i za okres rozliczeniowy bez zużycia.

Dlaczego nic nie wysłaliśmy: faktura dokumentuje sprzedaż, a tu nic nie sprzedano odpłatnie. To nie jest dokument do KSeF, więc nie ma czego składać. Nie wlicza się też do limitu.

Co zrobić: nic. Pierwsza faktura z kwotą pojedzie do KSeF jak zwykle.

Zero or negative total

Co oznacza: suma faktury wynosi zero albo jest ujemna, ale pozycje mają kwoty. Najczęstsze przyczyny to rabat 100% oraz zmiana planu, przy której zwrot za niewykorzystany czas równoważy nową opłatę albo ją przewyższa.

Dlaczego nic nie wysłaliśmy: faktury przyjętej przez KSeF nie da się wycofać, a to, czy sprzedaż bez kwoty do zapłaty w ogóle wymaga dokumentu, jest decyzją podatkową. Nie podejmujemy jej za Ciebie. (Faktura opłacona z salda klienta to inny przypadek: jej suma jest dodatnia i trafia do KSeF normalnie.)

Co zrobić: ustal to z księgową. Obniżkę wcześniejszej faktury dokumentuje się fakturą korygującą do tej faktury. Na razie wystawisz ją ręcznie w aplikacji podatnika KSeF. Ponowne złożenie niczego nie zmieni, bo kwoty pochodzą ze zdarzenia, które Stripe już przysłał.

Unsupported domestic rate

Co oznacza: to faktura krajowa dla firmy, ale ze stawką 0% lub zwolnioną. Dziś składamy faktury ze stawkami 23%, 8% i 5%.

Dlaczego nic nie wysłaliśmy: tej stawki jeszcze nie budujemy w FA(3), więc wolimy niczego nie składać, niż złożyć błędnie. Obsługa tej stawki jest w drodze.

Co zrobić: jeśli faktura jest wymagana teraz, złóż ją na razie ręcznie w aplikacji podatnika KSeF. Gdy dodamy obsługę tej stawki, kolejne takie faktury pojadą automatycznie.

Self-invoice

Co oznacza: NIP nabywcy jest taki sam jak Twój własny. KSeF nie przyjmie faktury wystawionej samemu sobie (w schemacie: Podmiot1 = Podmiot2).

Dlaczego nic nie wysłaliśmy: KSeF i tak by ją odrzucił, więc zatrzymujemy ją wcześniej, zanim trafi do urzędu.

Co zrobić: sprawdź NIP klienta na fakturze w Stripe. Jeśli to literówka, popraw NIP nabywcy i złóż ponownie.

Multi-rate invoice

Co oznacza: faktura łączy więcej niż jedną stawkę VAT (np. pozycje 23% i 8% na jednym dokumencie). Dziś składamy faktury z jedną stawką.

Dlaczego nic nie wysłaliśmy: dokumentu z wieloma stawkami jeszcze nie budujemy, a nie chcemy złożyć go niepoprawnie.

Co zrobić: rozdziel sprzedaż w Stripe na osobne faktury, po jednej na stawkę, i złóż je ponownie, albo na razie złóż tę fakturę ręcznie. Obsługa wielu stawek jest w drodze.

Foreign-currency correction

Co oznacza: to korekta (KOR) w obcej walucie z polskim VAT-em. Taka korekta wymaga przeliczenia kwot VAT na PLN i jeszcze jej nie składamy.

Dlaczego nic nie wysłaliśmy: tej szczególnej formy korekty jeszcze nie budujemy. Zwykłe korekty w PLN i faktury w obcej walucie składamy normalnie. Zobacz Korekty i Waluty i NBP.

Co zrobić: jeśli korekta jest wymagana, złóż ją na razie ręcznie. Obsługa tego przypadku jest w drodze.

Buyer address missing

Co oznacza: faktura ma zidentyfikowanego nabywcę, czyli z numerem identyfikacyjnym (polskim NIP-em, numerem VAT UE albo zagranicznym numerem podatkowym), ale bez adresu. Gdy nabywca jest zidentyfikowany, polskie prawo wymaga na pełnej fakturze jego adresu (art. 106e ust. 1 pkt 3); sam numer identyfikacyjny nie wystarczy.

Dlaczego nic nie wysłaliśmy: schemat KSeF by ją przyjął, ale faktura byłaby niezgodna z prawem. Dlatego wstrzymujemy ją, zamiast po cichu złożyć wadliwy dokument.

Co zrobić: otwórz klienta w Stripe i dodaj jego adres rozliczeniowy, żeby kolejne faktury szły bez przeszkód. Ta faktura zachowuje stan z chwili finalizacji i ponowne złożenie nie doda adresu, więc złóż ją ręcznie. (Faktura konsumencka / uproszczona bez numeru identyfikacyjnego nie wymaga adresu i nie jest tu wstrzymywana.)

Wskazówka: żeby uniknąć tego na stałe, ustaw w Stripe zbieranie adresu rozliczeniowego na każdej fakturze: zobacz Przygotuj Stripe do zbierania danych faktury. Gdy zbieranie adresu jest wymagane, to wstrzymanie przestaje się pojawiać.

Invoice lines truncated

Co oznacza: faktura ma więcej pozycji, niż Stripe mieści w jednym zdarzeniu webhooka (Stripe przysyła je po 10). Normalnie sami dopytujemy wtedy Stripe o całą listę i składamy fakturę ze wszystkimi pozycjami. To wstrzymanie oznacza, że tego zapytania nie udało się wykonać.

Chwilowa awaria Stripe nie powoduje tego wstrzymania. Takie błędy ponawiamy automatycznie przez kilka minut. To wstrzymanie znaczy więc jedno z dwojga: ponowienia się wyczerpały (Stripe był niedostępny dłużej) albo Stripe wprost odmówił (aplikacja została odinstalowana, klucz unieważniony lub zabrakło uprawnienia do czytania faktur).

Dlaczego nic nie wysłaliśmy: moglibyśmy złożyć to, co widzimy. Powstałaby faktura, którą KSeF przyjmie, ale z brakującymi pozycjami. Wstrzymujemy ją, zamiast po cichu złożyć niepełny dokument.

Co zrobić: sprawdź w ustawieniach, czy połączenie ze Stripe jest aktywne (aplikacja nie została odinstalowana, klucz nie został unieważniony), a potem złóż fakturę ponownie. Przy każdej próbie pobieramy listę pozycji od Stripe od nowa. Jeśli wstrzymanie wraca przy sprawnym połączeniu, odezwij się do nas.

Line net mismatch

Co oznacza: suma pozycji nie zgadza się z kwotą netto faktury o więcej, niż wynikałoby ze zwykłego zaokrąglenia. Najczęstsza przyczyna to rabat lub kupon, którego Stripe nie przypisał do konkretnych pozycji; tak samo działa zmiana kwoty na poziomie całej faktury. (Koszt wysyłki nie powoduje tego wstrzymania, bo składamy go jako osobną pozycję „Koszt dostawy”.)

Dlaczego nic nie wysłaliśmy: różnicę dałoby się „dosunąć” do ostatniej pozycji i sumy faktury nadal by się zgadzały, ale rozbicie na pozycje byłoby nieprawdziwe. KSeF przyjąłby taki dokument, więc błąd wyszedłby dopiero przy kontroli. Wstrzymujemy, zamiast zgadywać.

Co zrobić: złóż tę fakturę ręcznie. Ponowne złożenie nie pomoże: sfinalizowanej faktury Stripe nie da się już przebudować, a kwoty bierzemy ze zdarzenia, które Stripe nam przysłał. Przy kolejnych fakturach stosuj rabaty jako zwykłe kupony Stripe Billing, zamiast zmieniać kwotę na poziomie całej faktury. Kupony rozkładają się na pozycje automatycznie, a takie faktury składamy normalnie.

Stripe test mode

Co oznacza: dokument pochodzi z trybu testowego Stripe, z Sandboxa Stripe albo jest przykładową fakturą KSeF Kit, a to konto wysyła do KSeF PROD.

Dlaczego nic nie wysłaliśmy: faktura przyjęta w produkcyjnym KSeF jest prawdziwym dokumentem wystawionym na Twój NIP. Dokument testowy nie może się tam znaleźć, więc do PROD wysyłamy wyłącznie dokumenty z trybu live Stripe.

Co zrobić: nic, jeśli to był test. Prawdziwe faktury wystawiaj na koncie live Stripe. Jeśli chcesz dalej testować na Sandboxie, przełącz to konto KSeF Kit na TEST.

Odrzucenia

Odrzucenie to sytuacja, w której KSeF odmówił przyjęcia faktury i zwrócił kod. W odróżnieniu od wstrzymań coś tu wymaga poprawy z Twojej strony albo po stronie połączenia.

Gdzie jest naprawa

Przy każdym odrzuceniu wskazujemy, gdzie je naprawić:

  • Stripe: popraw dane na fakturze w Stripe i złóż ponownie.
  • KSeF: problem z połączeniem lub tokenem; połącz ponownie. Zobacz Połączenie z KSeF.
  • Automat: problem przejściowy po stronie transmisji lub KSeF; ponawiamy automatycznie albo wystarczy złożyć ponownie.
  • Wsparcie: skontaktuj się z nami.

Najczęstsze kody

Kod Znaczenie Naprawa
21401 Faktura nie przeszła walidacji schematu FA(3) Stripe: sprawdź dane sprzedawcy/nabywcy (NIP, adres, kraj)
21402 Niezgodny rozmiar przesłanej faktury Automat: złóż ponownie
21403 Niezgodny skrót (hash) faktury Automat: złóż ponownie ze świeżymi danymi
21405 Nieprawidłowa data faktury Stripe: popraw datę wystawienia
21407 Niezgodne sumy VAT Stripe: popraw kwoty / stawki VAT
21408 Duplikat: faktura już w KSeF Wsparcie: była już złożona, nic nie rób
21301 Nieprawidłowy numer NIP Stripe: popraw NIP nabywcy
21304 Brak wymaganego NIP Stripe: dodaj NIP nabywcy
21478 NIP nie należy do czynnego podatnika VAT Stripe: zweryfikuj NIP nabywcy
21440 Sesja KSeF została zamknięta Automat: złóż ponownie
440 Sesja anulowana Automat: złóż ponownie
21470 Token KSeF nieaktualny KSeF: wygeneruj nowy token i połącz ponownie
450 Uwierzytelnienie nie powiodło się: nieprawidłowy token KSeF: patrz niżej
401 / 403 / 415 / 425 / 460 Problem z uwierzytelnieniem / uprawnieniami KSeF: sprawdź połączenie i uprawnienia
429 Zbyt wiele zapytań do KSeF Automat: poczekaj, ponawiamy
500 / 550 Błąd po stronie KSeF Automat: chwilowy problem KSeF, ponawiamy

Authentication failed (450)

To najczęstszy problem blokujący przy pierwszym połączeniu. Nie jest to problem z fakturą. KSeF nie przyjął Twojego tokenu. Trafiają tu kody 450, 415, 425, 460, 401, 403, 21111 i 21115.

450 („nieprawidłowy token”) prawie zawsze oznacza jedną z poniższych przyczyn:

  1. Token pochodzi z niewłaściwego środowiska. Token wygenerowany w aplikacji podatnika KSeF na PROD/DEMO zawsze zostanie odrzucony na TEST (i odwrotnie). To przyczyna numer jeden przy pierwszej wysyłce w środowisku TEST.
  2. To stary token z KSeF 1.0. KSeF 1.0 został wycofany we wrześniu 2025, więc stare tokeny już się nie uwierzytelniają.
  3. Token wygasł, został unieważniony albo jest nieaktywny.
  4. Niezgodność NIP lub kontekstu. Token nie został wystawiony dla NIP firmy, w imieniu której wystawiasz fakturę (NIP z profilu firmy). Logowanie na TEST jest fikcyjne i przyjmie dowolny wymyślony NIP, więc wygeneruj token dla tego samego numeru co w profilu. Na DEMO logujesz się swoim prawdziwym NIP-em.

Jak naprawić:

  1. Otwórz aplikację podatnika KSeF we właściwym środowisku. TEST: https://ap-test.ksef.mf.gov.pl, produkcja: https://ap.ksef.mf.gov.pl. Upewnij się, że przez pomyłkę nie wybierasz PROD/DEMO.
  2. Wygeneruj nowy token KSeF 2.0 dla NIP firmy, z uprawnieniem do wysyłania faktur.
  3. W Połączeniu z KSeF sprawdź, czy wybrane środowisko się zgadza (TEST czy PROD), a następnie wklej nowy token. Pola z danymi poufnymi są tylko do zapisu, a puste pole zachowuje starą wartość, więc token trzeba faktycznie wkleić.
  4. Kliknij Testuj połączenie i poczekaj na potwierdzenie, zanim złożysz fakturę ponownie.

Kody 415 i 403 oznaczają, że token się uwierzytelnił, ale brakuje mu uprawnienia do wysyłania faktur. Nadaj je w aplikacji podatnika i połącz ponownie. Kod 460 to problem z certyfikatem XAdES: sprawdź, czy certyfikat i klucz prywatny (PEM) nie wygasły i czy pasują do środowiska. Kod 21111 to jednorazowe wyzwanie autoryzacyjne, które wygasło. Wystarczy spróbować ponownie.

Authentication blocked (480)

KSeF zablokował uwierzytelnienie z powodu podejrzenia incydentu bezpieczeństwa (kod 480) albo próby uwierzytelnienia metodami osoby zmarłej (kod 470). To rzadkie przypadki, które wymagają ręcznego zgłoszenia do Ministerstwa Finansów. Skontaktuj się z nami, a pomożemy Ci je zgłosić.

Token expired (21470)

Token KSeF wygasł lub został unieważniony. Wygeneruj nowy token w aplikacji podatnika i wklej go ponownie w Połączeniu z KSeF. Naprawa jest taka sama jak przy Authentication failed (450).

Schema validation (21401)

Struktura faktury nie zgadza się z wymaganym schematem FA(3). Zwykle brakuje wymaganego pola albo ma ono zły format. Sprawdź dane sprzedawcy i nabywcy (NIP, adres, kraj) na fakturze w Stripe, popraw je i złóż fakturę ponownie.

NIP issues

Chodzi o brak NIP nabywcy (21304), nieprawidłowy NIP (21301: błędna suma kontrolna lub format) oraz NIP, który nie figuruje jako czynny podatnik VAT (21478: biała lista). Wszystkie poprawisz na fakturze w Stripe: dodaj lub popraw NIP klienta (Tax ID typu pl_nip), a następnie złóż fakturę ponownie. Przy 21478 upewnij się, że kontrahent jest rzeczywiście czynnym podatnikiem VAT.

Invoice data issues

Data faktury jest nieprawidłowa (21405) albo sumy VAT się nie bilansują (21407). Popraw datę wystawienia albo kwoty i stawki VAT poszczególnych pozycji na fakturze w Stripe, po czym złóż fakturę ponownie.

Duplicate invoice

Faktura o tym numerze jest już zarejestrowana w KSeF (21408) albo została już wysłana w tej samej sesji (21176). Sprawdź w aplikacji podatnika KSeF (produkcja: https://ap.ksef.mf.gov.pl, TEST: https://ap-test.ksef.mf.gov.pl), czy jest tam ta sama faktura. Jeśli tak, nie musisz nic robić. Korektę takiej faktury wystaw tam, gdzie ją złożono: korekta musi się odwołać do numeru KSeF oryginału, a KSeF Kit go nie zna, więc noty kredytowej ze Stripe do tej faktury nie złożymy. Jeśli pod tym numerem jest inna faktura, napisz do nas.

Session issues

Sesja wysyłki została zamknięta (21440), anulowana lub przekroczyła limit czasu (440), nie przyjęła żadnej ważnej faktury (445), jest w stanie niepozwalającym na tę operację (21180) albo przesyłanie danych przekroczyło dozwolony czas (21208). To problemy na poziomie sesji: wystarczy złożyć fakturę ponownie, a my otworzymy nową sesję.

Transmission issues

Rozmiar (21402) lub skrót (hash, 21403) przesłanego dokumentu nie zgadzał się z zadeklarowanym. Zwykle to przejściowy problem transmisji. Złóż fakturę ponownie ze świeżymi danymi pobranymi ze Stripe.

KSeF-side issues

Ograniczenie liczby zapytań (429), błąd serwera (500) albo operacja anulowana przez KSeF z przyczyny wewnętrznej (550). To problemy po stronie urzędu, a nie Twojej faktury. Ponawiamy automatycznie. Jeśli problem się utrzymuje, sprawdzimy to za Ciebie.

No test filing on production

Jeśli po połączeniu konta produkcyjnego szukasz przycisku „zgłoszenie testowe” albo „wyślij próbkę”, to celowo go nie ma. Na produkcji nie ma trybu ćwiczeniowego: każdy wysłany dokument to prawdziwa faktura (art. 108 ustawy o VAT). Żeby poćwiczyć, połącz zamiast tego środowisko TEST: zobacz Połączenie z KSeF. Na produkcji nie musisz nic robić: pierwszą prawdziwą fakturę ze Stripe złożymy automatycznie.

Unknown codes

Jeśli KSeF zwróci kod, którego jeszcze nie rozpoznajemy, faktura nie przepada: czeka i możesz złożyć ją ponownie. Kierujemy Cię wtedy do nas, żebyśmy mogli go wyjaśnić i w razie potrzeby dopisać do tej listy.