Saltar para o conteúdo principal
KSeF 2.0 · autenticação

Início de sessão no KSeF com certificado: código 460 e erros de assinatura XAdES

O Odoo 18, 19 e 20 ligam-se ao KSeF apenas com um certificado KSeF: assinam um desafio com assinatura XAdES e enviam-no para POST /auth/xades-signature. Se algo falhar no certificado ou na assinatura, o KSeF responde com um dos onze códigos desta página, mas o Odoo costuma mostrar pouco deles.

FlexigoTech · Responsável: Víctor Gómez · Atualizado em 5 de novembro de 2026

O essencial

Módulo
KSeF 2.0
Versões
Odoo 17, 18, 19 e 20
Verificado
no código do módulo, versão 20.0 · nas fontes indicadas no fim
Leitura
3 min

Quando o Odoo inicia sessão

O Odoo autentica-se em dois momentos: quando guarda o certificado KSeF com a sua chave privada nas definições, e na ação agendada «Refresh KSeF tokens», que repete o início de sessão completo a cada 6 dias. O contexto é o NIP da empresa, por isso o NIF da empresa tem de começar por PL. O desafio (challenge) do KSeF é válido durante 10 minutos.

Cartão do código 460 do KSeF com as exceções da assinatura XAdES
O código 460 e as dez exceções que devolve POST /auth/xades-signature.

Os códigos e os seus textos

CódigoTexto do KSeF
9101«Nieprawidłowy dokument.» (documento inválido)
9102«Brak podpisu.» (falta a assinatura)
9103«Przekroczona liczba dozwolonych podpisów.» (demasiadas assinaturas)
9105«Nieprawidłowy podpis.» (assinatura inválida)
21111«Nieprawidłowe wyzwanie autoryzacyjne.» (desafio de autorização inválido)
21115«Nieprawidłowy certyfikat.» (certificado inválido)
21117«Nieprawidłowy identyfikator podmiotu dla wskazanego typu kontekstu.» (identificador de entidade inválido para o tipo de contexto indicado)
21217«Nieprawidłowe kodowanie znaków.» (codificação de caracteres inválida)
21401«Dokument nie jest zgodny ze schemą (xsd).» Aqui trata-se do XML de início de sessão, não da fatura.
21406«Konflikt podpisu i typu uwierzytelnienia.» (conflito entre a assinatura e o tipo de autenticação)
460«Uwierzytelnianie zakończone niepowodzeniem z powodu błędu certyfikatu», com details: «Nieważny certyfikat», «Błąd weryfikacji łańcucha certyfikatów», «Niezaufany łańcuch certyfikatów», «Certyfikat odwołany», «Certyfikat zawieszony» ou «Niepoprawny certyfikat» (caducado, erro na cadeia, cadeia não fiável, revogado, suspenso, incorreto).

Os dez primeiros chegam de imediato, como resposta HTTP 400 à assinatura. O estado 460 chega depois, ao consultar o estado do início de sessão. Atenção à própria especificação: os exemplos desse pedido indicam, pelos mesmos motivos, o código 400 com a descrição «Uwierzytelnianie zakończone niepowodzeniem», enquanto a sua tabela de estados indica 460. Importa mais o texto de details do que o número.

O que o Odoo não mostra

Se a assinatura falhar, o Odoo escreve «Failed to authenticate with XAdES:» seguido do texto da exceção da biblioteca requests, do tipo «400 Client Error: Bad Request for url: …/auth/xades-signature». O código da tabela não chega ao ecrã: o Odoo só aproveita o corpo da resposta quando o objeto de resposta é «verdadeiro», e no requests uma resposta com código de 400 a 599 é falsa. O mesmo acontece ao pedir o desafio, ao consultar o estado e ao trocar os tokens.

Com o estado 460, o Odoo escreve «KSeF Authentication failed with status 460: …» com a descrição e sem os details (em polaco na 18 e na 19: «Uwierzytelnianie KSeF nie powiodło się z kodem błędu 460: …»).

Se a renovação a cada 6 dias falhar, deixa apenas rasto no registo do servidor. O token de atualização do KSeF dura até 7 dias; depois, o envio termina com «Failed to refresh KSeF access token. You may need to re-authenticate manually.».

A lista de credenciais do nosso módulo

Lista de credenciais KSeF do módulo, com duas linhas a laranja
Captura com dados de demonstração: duas entradas aparecem a laranja porque caducam em menos de 30 dias.

O Poland KSeF 2.0 Validator tem em KSeF › Configuration › Credentials uma lista de certificados KSeF, tokens, selos e assinaturas qualificadas com os dias que lhes restam: a laranja com 30 dias ou menos e a vermelho quando já caducados. A data de caducidade é escrita por quem regista a entrada. O módulo não lê o certificado das definições do Odoo nem o seu estado no KSeF, por isso não assinalará um certificado revogado ou suspenso.

O que fazer

  1. Verifique nas definições que o registo escolhido é um certificado KSeF com a sua chave privada.
  2. Reveja as datas de validade e se o certificado foi revogado ou suspenso no KSeF.
  3. Confirme que o NIF da empresa começa por PL e é o NIP para o qual o certificado foi emitido.
  4. Volte a guardar o certificado nas definições. Se o erro voltar e o Odoo só mostrar «400 Client Error», peça que se leia a resposta do KSeF com o seu código.

Continue a ler

Estados de autenticação do KSeF: 415, 425, 450, 470 e 480Estados do início de sessão no KSeF 2.0 além do certificado: sem permissões, revogado, token errado, bloqueio. Códigos 21301 e 21304 e como aparecem no Odoo.Códigos 410 e 415 do KSeF: permissões do vendedor e anexosO 410 «Nieprawidłowy zakres uprawnień» e o 415 em faturas com anexo: o que os causa nos testes do Ministério e o que rever no Odoo 18, 19 e 20.KSeF HTTP 429, 403 e 401: limites de pedidos e acesso negadoKSeF 2.0 responde 429 Too Many Requests ao ultrapassar o limite, 403 com reasonCode sem acesso e 401 com o token expirado. Limites e o que fazem Odoo 18, 19 e 20.
Verificado no código do módulo (versão 20.0) e nas fontes indicadas

Fontes