Une facture envoyée à une plateforme agréée (PA, ex-PDP) revient avec un statut de rejet. Le message d'erreur est laconique, le client attend, et vous n'avez pas envie de passer la journée à tâtonner. Voici une méthode de diagnostic structurée pour identifier la cause exacte et corriger en une itération.

🔎 Validez vos fichiers Factur-X avant envoi avec le testeur en ligne — /sdk/FactureX/, aucune donnée conservée.


1. Pourquoi une PA rejette : les couches de contrôle

Une PA n'effectue pas un seul contrôle monolithique. Elle opère en couches successives, et le rejet peut survenir à n'importe laquelle d'entre elles.

Couche Ce qui est vérifié
Présence / format du fichier Le fichier est-il bien un PDF, sa taille est-elle dans les limites, le Content-Type est-il correct ?
Conformité PDF/A-3 Le PDF embarque-t-il correctement un flux XML en pièce jointe (AFRelationship: Data) ? L'en-tête ICC est-il valide ?
Validité XSD (CII) Le XML Cross Industry Invoice respecte-t-il le schéma XSD UN/CEFACT ?
Règles métier EN 16931 Les règles Schematron (BR-*) sont-elles satisfaites ? Montants cohérents, codes TVA valides, dates logiques ?
Données fiscales et annuaire SIREN/SIRET connus, numéro de TVA valide, destinataire référencé dans l'annuaire central ?
Règles propres à la PA Profil accepté (MINIMUM, EN 16931…), format de l'identifiant destinataire, doublon de numéro, cohérence du cycle de vie ?

La règle d'or : un fichier peut être parfaitement valide au regard d'EN 16931 et être quand même rejeté par la PA pour une raison purement d'acheminement ou d'annuaire. Ces deux niveaux de contrôle sont indépendants — ne pas les confondre dans le diagnostic.


2. Méthode de debug pas à pas

a) Valider le fichier hors PA en premier

Avant même de lire le message d'erreur de la PA, isolez la question : le fichier est-il lui-même valide ?

Utilisez des validateurs indépendants :

  • Le testeur Factur-X de SynapxLab (/sdk/FactureX/) — extraction XML, contrôle XSD, Schematron EN 16931.
  • Le validateur FNFE-MPE — référence francophone, couvre les profils MINIMUM à EXTENDED.

Si le validateur indépendant remonte des erreurs, corrigez-les d'abord. Inutile d'envoyer à la PA un fichier déjà structurellement défaillant. S'il passe, passez à l'étape suivante.

b) Lire le statut et le message de rejet renvoyé par la PA

La PA renvoie un statut dans le cycle de vie de la facture :

  • Déposée → fichier reçu, contrôles en cours.
  • Rejetée → au moins un contrôle a échoué ; un motif doit accompagner ce statut.
  • Refusée → le destinataire a explicitement refusé la facture (action métier) ; à ne pas confondre avec un rejet technique.

Récupérez le message structuré renvoyé par l'API (corps de la réponse HTTP, webhook, ou portail). Il contient généralement : un code de catégorie d'erreur, un champ descriptif (lisez-le en entier), et un identifiant de transaction (indispensable pour un ticket support).

c) Reproduire en local

  • Erreur XSD ou Schematron : extrayez le XML embarqué (pdfdetach -saveall ou votre librairie) et rejouez la validation en local.
  • Erreur annuaire : vérifiez que le SIREN/SIRET du destinataire est correct et référencé. Un SIRET valide au format peut ne pas encore être inscrit dans l'annuaire.
  • Doublon de numéro : cherchez dans votre journal d'envois si ce numéro a déjà été transmis avec succès.
  • Profil non supporté : vérifiez l'identifiant de profil déclaré et comparez-le aux profils annoncés par la PA.

d) Corriger

Appliquez la correction ciblée sur la seule cause identifiée. Évitez les corrections en rafale : si vous modifiez plusieurs choses à la fois et que le renvoi passe, vous ne saurez pas ce qui bloquait.

