Was KSeF zurückgibt
In der Spezifikation der KSeF-API 2.9.0 hat der Status 450 einer Rechnung eine feste Beschreibung, «Błąd weryfikacji semantyki dokumentu faktury» (Fehler bei der semantischen Prüfung des Rechnungsdokuments). Was genau fehlerhaft ist, ergänzt KSeF im Feld details desselben Status. Das polnische Finanzministerium veröffentlicht keine Liste dieser Meldungen, es gibt also keine Tabelle nach dem Muster «450 bedeutet immer dieses Problem».
Es gibt aber Fälle, die das Ministerium in den Tests seiner eigenen Bibliothek ksef-client-csharp prüft und bei denen es genau den Code 450 erwartet:
- Ausstellungsdatum
P_1auf morgen nach polnischer Zeit gesetzt, weil KSeFP_1in der Zeitzone Warschau liest und kein Datum akzeptiert, das nach dem Zeitpunkt des Empfangs der Rechnung liegt; DataWytworzeniaFavor 2025-09-01T00:00:00Z, der untere Grenzwert dieses Feldes im Schema FA(3) 1-0E.

Was Sie in Odoo sehen
Rechnungen gelangen über das Odoo-Modul l10n_pl_edi zu KSeF, das in Odoo 18, 19 und 20 vorhanden ist. Antwortet KSeF, setzt es «KSeF Status» auf Rejected und schreibt eine Meldung in den Verlauf der Rechnung:
| Version | Meldung in Odoo |
|---|---|
| Odoo 18 und 19 auf Polnisch | «Status KSeF: Odrzucono (kod: 450). Błąd weryfikacji semantyki dokumentu faktury.» |
| Odoo 20 | «KSeF Status: Rejected (Code: 450). Invoice document semantics verification error.» (die polnische Übersetzung dieses Moduls ist in 20 leer) |
| Odoo 17 | Ohne l10n_pl_edi: Die Rechnung wird von einem anderen Programm gesendet, und dieses zeigt den Fehler an. |
Aus der Antwort von KSeF liest Odoo den Code, die Beschreibung und die KSeF-Nummer. Das Feld details speichert es nicht (es hängt nur die Beschreibung von KSeF für den Code 500 an), daher kann Odoo allein nicht sagen, welcher Teil der Rechnung fehlerhaft war.
Wo Sie den Grund finden
Der Text von details kommt in der Antwort von KSeF auf die Abfrage des Rechnungsstatus. Wenn Sie aus Odoo senden, brauchen Sie jemanden, der ihn über die API ausliest, oder eine Prüfung der FA(3)-Datei vor dem Senden. Odoo 18, 19 und 20 enthalten eine Kopie des Schemas FA(3) im Modul, doch außerhalb der Tests verwendet es niemand: Die Datei geht an KSeF, ohne gegen das Schema validiert zu werden.
Odoo überwacht zwei Dinge. Es sendet keine Rechnung mit einem Datum nach heute in der Zeitzone des Benutzers («The move was skipped because it is future-dated»). Und es füllt DataWytworzeniaFa mit dem Zeitpunkt der Dateierzeugung in UTC, sodass die Grenze von 2025 nicht von einer in Odoo ausgestellten Rechnung stammen sollte.
So senden Sie sie erneut
- Ermitteln Sie den Grund in
detailsoder prüfen Sie die FA(3)-Datei gegen das Schema. - Korrigieren Sie die Daten in Odoo: Datum, Kunde, Positionen.
- Setzen Sie die Rechnung auf Entwurf zurück. Bei einer abgelehnten Rechnung löscht Odoo ihren KSeF-Status, Nummer, Referenz und Sitzung.
- Bestätigen Sie sie und senden Sie sie erneut mit der Option «by KSeF (e-Faktura)». Odoo sendet nur Rechnungen ohne KSeF-Status, ohne Schritt 3 geht also nichts hinaus.

Mit unserem Modul
Poland KSeF 2.0 Validator sendet keine Rechnungen an KSeF. Mit dem Abonnement FlexigoTech Cloud validiert es, wenn Sie vor dem Senden der Rechnung auf «Validate FA(3) (FlexigoTech Cloud)» klicken, die FA(3)-Datei gegen das Schema 1-0E und zeigt jeden Fehler als Zeile «[error] XSD (Pfad)» an: die Stelle in der Datei, ohne den Meldungstext, bis zu 100 Fehler. Das Ergebnis hält den Versand durch l10n_pl_edi nicht auf: Eine Rechnung «Not valid» geht trotzdem hinaus, wenn Sie sie senden. Es erkennt nicht, was KSeF nur auf seiner Seite prüft, etwa P_1 im Vergleich zum Zeitpunkt des Empfangs. Sobald l10n_pl_edi die Rechnung sendet, wird die frühere Validierung zu Expired, und das Modul prüft die Datei, die KSeF tatsächlich erhalten hat. In Odoo 17 validiert es die FA(3)-Datei, die an die Rechnung hochgeladen wurde.
Unser Modul erfasst den Code 450 nicht: Aus l10n_pl_edi übernimmt es nur den Status (Submitted, Accepted oder Rejected) und die KSeF-Nummer.
Weiterlesen
Geprüft im Quellcode des Moduls (Version 17.0 und 20.0) und in den verlinkten Quellen
Quellen
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/open-api.json
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/4d2d4b5895db70596863df941d9a1f0beeb117f8/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/l10n_pl_edi/i18n
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/i18n
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- github.com/CIRFMF/ksef-client-csharp/blob/a66cbc669814e6c2a615748a13a0a04a650ba04f/KSeF.Cl
- github.com/CIRFMF/ksef-client-csharp/blob/a66cbc669814e6c2a615748a13a0a04a650ba04f/KSeF.Cl
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/faktury/schemy/FA
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/faktury/schemy/FA
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/faktury/weryfikac
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/data
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- Quellcode des Moduls: FlexigoTech Cloud, validacion_efactura (motor_xsd.py y reglas.json)
- Quellcode des Moduls: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_cloud.py
- Quellcode des Moduls: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/account_move.py
- Quellcode des Moduls: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 17.0 (2b2a93bb): __manifest__.py
- Quellcode des Moduls: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): views/account_move_views.xml
