Què retorna KSeF
En l'especificació de l'API de KSeF 2.9.0, l'estat 450 d'una factura en sessió té una descripció fixa, «Błąd weryfikacji semantyki dokumentu faktury» (error de verificació semàntica del document de factura). El que falla en concret l'afegeix KSeF al camp details d'aquest mateix estat. El Ministeri de Finances polonès no publica la llista d'aquests missatges, de manera que no existeix una taula del tipus «450 és sempre aquest fallo».
Sí que hi ha casos que el Ministeri comprova a les proves de la seva pròpia biblioteca ksef-client-csharp i en què espera precisament el codi 450:
- data d'emissió
P_1posada a demà segons l'hora polonesa, perquè KSeF llegeixP_1a la zona horària de Varsòvia i no admet una data posterior al moment en què rep la factura; DataWytworzeniaFaanterior a 2025-09-01T00:00:00Z, el límit inferior d'aquest camp a l'esquema FA(3) 1-0E.

Què veus a Odoo
Les factures arriben a KSeF amb el mòdul l10n_pl_edi d'Odoo, que existeix a Odoo 18, 19 i 20. Quan KSeF respon, posa «KSeF Status» en Rejected i escriu un missatge a l'historial de la factura:
| Versió | Missatge a Odoo |
|---|---|
| Odoo 18 i 19 en polonès | «Status KSeF: Odrzucono (kod: 450). Błąd weryfikacji semantyki dokumentu faktury.» |
| Odoo 20 | «KSeF Status: Rejected (Code: 450). Invoice document semantics verification error.» (la traducció polonesa d'aquest mòdul és buida a la 20) |
| Odoo 17 | Sense l10n_pl_edi: la factura l'envia un altre programa i és ell qui mostra l'error. |
De la resposta de KSeF, Odoo llegeix el codi, la descripció i el número KSeF. No guarda el camp details (només afegeix la descripció de KSeF amb el codi 500), de manera que Odoo per si sol no et diu quina part de la factura ha fallat.
D'on treure el motiu
El text de details arriba a la resposta de KSeF a la consulta de l'estat de la factura. Si envies des d'Odoo, necessites algú que el llegeixi de l'API o una comprovació del fitxer FA(3) abans d'enviar-lo. Odoo 18, 19 i 20 porten una còpia de l'esquema FA(3) dins del mòdul, però fora de les proves res no l'utilitza: el fitxer va a KSeF sense validar-se contra l'esquema.
Dues coses sí que vigila Odoo. No envia una factura amb data posterior a avui a la zona horària de l'usuari («The move was skipped because it is future-dated»). I omple DataWytworzeniaFa amb el moment en què genera el fitxer, en UTC, de manera que el límit de 2025 no hauria de sortir d'una factura emesa a Odoo.
Com tornar-la a enviar
- Treu el motiu de
detailso revisa el fitxer FA(3) contra l'esquema. - Corregeix les dades a Odoo: data, client, línies.
- Restableix la factura a esborrany. En una factura rebutjada, Odoo esborra el seu estat, número, referència i sessió de KSeF.
- Confirma-la i envia-la de nou amb l'opció «by KSeF (e-Faktura)». Odoo només envia factures sense estat KSeF, així que sense el pas 3 no surt res.

Amb el nostre mòdul
Poland KSeF 2.0 Validator no envia factures a KSeF. Amb la subscripció a FlexigoTech Cloud, si prems «Validate FA(3) (FlexigoTech Cloud)» abans d'enviar la factura, valida el fitxer FA(3) contra l'esquema 1-0E i mostra cada error com una línia «[error] XSD (ruta)»: el lloc del fitxer, sense el text del missatge, fins a 100 errors. El resultat no atura l'enviament de l10n_pl_edi: una factura «Not valid» surt igualment si l'envies. No detecta el que KSeF només comprova pel seu costat, com P_1 davant del moment de recepció. Quan l10n_pl_edi envia la factura, la validació anterior passa a Expired i el mòdul revisa el fitxer que va rebre KSeF. A Odoo 17 valida el FA(3) que es puja a la factura.
El codi 450 no arriba al nostre mòdul: de l10n_pl_edi només pren l'estat (Submitted, Accepted o Rejected) i el número KSeF.
Continua llegint
Comprovat al codi del mòdul (versió 17.0 i 20.0) i a les fonts enllaçades
Fonts
- 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
- Codi del mòdul: FlexigoTech Cloud, validacion_efactura (motor_xsd.py y reglas.json)
- Codi del mòdul: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_cloud.py
- Codi del mòdul: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/account_move.py
- Codi del mòdul: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 17.0 (2b2a93bb): __manifest__.py
- Codi del mòdul: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): views/account_move_views.xml
