- Strona główna
- Blog
- Jak interpretować kody błędów KSeF w Twojej firmie?
Jak interpretować kody błędów KSeF w Twojej firmie?
Odpowiedź bramki KSeF składa się z trzech warstw: statusu HTTP, kodu exceptionCode oraz statusu faktury. Prawidłowa interpretacja tych danych pozwala szybko ustalić, czy błąd wymaga poprawy struktury XML przez integratora, czy też decyzji księgowej o wystawieniu faktury korygującej.

Bramka KSeF odpowiada numerem i jednym zdaniem, a Ty w tej samej minucie musisz zdecydować jedną z trzech rzeczy: poprawić plik XML, ponowić żądanie albo oddać sprawę księgowej. To trzy różne decyzje, trzy różne koszty i trzy różne terminy.
Zgodnie z obecną ustawą kary z art. 106ni ustawy o VAT obowiązują od 1 stycznia 2027 r. Ministerstwo Finansów zapowiedziało 16 września 2026 r. ich przesunięcie na 1 stycznia 2028 r. — to projekt ustawy, jeszcze nieuchwalony. Przesunięcie dotyczy tylko kar, a nie samego obowiązku korzystania z KSeF. Faktura, która nie weszła do systemu, przestaje być problemem technicznym i staje się ryzykiem finansowym, więc warto mieć w firmie jedną rzecz: procedurę czytania komunikatów bramki, a nie odruch przeklejania numeru do Google.
Ten tekst jest mapą. Pokazuje, z czego składa się odpowiedź KSeF, co oznacza każda rodzina kodów, jak wygląda gotowe rozgałęzienie decyzji i które kody wolno po prostu ponowić. Pełną listę kodów publikuje Ministerstwo Finansów w dokumentacji API; tutaj omawiamy te, które zdarzają się najczęściej.
Komunikat KSeF ma trzy warstwy, nie jedną
Numer błędu bez kontekstu jest bezużyteczny. Ten sam 21405 raz oznacza literówkę w parametrze zapytania, a raz źle zmapowane pole w ERP. Dlatego każdy komunikat czyta się na trzech poziomach:
Status HTTP — czy żądanie w ogóle zostało przyjęte przez bramkę.
exceptionCodeiexceptionDescription— konkretna przyczyna po stronie KSeF.Status faktury lub sesji — czy dokument już dostał numer KSeF, czy jeszcze nie istnieje w systemie.
Dopiero te trzy razem mówią, czyj to problem. Warstwa pierwsza i druga należą do integracji. Warstwa trzecia — do księgowości, bo to ona decyduje, czy potrzebna jest korekta.
Do tego dochodzą dwa identyfikatory, które warto logować zawsze: referenceNumber operacji i traceId odpowiedzi. Bez nich zgłoszenie do Ministerstwa Finansów albo do dostawcy oprogramowania jest opowieścią, a nie zgłoszeniem.
Mapa rodzin kodów: co mówi pierwszy człon numeru
Numeracja KSeF 2.0 nie jest przypadkowa. Pierwsze cyfry wskazują obszar systemu, który odrzucił żądanie — i to wystarcza, żeby w kilka sekund skierować sprawę do właściwej osoby.
| Rodzina | Obszar | Kto to naprawia |
|---|---|---|
9xxx | podpis i dokument autoryzacyjny | integrator |
211xx | uwierzytelnianie, sesje, pobieranie faktur, eksport | integrator |
212xx | paczka wsadowa i jej części | integrator |
213xx | autoryzacja i tokeny dostępowe | administrator w firmie |
214xx | walidacja dokumentu i danych wejściowych | integrator lub osoba wystawiająca fakturę |
250xx | certyfikaty KSeF | administrator w firmie |
260xx | tokeny KSeF | administrator w firmie |
Zasada praktyczna: wszystko poniżej 214xx to zwykle konfiguracja, a nie faktura. Poprawianie dokumentu przy błędzie uwierzytelnienia to najczęstszy sposób na stracenie godziny.
Statusy HTTP: pierwsze rozgałęzienie
| Status | Znaczenie | Reakcja |
|---|---|---|
| 400 | nieprawidłowe żądanie lub błąd walidacji danych wejściowych | przeczytaj exceptionCode i listę errors w odpowiedzi |
| 401 | brak poprawnego uwierzytelnienia | token, certyfikat, ważność sesji |
| 403 | brak uprawnień albo niedozwolony kontekst | kontekst NIP i zakres uprawnień operacji |
| 410 | operacja wygasła i nie jest już dostępna | rozpocznij proces od nowa |
| 415 | typ operacji niedozwolony dla tego trybu wysyłki | zmień tryb (przykład niżej) |
| 429 | przekroczony limit żądań API | Retry-After, kolejkowanie, backoff — nie ruszaj faktury |
| 5xx | błąd po stronie infrastruktury KSeF | zapisz traceId, ponów zgodnie z procedurą retry |
Uwaga: liczby 410 i 415 pojawiają się także jako statusy przetwarzania faktury w sesji (a nie jako kod HTTP odpowiedzi) — przykład niżej dotyczy właśnie takiego statusu. Najdroższy błąd interpretacyjny w tej tabeli to 429. Przy limitach API łatwo wziąć go za odrzucenie dokumentu i zacząć „poprawiać" poprawną fakturę. Limity są opisane w dokumentacji CIRF/MF.
Najczęstsze kody i co z nimi zrobić
Podpis i dokument autoryzacyjny (9xxx)
| Kod | Komunikat | Reakcja |
|---|---|---|
| 9101 | Nieprawidłowy dokument | sprawdź dokument użyty w procesie podpisu |
| 9102 | Brak podpisu | podpis nie został dołączony do żądania |
| 9103 | Przekroczona liczba dozwolonych podpisów | zweryfikuj liczbę podpisów dla tego typu dokumentu |
Sesje, faktury i eksport (211xx)
| Kod | Komunikat | Reakcja |
|---|---|---|
| 21111 | Nieprawidłowe wyzwanie autoryzacyjne | challenge, szyfrowanie i czas w procesie uwierzytelnienia |
| 21115 | Nieprawidłowy certyfikat | ważność i zgodność certyfikatu z wymaganiami KSeF |
| 21117 | Nieprawidłowy identyfikator podmiotu dla typu kontekstu | NIP nie pasuje do wybranego typu kontekstu |
| 21155 | Przekroczono dozwoloną liczbę faktur w sesji | zamknij sesję i otwórz nową |
| 21157 | Nieprawidłowy rozmiar części pakietu | deklaracja części ≠ rzeczywisty plik |
| 21161 | Przekroczono dozwoloną liczbę części pakietu | przebuduj paczkę wsadową |
| 21164 | Faktura o podanym identyfikatorze nie istnieje | numer KSeF, kontekst podmiotu, uprawnienia do pobrania |
| 21165 | Faktura nie jest jeszcze dostępna | to nie jest błąd — odczekaj i ponów pobranie |
| 21166 | Korekta techniczna niedostępna | prawdopodobnie została już przetworzona |
| 21167 | Status faktury nie pozwala na korektę techniczną | sprawa dla księgowości, nie dla integratora |
| 21173 | Brak sesji o wskazanym numerze referencyjnym | numer referencyjny lub środowisko (test/prod) |
| 21175 | Wynik zapytania nie istnieje | referencja eksportu albo upłynął czas dostępności wyniku |
| 21178 | Nie znaleziono UPO dla podanych kryteriów | UPO powstaje po zamknięciu sesji — ponów później |
| 21180 | Status sesji nie pozwala na operację | sesja zamknięta lub anulowana |
| 21181 | Nieprawidłowe żądanie eksportu faktur | kryteria i kontekst eksportu |
| 21182 | Osiągnięto limit trwających eksportów | ogranicz równoległe eksporty |
| 21183 | Zakres filtrowania poza dostępnym zakresem danych | zakres dat i typ daty |
Paczka wsadowa (212xx)
| Kod | Komunikat | Reakcja |
|---|---|---|
| 21205 | Pakiet nie może być pusty | nie wszystkie zadeklarowane części zostały wysłane |
| 21208 | Przekroczono czas oczekiwania na upload lub finish | sesja mogła zostać anulowana — powtórz proces |
| 21217 | Nieprawidłowe kodowanie znaków | UTF-8, bez znacznika BOM |
Uwierzytelnienie i autoryzacja (213xx)
| Kod | Komunikat | Reakcja |
|---|---|---|
| 21301 | Brak autoryzacji | token unieważniony lub operacja uwierzytelnienia nieukończona |
| 21304 | Brak uwierzytelnienia | operacja o tym numerze referencyjnym nie istnieje w tym środowisku |
| 21308 | Próba wykorzystania metod autoryzacyjnych osoby zmarłej | wymaga zmiany sposobu uwierzytelnienia podmiotu |
Walidacja dokumentu i danych (214xx)
| Kod | Komunikat | Reakcja |
|---|---|---|
| 21401 | Dokument niezgodny ze schemą XSD | najczęstszy błąd „faktury”: struktura FA(3), pola obowiązkowe, kodowanie |
| 21402 | Nieprawidłowy rozmiar pliku | deklarowany rozmiar ≠ rzeczywista długość treści |
| 21403 | Nieprawidłowy skrót pliku | sposób liczenia hasha |
| 21405 | Błąd walidacji danych wejściowych | czytaj szczegóły, nie numer — ten kod sam z siebie nic nie mówi |
| 21406 | Konflikt podpisu i typu uwierzytelnienia | metoda uwierzytelnienia vs. typ certyfikatu |
| 21418 | Nieprawidłowy format tokena kontynuacji | nie modyfikuj ręcznie tokena stronicowania |
| 21470 | Nieznany lub wycofany identyfikator klucza | pobierz aktualny klucz publiczny dla swojego środowiska |
Certyfikaty i tokeny (250xx, 260xx)
| Kod | Komunikat | Reakcja |
|---|---|---|
| 25001 | Brak możliwości pobrania danych do CSR dla tej metody uwierzytelnienia | zmień metodę uwierzytelnienia |
| 25002 | Brak możliwości złożenia wniosku certyfikacyjnego dla tej metody | jw. |
| 25003 | Dane w CSR niezgodne z wektorem uwierzytelniającym | dane podmiotu w CSR |
| 25004 | Niepoprawny format lub podpis CSR | format i algorytm podpisu wniosku |
| 25005 | Wniosek certyfikacyjny nie istnieje | numer referencyjny i środowisko |
| 25006 | Limit składanych wniosków certyfikacyjnych | uporządkuj wnioski |
| 25007 | Limit posiadanych certyfikatów | unieważnij nieużywane |
| 25010 | Nieprawidłowy typ lub długość klucza | wymagania z dokumentacji certyfikatów |
| 25011 | Nieprawidłowy algorytm podpisu CSR | algorytm i funkcja skrótu |
| 26001 | Nie można nadać tokenowi uprawnień, których podmiot nie posiada | najpierw uprawnienia podmiotu |
| 26002 | Nie można wygenerować tokena dla obecnego typu kontekstu | token tylko w dopuszczonym kontekście |
Katalog KSeF 2.0 jest większy niż powyższa lista — źródłem prawdy pozostaje dokumentacja API na api.ksef.mf.gov.pl i przewodnik dla integratorów CIRF/MF.
Ten sam dokument, dwie różne odpowiedzi: przykład z naszego wdrożenia
10 września 2026 na środowisku testowym MF sprawdzaliśmy faktury z załącznikiem. Ta sama faktura, wysłana sesją interaktywną, wracała ze statusem przetwarzania 415 i komunikatem o braku możliwości wysłania faktury z załącznikiem. Ta sama faktura w sesji wsadowej — przyjęta. I ta sama sesja interaktywna przyjmowała ten dokument bez węzła załącznika.
Wniosek jest niewygodny, ale ważny: część komunikatów nie mówi „dokument jest zły", tylko „tego nie robi się tym kanałem". Gdyby ktoś zaczął od poprawiania XML-a, poprawiałby plik, który jest poprawny. Różnice między trybami opisuje dokumentacja sesji wsadowej.
Błąd to nie zawsze brak faktury w systemie
Najdroższe pomyłki dzieją się po drugiej stronie granicy: faktura już ma numer KSeF.
Przyjęcie dokumentu przez bramkę oznacza zgodność ze strukturą logiczną — i tyle. KSeF nie sprawdza poprawności rozliczenia VAT, zasadności transakcji ani arytmetyki. Faktura z błędną stawką przejdzie walidację techniczną bez jednego komunikatu.
Konsekwencja praktyczna: dokumentu, który dostał numer KSeF, nie da się „cofnąć" w systemie sprzedażowym. Zostaje faktura korygująca. Korekta techniczna dotyczy wyłącznie faktury wystawionej w trybie offline, którą KSeF odrzucił — dokumentu z numerem KSeF nią nie poprawisz. To już decyzja księgowa, nie integracyjna, i właśnie dlatego trzeciej warstwy komunikatu (statusu faktury) nie wolno pomijać.
Osobny przypadek to duplikaty. KSeF rozpoznaje je po kombinacji danych sprzedawcy, rodzaju faktury i numeru dokumentu, a unikalność utrzymuje przez lata — ponowna wysyłka „na wszelki wypadek" nie jest neutralna.
Checklista: co zapisać przy każdym błędzie
Status HTTP odpowiedzi.
exceptionCodei pełną treśćexceptionDescription.referenceNumberoperacji (sesji, wniosku, eksportu).traceIdz odpowiedzi.Środowisko: testowe czy produkcyjne.
Status faktury: czy nadano numer KSeF.
Znacznik czasu w UTC — przy limitach i sesjach rozstrzyga sekunda.
Te siedem pól zamienia dyskusję „u nas nie działa" w zgłoszenie, które da się rozpatrzyć. Pełne procedury zgłaszania opisuje strona wsparcia dla integratorów.
Podsumowanie
Kody błędów KSeF wyglądają na temat wyłącznie techniczny, ale rozstrzygają rzeczy księgowe: czy faktura istnieje, czy termin został zachowany, czy potrzebna jest korekta. Trzy warstwy odpowiedzi, mapa rodzin kodów i siedem pól z checklisty wystarczą, żeby przestać zgadywać.
W Biurko 28 najczęstszych kodów tłumaczymy na zdanie po polsku i jedną sugerowaną akcję, pozostałe pokazujemy tekstem Ministerstwa Finansów, a wysyłkę po błędach przejściowych ponawiamy automatycznie (do trzech prób, a po 429 czekamy czas wskazany przez bramkę). Wypróbuj Biurko — nowa firma dostaje 14 dni planu TEAM bez karty i zobacz, jak wygląda wysyłka do KSeF, w której nie trzeba czytać numerów.
FAQ
Co oznacza błąd 21401 w KSeF? Dokument nie jest zgodny ze schemą XSD. W praktyce najczęściej chodzi o strukturę FA(3), niewypełnione pole obowiązkowe albo kodowanie pliku inne niż UTF-8 bez BOM. Numer sam w sobie nie wskazuje pola — wskazuje je komunikat walidatora zwrócony razem z kodem.
Czy błąd 429 oznacza, że faktura została odrzucona? Nie. To przekroczenie limitu zapytań do API i dotyczy wyłącznie integracji. Faktura nie jest błędna. Rozwiązaniem jest odczytanie nagłówka Retry-After, kolejkowanie żądań i wykładniczy backoff, a nie zmiany w dokumencie.
Czy przyjęcie faktury przez KSeF oznacza, że jest poprawna? Nie. System weryfikuje zgodność ze strukturą logiczną i poprawność techniczną pliku. Nie sprawdza poprawności rozliczenia VAT ani arytmetyki. Faktura z błędem merytorycznym może otrzymać numer KSeF i wymagać później korekty.
Gdzie jest oficjalna lista kodów błędów KSeF? Źródłem prawdy jest kontrakt OpenAPI i dokumentacja API 2.0 na api.ksef.mf.gov.pl oraz repozytorium CIRF/MF z przewodnikiem dla integratorów i changelogiem, w którym Ministerstwo publikuje nowe kody.
Co zrobić, gdy faktura ma już numer KSeF, ale zawiera błąd? Nie da się jej usunąć ani nadpisać. Drogą jest faktura korygująca; korekta techniczna dotyczy wyłącznie faktury wystawionej w trybie offline, którą KSeF odrzucił.
Tagi
Poprzedni artykuł
Ile kosztuje księgowa dla JDG i kiedy program się opłaca?
Następny artykuł
Jak minimalne wynagrodzenie w 2027 roku zmieni Twój ZUS?