O que devolve o KSeF
Na especificação da API do KSeF 2.9.0, o estado 450 de uma fatura em sessão tem uma descrição fixa, «Błąd weryfikacji semantyki dokumentu faktury» (erro de verificação semântica do documento de fatura). O que falha em concreto é acrescentado pelo KSeF no campo details desse mesmo estado. O Ministério das Finanças polaco não publica a lista dessas mensagens, pelo que não existe uma tabela do género «o 450 é sempre esta falha».
O que existe são casos que o Ministério verifica nos testes da sua própria biblioteca ksef-client-csharp e nos quais espera precisamente o código 450:
- data de emissão
P_1colocada para amanhã segundo a hora polaca, porque o KSeF lêP_1no fuso horário de Varsóvia e não aceita uma data posterior ao momento em que recebe a fatura; DataWytworzeniaFaanterior a 2025-09-01T00:00:00Z, o limite inferior desse campo no esquema FA(3) 1-0E.

O que vê no Odoo
As faturas chegam ao KSeF com o módulo l10n_pl_edi do Odoo, que existe no Odoo 18, 19 e 20. Quando o KSeF responde, põe «KSeF Status» em Rejected e escreve uma mensagem no histórico da fatura:
| Versão | Mensagem no Odoo |
|---|---|
| Odoo 18 e 19 em polaco | «Status KSeF: Odrzucono (kod: 450). Błąd weryfikacji semantyki dokumentu faktury.» |
| Odoo 20 | «KSeF Status: Rejected (Code: 450). Invoice document semantics verification error.» (a tradução polaca deste módulo está vazia na 20) |
| Odoo 17 | Sem l10n_pl_edi: a fatura é enviada por outro programa e é esse que mostra o erro. |
Da resposta do KSeF, o Odoo lê o código, a descrição e o número KSeF. Não guarda o campo details (apenas acrescenta a descrição do KSeF com o código 500), pelo que o Odoo, por si só, não lhe diz que parte da fatura falhou.
Onde obter o motivo
O texto de details vem na resposta do KSeF à consulta do estado da fatura. Se enviar a partir do Odoo, precisa de alguém que o leia da API ou de uma verificação do ficheiro FA(3) antes de o enviar. O Odoo 18, 19 e 20 trazem uma cópia do esquema FA(3) dentro do módulo, mas fora dos testes nada a usa: o ficheiro segue para o KSeF sem ser validado contra o esquema.
Duas coisas o Odoo vigia. Não envia uma fatura com data posterior a hoje no fuso horário do utilizador («The move was skipped because it is future-dated»). E preenche DataWytworzeniaFa com o momento em que gera o ficheiro, em UTC, pelo que o limite de 2025 não deveria vir de uma fatura emitida no Odoo.
Como voltar a enviá-la
- Obtenha o motivo em
detailsou verifique o ficheiro FA(3) contra o esquema. - Corrija os dados no Odoo: data, cliente, linhas.
- Repunha a fatura em rascunho. Numa fatura rejeitada, o Odoo limpa o seu estado, número, referência e sessão do KSeF.
- Confirme-a e envie-a de novo com a opção «by KSeF (e-Faktura)». O Odoo só envia faturas sem estado KSeF, pelo que, sem o passo 3, nada sai.

Com o nosso módulo
O Poland KSeF 2.0 Validator não envia faturas ao KSeF. Com a subscrição do FlexigoTech Cloud, se carregar em «Validate FA(3) (FlexigoTech Cloud)» antes de enviar a fatura, valida o ficheiro FA(3) contra o esquema 1-0E e mostra cada falha como uma linha «[error] XSD (caminho)»: o sítio do ficheiro, sem o texto da mensagem, até 100 falhas. O resultado não trava o envio do l10n_pl_edi: uma fatura «Not valid» sai igualmente se a enviar. Não deteta o que o KSeF só verifica do seu lado, como P_1 face ao momento da receção. Quando o l10n_pl_edi envia a fatura, a validação anterior passa a Expired e o módulo revê o ficheiro que o KSeF recebeu. No Odoo 17 valida o FA(3) carregado para a fatura.
O código 450 não chega ao nosso módulo: do l10n_pl_edi só retira o estado (Submitted, Accepted ou Rejected) e o número KSeF.
Continue a ler
Verificado no código do módulo (versão 17.0 e 20.0) e nas fontes indicadas
Fontes
- 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
- Código do módulo: FlexigoTech Cloud, validacion_efactura (motor_xsd.py y reglas.json)
- Código do módulo: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_cloud.py
- Código do módulo: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/account_move.py
- Código do módulo: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 17.0 (2b2a93bb): __manifest__.py
- Código do módulo: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): views/account_move_views.xml