e) Revalider avant de renvoyer

Repassez systématiquement le fichier corrigé dans le validateur indépendant avant tout nouvel envoi. Cela évite d'introduire une nouvelle erreur lors de la correction.


3. Causes fréquentes de rejet par une PA (au-delà de la validité du fichier)

Ces erreurs n'ont rien à voir avec la conformité EN 16931 — elles concernent l'acheminement et le contexte plateforme.

  • SIREN/SIRET inconnu ou non référencé dans l'annuaire. L'annuaire ne contient que les entités enregistrées ; un SIRET valide chez l'INSEE peut ne pas y figurer encore.
  • Destinataire introuvable ou mal identifié. L'identifiant ou l'adresse électronique utilisés ne correspondent à aucune entrée (ou à plusieurs, de façon ambiguë).
  • Profil non supporté par la PA. Certaines PA exigent EN 16931 ou EXTENDED et refusent MINIMUM/BASIC WL pour certains flux.
  • Doublon de numéro de facture. Une pièce de même numéro et même émetteur a déjà été acceptée.
  • Statut de cycle de vie incohérent (par exemple un avoir — code 381, pas 380 — référençant une facture dans un état incompatible).
  • Format ou variante attendu différent : encodage UTF-8 sans BOM, version précise du namespace CII, contraintes de taille de champ propres aux CGU techniques de la PA.

4. Bonnes pratiques

  • Valider avant d'envoyer, toujours. Le contrôle côté PA est un filet de sécurité, pas le premier rempart. Intégrez la validation Schematron dans votre pipeline de génération.
  • Journaliser tous les échanges : requête HTTP complète, réponse (statut + corps), identifiant de transaction, horodatage. Sans cela, le support de la PA ne peut pas vous aider efficacement.
  • Tester en environnement de recette (UAT) avant la production : profils acceptés, cas limites (avoir, facture rectificative, e-reporting). Un rejet en recette ne coûte rien ; un rejet en production peut bloquer un paiement.
  • Séparer les logs de validation des logs d'envoi pour comparer les résultats et repérer d'éventuelles divergences d'interprétation.

5. La distinction fondamentale à retenir

Fichier valide EN 16931  ≠  Fichier acheminable par la PA

La norme EN 16931 définit les règles de contenu et de structure. La PA ajoute des règles d'acheminement, d'identité et de contexte plateforme qui lui sont propres. Un fichier peut satisfaire l'intégralité des règles Schematron EN 16931 et être rejeté parce que le SIRET du destinataire n'est pas dans l'annuaire, ou parce que le numéro de facture a déjà été utilisé.

Diagnostiquer un rejet, c'est donc toujours répondre à deux questions distinctes :

  1. Le fichier est-il valide en lui-même ?
  2. Les données d'acheminement sont-elles correctes dans le contexte de cette PA ?

FAQ

La PA renvoie « erreur technique » sans détail. Que faire ? Vérifiez le statut HTTP (4xx = erreur de votre côté, 5xx = côté PA). Si c'est un 5xx, réessayez plus tard ; si ça persiste, ouvrez un ticket avec l'identifiant de transaction et le timestamp.

Mon SIRET est valide mais la PA dit qu'il est inconnu. Pourquoi ? La validité d'un SIRET (14 chiffres, clé correcte) est indépendante de son inscription dans l'annuaire de la réforme. L'entité doit s'y être enregistrée pour y apparaître.

Peut-on renvoyer la même facture après correction ? Cela dépend de la PA et du statut atteint. À l'état Rejetée, certaines permettent un renvoi avec le même numéro ; d'autres exigent une nouvelle pièce.

Quelle différence entre « rejetée » et « refusée » ? Rejetée est technique (anomalie détectée). Refusée est métier : le destinataire refuse explicitement la facture, généralement pour un désaccord de contenu.


Pour aller plus loin