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.

8 min czytania 226 wyświetleń
Jak interpretować kody błędów KSeF w Twojej firmie?

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:

  1. Status HTTP — czy żądanie w ogóle zostało przyjęte przez bramkę.

  2. exceptionCode i exceptionDescription — konkretna przyczyna po stronie KSeF.

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

RodzinaObszarKto to naprawia
9xxxpodpis i dokument autoryzacyjnyintegrator
211xxuwierzytelnianie, sesje, pobieranie faktur, eksportintegrator
212xxpaczka wsadowa i jej częściintegrator
213xxautoryzacja i tokeny dostępoweadministrator w firmie
214xxwalidacja dokumentu i danych wejściowychintegrator lub osoba wystawiająca fakturę
250xxcertyfikaty KSeFadministrator w firmie
260xxtokeny KSeFadministrator 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

StatusZnaczenieReakcja
400nieprawidłowe żądanie lub błąd walidacji danych wejściowychprzeczytaj exceptionCode i listę errors w odpowiedzi
401brak poprawnego uwierzytelnieniatoken, certyfikat, ważność sesji
403brak uprawnień albo niedozwolony kontekstkontekst NIP i zakres uprawnień operacji
410operacja wygasła i nie jest już dostępnarozpocznij proces od nowa
415typ operacji niedozwolony dla tego trybu wysyłkizmień tryb (przykład niżej)
429przekroczony limit żądań APIRetry-After, kolejkowanie, backoff — nie ruszaj faktury
5xxbłąd po stronie infrastruktury KSeFzapisz 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)

KodKomunikatReakcja
9101Nieprawidłowy dokumentsprawdź dokument użyty w procesie podpisu
9102Brak podpisupodpis nie został dołączony do żądania
9103Przekroczona liczba dozwolonych podpisówzweryfikuj liczbę podpisów dla tego typu dokumentu

Sesje, faktury i eksport (211xx)

KodKomunikatReakcja
21111Nieprawidłowe wyzwanie autoryzacyjnechallenge, szyfrowanie i czas w procesie uwierzytelnienia
21115Nieprawidłowy certyfikatważność i zgodność certyfikatu z wymaganiami KSeF
21117Nieprawidłowy identyfikator podmiotu dla typu kontekstuNIP nie pasuje do wybranego typu kontekstu
21155Przekroczono dozwoloną liczbę faktur w sesjizamknij sesję i otwórz nową
21157Nieprawidłowy rozmiar części pakietudeklaracja części ≠ rzeczywisty plik
21161Przekroczono dozwoloną liczbę części pakietuprzebuduj paczkę wsadową
21164Faktura o podanym identyfikatorze nie istniejenumer KSeF, kontekst podmiotu, uprawnienia do pobrania
21165Faktura nie jest jeszcze dostępnato nie jest błąd — odczekaj i ponów pobranie
21166Korekta techniczna niedostępnaprawdopodobnie została już przetworzona
21167Status faktury nie pozwala na korektę technicznąsprawa dla księgowości, nie dla integratora
21173Brak sesji o wskazanym numerze referencyjnymnumer referencyjny lub środowisko (test/prod)
21175Wynik zapytania nie istniejereferencja eksportu albo upłynął czas dostępności wyniku
21178Nie znaleziono UPO dla podanych kryteriówUPO powstaje po zamknięciu sesji — ponów później
21180Status sesji nie pozwala na operacjęsesja zamknięta lub anulowana
21181Nieprawidłowe żądanie eksportu fakturkryteria i kontekst eksportu
21182Osiągnięto limit trwających eksportówogranicz równoległe eksporty
21183Zakres filtrowania poza dostępnym zakresem danychzakres dat i typ daty

Paczka wsadowa (212xx)

KodKomunikatReakcja
21205Pakiet nie może być pustynie wszystkie zadeklarowane części zostały wysłane
21208Przekroczono czas oczekiwania na upload lub finishsesja mogła zostać anulowana — powtórz proces
21217Nieprawidłowe kodowanie znakówUTF-8, bez znacznika BOM

Uwierzytelnienie i autoryzacja (213xx)

KodKomunikatReakcja
21301Brak autoryzacjitoken unieważniony lub operacja uwierzytelnienia nieukończona
21304Brak uwierzytelnieniaoperacja o tym numerze referencyjnym nie istnieje w tym środowisku
21308Próba wykorzystania metod autoryzacyjnych osoby zmarłejwymaga zmiany sposobu uwierzytelnienia podmiotu

Walidacja dokumentu i danych (214xx)

KodKomunikatReakcja
21401Dokument niezgodny ze schemą XSDnajczęstszy błąd „faktury”: struktura FA(3), pola obowiązkowe, kodowanie
21402Nieprawidłowy rozmiar plikudeklarowany rozmiar ≠ rzeczywista długość treści
21403Nieprawidłowy skrót plikusposób liczenia hasha
21405Błąd walidacji danych wejściowychczytaj szczegóły, nie numer — ten kod sam z siebie nic nie mówi
21406Konflikt podpisu i typu uwierzytelnieniametoda uwierzytelnienia vs. typ certyfikatu
21418Nieprawidłowy format tokena kontynuacjinie modyfikuj ręcznie tokena stronicowania
21470Nieznany lub wycofany identyfikator kluczapobierz aktualny klucz publiczny dla swojego środowiska

Certyfikaty i tokeny (250xx, 260xx)

KodKomunikatReakcja
25001Brak możliwości pobrania danych do CSR dla tej metody uwierzytelnieniazmień metodę uwierzytelnienia
25002Brak możliwości złożenia wniosku certyfikacyjnego dla tej metodyjw.
25003Dane w CSR niezgodne z wektorem uwierzytelniającymdane podmiotu w CSR
25004Niepoprawny format lub podpis CSRformat i algorytm podpisu wniosku
25005Wniosek certyfikacyjny nie istniejenumer referencyjny i środowisko
25006Limit składanych wniosków certyfikacyjnychuporządkuj wnioski
25007Limit posiadanych certyfikatówunieważnij nieużywane
25010Nieprawidłowy typ lub długość kluczawymagania z dokumentacji certyfikatów
25011Nieprawidłowy algorytm podpisu CSRalgorytm i funkcja skrótu
26001Nie można nadać tokenowi uprawnień, których podmiot nie posiadanajpierw uprawnienia podmiotu
26002Nie można wygenerować tokena dla obecnego typu kontekstutoken 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

  1. Status HTTP odpowiedzi.

  2. exceptionCode i pełną treść exceptionDescription.

  3. referenceNumber operacji (sesji, wniosku, eksportu).

  4. traceId z odpowiedzi.

  5. Środowisko: testowe czy produkcyjne.

  6. Status faktury: czy nadano numer KSeF.

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

#KSeF
Udostępnij

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?

Bądź na bieżąco

Otrzymuj powiadomienia o nowych artykułach — bez newslettera, rezygnacja w każdej chwili.

Szanujemy Twoją prywatność. Możesz zrezygnować w dowolnym momencie.

Pliki cookies

Używamy tylko niezbędnych plików cookies. Statystykę odwiedzin prowadzimy na serwerze, niczego nie zapisując w Twoim urządzeniu. Polityka witryny