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.

Kody, ich teksty i co zrobić
| Kod | Tekst KSeF | Co zrobić |
|---|---|---|
| 21405 | „Błąd walidacji danych wejściowych.”, details z walidatora | Przeczytaj details; przykład z dokumentacji to „Wskazany kod formularza nie jest wspierany.”. |
| 21001 | „Nieczytelna treść.”, details ze szczegółowym opisem | KSeF 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 serwisowych | KSeF 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.

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
Sprawdzone w kodzie źródłowym modułu (wersja 20.0) i w podlinkowanych źródłach
Źródła
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/tool
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/open-api.json
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/api-changelog.md#
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/api-changelog.md#
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/faktury/weryfikac
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/faktury/weryfikac
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/api-changelog.md
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/tool
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/tool
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/tool
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/l10n_pl_edi/i18n
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- Kod modułu: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): views/account_move_views.xml
