Aller au contenu principal
KSeF 2.0 · authentification

Connexion à KSeF par certificat : code 460 et erreurs de signature XAdES

Odoo 18, 19 et 20 se connectent à KSeF uniquement avec un certificat KSeF : ils signent un défi avec une signature XAdES et l'envoient à POST /auth/xades-signature. Si quelque chose ne va pas avec le certificat ou la signature, KSeF répond avec l'un des onze codes de cette page, mais Odoo en montre généralement peu.

FlexigoTech · Responsable : Víctor Gómez · Mis à jour le 5 novembre 2026

L'essentiel

Module
KSeF 2.0
Versions
Odoo 17, 18, 19 et 20
Vérifié
dans le code du module, version 20.0 · dans les sources citées à la fin
Lecture
4 min

Quand Odoo se connecte

Odoo s'authentifie à deux moments : lorsque vous enregistrez le certificat KSeF avec sa clé privée dans les paramètres, et dans l'action planifiée « Refresh KSeF tokens », qui répète la connexion complète tous les 6 jours. Le contexte est le NIP de l'entreprise, donc le numéro de TVA de l'entreprise doit commencer par PL. Le défi (challenge) de KSeF est valable 10 minutes.

Fiche du code 460 de KSeF avec les exceptions de la signature XAdES
Le code 460 et les dix exceptions renvoyées par POST /auth/xades-signature.

Les codes et leurs textes

CodeTexte de KSeF
9101« Nieprawidłowy dokument. » (document non valide)
9102« Brak podpisu. » (signature absente)
9103« Przekroczona liczba dozwolonych podpisów. » (trop de signatures)
9105« Nieprawidłowy podpis. » (signature non valide)
21111« Nieprawidłowe wyzwanie autoryzacyjne. » (défi d'autorisation non valide)
21115« Nieprawidłowy certyfikat. » (certificat non valide)
21117« Nieprawidłowy identyfikator podmiotu dla wskazanego typu kontekstu. » (identifiant de sujet non valide pour le type de contexte indiqué)
21217« Nieprawidłowe kodowanie znaków. » (encodage de caractères non valide)
21401« Dokument nie jest zgodny ze schemą (xsd). » Il s'agit ici du XML de connexion, et non de la facture.
21406« Konflikt podpisu i typu uwierzytelnienia. » (conflit entre la signature et le type d'authentification)
460« Uwierzytelnianie zakończone niepowodzeniem z powodu błędu certyfikatu », avec details : « Nieważny certyfikat », « Błąd weryfikacji łańcucha certyfikatów », « Niezaufany łańcuch certyfikatów », « Certyfikat odwołany », « Certyfikat zawieszony » ou « Niepoprawny certyfikat » (expiré, erreur de chaîne, chaîne non fiable, révoqué, suspendu, incorrect).

Les dix premiers arrivent immédiatement, sous forme de réponse HTTP 400 à la signature. Le statut 460 arrive plus tard, lorsqu'on consulte le statut de la connexion. Attention à la spécification elle-même : les exemples de cette requête donnent, pour les mêmes motifs, le code 400 avec la description « Uwierzytelnianie zakończone niepowodzeniem », alors que son tableau des statuts donne 460. Le texte de details compte davantage que le numéro.

Ce qu'Odoo n'affiche pas

Si la signature échoue, Odoo écrit « Failed to authenticate with XAdES: » suivi du texte de l'exception de la bibliothèque requests, du type « 400 Client Error: Bad Request for url: …/auth/xades-signature ». Le code du tableau n'arrive jamais à l'écran : Odoo ne prend le corps de la réponse que lorsque l'objet réponse est « vrai », et dans requests une réponse avec un code de 400 à 599 est fausse. Il en va de même lors de la demande du défi, de la consultation du statut et de l'échange des tokens.

Avec le statut 460, Odoo écrit « KSeF Authentication failed with status 460: … » avec la description et sans les details (en polonais dans les versions 18 et 19 : « Uwierzytelnianie KSeF nie powiodło się z kodem błędu 460: … »).

Si le renouvellement tous les 6 jours échoue, il ne laisse de trace que dans le journal du serveur. Le token de rafraîchissement de KSeF dure jusqu'à 7 jours ; ensuite, l'envoi se termine par « Failed to refresh KSeF access token. You may need to re-authenticate manually. ».

La liste des identifiants de notre module

Liste des identifiants KSeF du module, avec deux lignes en orange
Capture avec des données de démonstration : deux entrées apparaissent en orange car elles expirent dans moins de 30 jours.

Poland KSeF 2.0 Validator dispose, dans KSeF › Configuration › Credentials, d'une liste de certificats KSeF, de tokens, de cachets et de signatures qualifiées avec le nombre de jours restants : en orange à 30 jours ou moins, et en rouge une fois expirés. La date d'expiration est saisie par la personne qui crée l'entrée. Le module ne lit ni le certificat des paramètres d'Odoo ni son état dans KSeF, il ne signalera donc pas un certificat révoqué ou suspendu.

Que faire

  1. Vérifiez dans les paramètres que l'enregistrement choisi est un certificat KSeF avec sa clé privée.
  2. Contrôlez les dates de validité et si le certificat a été révoqué ou suspendu dans KSeF.
  3. Vérifiez que le numéro de TVA de l'entreprise commence par PL et correspond au NIP pour lequel le certificat a été émis.
  4. Enregistrez à nouveau le certificat dans les paramètres. Si l'erreur revient et qu'Odoo n'affiche que « 400 Client Error », demandez qu'on lise la réponse de KSeF avec son code.

À lire aussi

États d'authentification KSeF : 415, 425, 450, 470 et 480États de connexion KSeF 2.0 hors certificat : droits absents, session révoquée, jeton erroné, blocage. Codes 21301 et 21304 et leur affichage dans Odoo.Codes 410 et 415 de KSeF : autorisations du vendeur et pièces jointesLe 410 et le 415 de KSeF : ce qui les déclenche dans les tests du ministère et quoi vérifier dans Odoo 18, 19 et 20.KSeF HTTP 429, 403 et 401 : limites de requêtes et accès refuséKSeF renvoie 429 Too Many Requests au dépassement, 403 avec un reasonCode si l'accès manque et 401 si le jeton a expiré. Limites et réactions d'Odoo.
Vérifié dans le code du module (version 20.0) et dans les sources citées

Sources