Naar hoofdinhoud
KSeF 2.0 · verzenden van de factuur

KSeF-uitzonderingen bij het verzenden van een factuur: 21405, 21180, 21184 en de rest

Deze codes komen meteen binnen, als HTTP 400-antwoord op het verzenden van de factuur, nog voordat KSeF naar de inhoud kijkt. Daarin verschillen ze van statussen zoals 450, die later komen. In Odoo zie je ze samen met het volledige KSeF-antwoord.

FlexigoTech · Verantwoordelijk: Víctor Gómez · Bijgewerkt op 5 november 2026

In het kort

Module
KSeF 2.0
Versies
Odoo 17, 18, 19 en 20
Gecontroleerd
in de broncode van de module, versie 20.0 · in de bronnen onderaan
Leestijd
4 min

Zo zie je ze in Odoo

Wanneer KSeF het verzoek afwijst, toont l10n_pl_edi in Odoo 18, 19 en 20 op de factuur «Error when sending invoices to the KSeF» en eronder «KSeF API Error: » met het antwoord precies zoals het binnenkwam, inclusief exceptionCode. In Odoo 18 en 19 in het Pools: «Podczas wysyłania faktur do KSeF wystąpił błąd» en «Błąd API KSeF: …». Als KSeF al weigert bij het openen van de sessie, begint het bericht met «Failed to open KSeF session: ». De factuur krijgt geen KSeF-status, dus na de correctie verstuur je haar op dezelfde manier als voorheen.

Kaart van uitzondering 21405 van KSeF met de verzendcodes
De code 21405 met zijn beschrijving uit de API en de overige uitzonderingen die het verzenden van een factuur in een interactieve sessie oplevert.

Codes, teksten en wat te doen

CodeTekst van KSeFWat te doen
21405«Błąd walidacji danych wejściowych.» (validatiefout in de invoergegevens), details van de validatorLees de details; het voorbeeld in de documentatie is «Wskazany kod formularza nie jest wspierany.» (formuliercode wordt niet ondersteund).
21001«Nieczytelna treść.» (onleesbare inhoud), details met een beschrijvingKSeF kon het verzoek niet lezen; gedocumenteerd in API 2.9.0 en eerder ook al teruggegeven.
21155«Przekroczono dozwoloną liczbę faktur w sesji.» (te veel facturen in de sessie)Een sessie bevat maximaal 10 000 facturen; er is een nieuwe sessie nodig.
21173«Brak sesji o wskazanym numerze referencyjnym.» (geen sessie met dat referentienummer)KSeF kent de sessie die bij het bedrijf is opgeslagen niet; Odoo vervangt die niet zelf (zie hieronder).
21180«Status sesji nie pozwala na wykonanie operacji.» (de status van de sessie staat de bewerking niet toe), bijv. «Status sesji {code} uniemożliwia wysyłkę faktur.»De sessie is gesloten of verlopen tussen de controle en het verzenden.
21184«Sesja tymczasowo niedostępna.» (sessie tijdelijk niet beschikbaar), met details over onderhoudKSeF raadt aan later opnieuw te proberen of een nieuwe sessie te openen.
21402«Nieprawidłowy rozmiar pliku.» (onjuiste bestandsgrootte)De grootte in het verzoek klopt niet met de inhoud.
21403«Nieprawidłowy skrót pliku.» (onjuiste bestandshash)De SHA-256-hash klopt niet met de inhoud.
21166«Korekta techniczna niedostępna.» (technische correctie niet beschikbaar)Gaat over de technische correctie van een offline factuur.
21167«Status faktury nie pozwala na korektę techniczną.» (de status van de factuur staat geen technische correctie toe)Idem: geen technische correctie voor een factuur die correct is verwerkt.

De sessie in Odoo

Odoo bewaart het nummer van de interactieve sessie op het bedrijf. Vóór het verzenden vraagt het KSeF naar de status van die sessie: is die 100, een open sessie, dan gebruikt het die verder; anders opent het een nieuwe met het formulier FA (3) 1-0E. Daarom verdwijnt 21180 meestal bij de volgende poging. Bij 21173 is het anders: bij het volgende verzenden vraagt Odoo naar dezelfde sessie, krijgt dezelfde fout («Failed to check KSeF session: …») en opent geen nieuwe. De opgeslagen sessie wordt alleen gewist door het KSeF-certificaat in de instellingen te verwijderen en op te slaan, en het certificaat daarna opnieuw toe te voegen. Dit volgt uit de code van Odoo; we hebben het niet tegen KSeF getest. Bij 21184 stelt KSeF een nieuwe sessie voor, maar Odoo opent er pas een wanneer de opgeslagen sessie niet meer status 100 heeft; blijft de fout terugkomen, wacht dan, zoals het bericht adviseert.

De codes 21402 en 21403 hebben te maken met berekeningen die het verzendende programma zelf doet: Odoo berekent de hash en de grootte van de factuur vóór en na de versleuteling. Bij standaard Odoo komen ze niet uit de factuurgegevens. Odoo verstuurt geen technische correcties van offline facturen, dus 21166 en 21167 komen uit een ander programma.

Voordat je het probleem meldt

  • Kopieer het volledige bericht van Odoo, met de JSON na «KSeF API Error:».
  • Noteer de code en de tekst van details.
  • Controleer of de fout één factuur betreft of alle facturen die worden verzonden.
  • Controleer of het in productie of in de testomgeving gebeurt.
Schema: wat KSeF teruggeeft bij uitzondering 21405 en wat Odoo 20 toont
Schema gebaseerd op de code van l10n_pl_edi in Odoo 20 en op de specificatie van de KSeF API 2.9.0; doorgehaald is wat Odoo niet bewaart of niet doet.

Statussen van de sessie zelf: 440 en 445

Ook de interactieve sessie heeft een eigen status. 440 «Sesja anulowana» (sessie geannuleerd) met details «Nie przesłano faktur» betekent dat er in de sessie geen factuur is verzonden, en 445 «Błąd weryfikacji, brak poprawnych faktur» dat geen enkele factuur de verificatie heeft doorstaan. Odoo kijkt alleen of de sessie status 100 heeft, dus die toont het niet; zoek de oorzaak in de statussen van de facturen, zoals 450.

Onze module, Poland KSeF 2.0 Validator, verstuurt geen facturen en ziet deze codes niet; met het abonnement op FlexigoTech Cloud controleert hij, als je vóór het verzenden op «Validate FA(3) (FlexigoTech Cloud)» klikt, het FA(3)-bestand tegen het schema. Dat resultaat houdt l10n_pl_edi niet tegen bij het verzenden: een factuur «Not valid» gaat toch de deur uit als je haar verstuurt.

Lees verder

KSeF-code 450: «Błąd weryfikacji semantyki dokumentu faktury»KSeF-code 450 weigert een FA(3)-factuur na controle van de inhoud. Waar de echte reden zit, wat Odoo 18, 19 en 20 niet tonen en hoe je de factuur opnieuw verstuurt.Technische factuurstatussen in KSeF: 550, 500, 405, 430 en 435KSeF-factuurstatussen die niets met de inhoud te maken hebben: 550, 500, 405, 430 en 435. Wat Odoo ermee doet en waarom de 550 op Sent blijft staan.KSeF HTTP 429, 403 en 401: aanvraaglimieten en geweigerde toegangKSeF 2.0 antwoordt met 429 Too Many Requests bij overschrijding, 403 met een reasonCode bij ontbrekende toegang en 401 bij een verlopen token. Limieten en wat Odoo doet.
Gecontroleerd in de broncode van de module (versie 20.0) en in de gelinkte bronnen

Bronnen