Przejdź do głównej treści
KSeF 2.0 · wysyłka faktury

Wyjątki KSeF przy wysyłce faktury: 21405, 21180, 21184 i reszta

Te kody przychodzą od razu, jako odpowiedź HTTP 400 na wysłanie faktury, zanim KSeF w ogóle zajmie się jej treścią. Tym różnią się od statusów takich jak 450, które dostajesz później. W Odoo widzisz je razem z pełną treścią odpowiedzi KSeF.

FlexigoTech · Odpowiada: Víctor Gómez · Aktualizacja: 5 listopada 2026

Najważniejsze

Moduł
KSeF 2.0
Wersje
Odoo 17, 18, 19 i 20
Sprawdzone
w kodzie źródłowym modułu, wersja 20.0 · w źródłach podanych na końcu
Czas czytania
3 min

Jak je zobaczyć w Odoo

Gdy KSeF odrzuci zapytanie, l10n_pl_edi w Odoo 18, 19 i 20 pokazuje przy fakturze „Error when sending invoices to the KSeF”, a pod spodem „KSeF API Error: ” i treść odpowiedzi tak, jak przyszła, razem z exceptionCode. W 18 i 19 po polsku: „Podczas wysyłania faktur do KSeF wystąpił błąd” i „Błąd API KSeF: …”. Jeśli KSeF odmówi już przy otwieraniu sesji, komunikat zaczyna się od „Failed to open KSeF session: ” („Nie udało się otworzyć sesji KSeF: ”). Faktura nie dostaje stanu KSeF, więc po poprawce wyślesz ją tak samo jak wcześniej.

Karta wyjątku 21405 KSeF i kodów wysyłki
Kod 21405 z opisem z API i pozostałe wyjątki, które zwraca wysyłka faktury w sesji interaktywnej.

Kody, ich teksty i co zrobić

KodTekst KSeFCo zrobić
21405„Błąd walidacji danych wejściowych.”, details z walidatoraPrzeczytaj details; przykład z dokumentacji to „Wskazany kod formularza nie jest wspierany.”.
21001„Nieczytelna treść.”, details ze szczegółowym opisemKSeF nie mógł odczytać zapytania; opisany w API 2.9.0, zwracany także wcześniej.
21155„Przekroczono dozwoloną liczbę faktur w sesji.”W jednej sesji mieści się do 10 000 faktur; potrzebna nowa sesja.
21173„Brak sesji o wskazanym numerze referencyjnym.”KSeF nie zna sesji zapisanej w firmie; Odoo sam jej nie zmieni (niżej).
21180„Status sesji nie pozwala na wykonanie operacji.”, np. „Status sesji {code} uniemożliwia wysyłkę faktur.”Sesja została zamknięta albo wygasła między sprawdzeniem a wysyłką.
21184„Sesja tymczasowo niedostępna.”, z details o pracach serwisowychKSeF radzi spróbować później albo otworzyć nową sesję.
21402„Nieprawidłowy rozmiar pliku.”Rozmiar w zapytaniu nie zgadza się z treścią.
21403„Nieprawidłowy skrót pliku.”Skrót SHA-256 nie zgadza się z treścią.
21166„Korekta techniczna niedostępna.”Dotyczy korekty technicznej faktury offline.
21167„Status faktury nie pozwala na korektę techniczną.”Jak wyżej: korekty technicznej nie wysyła się do faktury przetworzonej poprawnie.

Sesja w Odoo

Odoo trzyma numer sesji interaktywnej w danych firmy. Przed wysyłką pyta KSeF o jej stan: jeśli to 100, czyli sesja otwarta, używa jej dalej, a w przeciwnym razie otwiera nową z formularzem FA (3) 1-0E. Kod 21180 zwykle więc mija przy kolejnej próbie. Z 21173 jest inaczej: przy następnej wysyłce Odoo pyta o stan tej samej sesji, dostaje ten sam błąd („Failed to check KSeF session: …”) i nowej sesji nie otwiera. Zapisaną sesję czyści dopiero usunięcie certyfikatu KSeF w ustawieniach i zapisanie, a potem ponowne dodanie certyfikatu. Tak wynika z kodu Odoo; nie sprawdzaliśmy tego na KSeF. Przy 21184 KSeF podpowiada nową sesję, ale Odoo otworzy ją dopiero wtedy, gdy zapisana nie będzie już miała statusu 100; jeśli błąd się powtarza, odczekaj, jak radzi komunikat.

Kody 21402 i 21403 dotyczą obliczeń, które robi sam program wysyłający: Odoo liczy skrót i rozmiar faktury przed i po zaszyfrowaniu. Przy standardowym Odoo nie wynikają z danych faktury. Korekty technicznej faktury offline Odoo nie wysyła, więc 21166 i 21167 pochodzą z innego programu.

Zanim zgłosisz problem

  • Skopiuj pełny komunikat z Odoo, razem z JSON od „KSeF API Error:”.
  • Zanotuj kod i treść details.
  • Sprawdź, czy błąd dotyczy jednej faktury, czy wszystkich wysyłanych w tej chwili.
  • Sprawdź, czy chodzi o środowisko produkcyjne, czy testowe.
Schemat: co zwraca KSeF przy wyjątku 21405 i co pokazuje Odoo 20
Schemat na podstawie kodu l10n_pl_edi z Odoo 20 i specyfikacji API KSeF 2.9.0; skreślone jest to, czego Odoo nie zapisuje albo nie robi.

Statusy samej sesji: 440 i 445

Sesja interaktywna też ma swój status. 440 „Sesja anulowana” z details „Nie przesłano faktur” znaczy, że w sesji nie wysłano żadnej faktury, a 445 „Błąd weryfikacji, brak poprawnych faktur”, że żadna faktura nie przeszła weryfikacji. Odoo sprawdza tylko, czy sesja ma status 100, więc tych statusów nie pokaże; przyczyny szukaj w statusach faktur, na przykład 450.

Nasz moduł, Poland KSeF 2.0 Validator, nie wysyła faktur i nie widzi tych kodów; z subskrypcją FlexigoTech Cloud, jeśli przed wysyłką klikniesz „Validate FA(3) (FlexigoTech Cloud)”, sprawdzi plik FA(3) ze schematem. Ten wynik nie blokuje wysyłki przez l10n_pl_edi: faktura „Not valid” wyjdzie, jeśli ją wyślesz.

Czytaj dalej

Kod 450 w KSeF: „Błąd weryfikacji semantyki dokumentu faktury”Kod 450 oznacza, że KSeF odrzucił fakturę FA(3) po sprawdzeniu treści. Gdzie jest prawdziwa przyczyna, czego nie pokazuje Odoo 18, 19 i 20 i jak wysłać fakturę ponownie.Statusy techniczne faktury w KSeF: 550, 500, 405, 430 i 435Statusy faktury KSeF niezależne od jej treści: 550 „Operacja została anulowana przez system”, 500, 405, 430 i 435. Co robi z nimi Odoo i czemu 550 zostaje w Sent.KSeF HTTP 429, 403 i 401: limity zapytań i odmowa dostępuKSeF 2.0: 429 Too Many Requests po przekroczeniu limitu, 403 z reasonCode przy braku dostępu, 401 przy wygasłym tokenie. Limity i co robi Odoo 18, 19 i 20.
Sprawdzone w kodzie źródłowym modułu (wersja 20.0) i w podlinkowanych źródłach

Źródła