Technique

Rejets Chorus Pro : erreurs Factur-X courantes et comment les corriger

9 min de lecture Par FacturX API

Les rejets Chorus Pro lors de soumissions Factur-X décryptés : codes retour, erreurs EN16931, BT-10 Buyer reference, code paiement 30 vs 58, diagnostic et corrections.

Chorus Pro est le portail de facturation B2G (business-to-government) de l’État français. Tout fournisseur qui facture une entité publique passe par cette plateforme. Quand Chorus Pro rejette une facture Factur-X, le message d’erreur peut sembler cryptique — mais dans la majorité des cas, il s’agit d’un champ manquant, d’un code incorrect, ou d’une incohérence entre ce que la norme EN16931 considère comme optionnel et ce que Chorus Pro attend en pratique.

Ce guide décrypte les rejets les plus fréquents, explique la logique de validation de Chorus Pro, et propose un diagnostic systématique pour chaque type d’échec.

Pour le contexte général de la réforme et du pipeline de validation, voir Facturation électronique 2026 : le guide technique complet pour développeurs. Pour la mécanique des erreurs Schematron BR-*, voir Valider EN16931/Factur-X : XSD vs Schematron, erreurs BR-*.

Comment Chorus Pro valide les factures

La validation Chorus Pro n’est pas un contrôle unique. C’est une chaîne de vérifications successives, chacune pouvant entraîner un rejet à un stade différent.

Validation structurelle

Chorus Pro vérifie que le fichier soumis est un PDF/A-3 conforme avec un XML CII embarqué. Si le conteneur PDF n’est pas conforme PDF/A-3, ou si le fichier XML est absent ou mal attaché, le rejet intervient avant même l’analyse du contenu. Pour les détails sur la conformité du conteneur, voir PDF/A-3 pour Factur-X : conformité et pièges.

Validation EN16931

Le XML embarqué est validé contre les schémas XSD CII, puis contre les règles Schematron EN16931. La validation EN16931 couvre le noyau sémantique commun. Des réseaux comme Peppol ou des plateformes nationales ajoutent des contraintes CIUS ou opérationnelles supplémentaires (ex : Peppol PEPPOL-EN16931-R003 impose BT-10 ou BT-13 malgré leur cardinalité 0..1 dans le noyau). Les erreurs BR-* qui en résultent sont documentées dans le Catalogue des erreurs BR-* EN16931.

Contrôles métier spécifiques Chorus Pro

C’est ici que Chorus Pro se distingue d’une validation EN16931 standard. Au-delà du noyau européen, Chorus Pro applique des contrôles nationaux et opérationnels propres au flux B2G français. Ces contrôles portent notamment sur :

  • La référence acheteur (BT-10), utilisée comme clé de routage vers le service destinataire
  • Le code de moyen de paiement (BT-81), qui doit correspondre aux instruments acceptés par la comptabilité publique
  • Le type de document (BT-3), restreint à un sous-ensemble des codes UNTDID 1001
  • L’identification du fournisseur (BT-30), qui doit contenir un SIRET valide

Chorus Pro publie plusieurs valeurs de profil admises (MINIMUM, BASIC WL, BASIC, EN 16931, EXTENDED). En pratique, le profil MINIMUM est accepté pour certains flux spécifiques (notamment le flux A9 / PES Facture). Pour les flux B2G standards, viser EN 16931 est le choix le plus robuste. Pour le détail des profils, voir Profils Factur-X : MINIMUM, BASIC WL, BASIC, EN 16931, EXTENDED.

Les rejets les plus fréquents

BT-10 — Buyer reference manquant

C’est probablement le rejet le plus courant pour les développeurs qui soumettent pour la première fois à Chorus Pro.

Dans la norme EN16931, BT-10 (Buyer reference) a une cardinalité 0..1 — il est optionnel. Un XML Factur-X parfaitement conforme EN16931 peut ne pas contenir de BT-10 et passer la validation Schematron sans erreur.

Mais Chorus Pro utilise BT-10 comme référence de routage vers le service destinataire au sein de l’entité publique. En noyau EN16931, BT-10 (Buyer reference) est optionnel (0..1). En pratique, Chorus Pro peut le rendre requis selon le débiteur et le cadre de facturation, notamment lorsque la référence d’engagement ou le numéro de commande est obligatoire dans l’annuaire Chorus Pro.

Ce que BT-10 doit contenir : selon la documentation Chorus Pro, il s’agit du numéro d’engagement juridique (numéro de bon de commande, numéro de marché) ou du code service communiqué par l’entité publique destinataire. Certaines entités exigent un format spécifique.

Correction dans le XML CII :

<ram:ApplicableHeaderTradeAgreement>
  <!-- BT-10 : Buyer reference (obligatoire pour Chorus Pro) -->
  <ram:BuyerReference>EJ-2026-00042</ram:BuyerReference>
  <!-- ... -->
</ram:ApplicableHeaderTradeAgreement>

Piège : renseigner BT-10 avec une valeur vide ou un texte générique comme “N/A” peut passer la validation structurelle mais provoquera un rejet fonctionnel en aval, quand le service comptable ne pourra pas rattacher la facture à un engagement.

BT-81 — Code de moyen de paiement incorrect

Le champ BT-81 (Payment means type code) utilise les codes UNTDID 4461. La norme EN16931 accepte un large éventail de ces codes, mais Chorus Pro n’en reconnaît qu’un sous-ensemble adapté à la comptabilité publique.

Chorus Pro publie une liste de valeurs autorisées pour BT-81, parmi lesquelles 30, 42, 48, 49, 58, 59 et 97. Les codes 58 et 59 ne sont utilisables qu’avec CII 16B et Factur-X. En pratique, 30 (virement) est le plus fréquent.

CodeSignificationNotes
30VirementLe plus courant en B2G
42Paiement de compte à compteTransfert entre comptes du Trésor
48Paiement par carteCarte bancaire
49PrélèvementAutorisé par Chorus Pro
58Virement SEPACII 16B / Factur-X uniquement
59Prélèvement SEPACII 16B / Factur-X uniquement
97CompensationAutorisé par Chorus Pro

Erreurs fréquentes :

  • Code 1 (instrument non défini) : trop générique, rejeté car Chorus Pro ne peut pas déterminer le mode de règlement
  • Codes hors liste : tout code UNTDID 4461 non publié dans la liste Chorus Pro sera rejeté, même s’il est valide au regard d’EN16931

Correction : si votre facture sera réglée par virement bancaire classique (le cas le plus fréquent en B2G), utilisez le code 30 ou 58 :

<ram:SpecifiedTradeSettlementPaymentMeans>
  <!-- BT-81 : 30 = virement, 58 = SEPA -->
  <ram:TypeCode>30</ram:TypeCode>
</ram:SpecifiedTradeSettlementPaymentMeans>

BT-3 — Code type de document incorrect

BT-3 (Invoice type code) utilise les codes UNTDID 1001. Le standard EN16931 en accepte plusieurs, mais Chorus Pro restreint en pratique les codes acceptés.

Codes principaux :

CodeTypeAccepté Chorus Pro
380Facture commercialeOui
381Avoir (note de crédit)Oui
384Facture rectificativeOui
389Auto-facturationSelon le contexte
386Facture d’acompteSelon le flux

Si vous utilisez un code exotique (575, 623…) valide dans la liste UNTDID 1001 mais absent du périmètre Chorus Pro, le rejet est immédiat. Le code 380 est le choix sûr pour une facture standard.

BT-30 — SIRET vendeur manquant ou incorrect

L’identification légale du vendeur est fondamentale dans le flux B2G. Chorus Pro attend que le fournisseur soit identifié par son SIRET (14 chiffres) dans le champ BT-30, avec le schemeID 0002 (codification ISO 6523 pour le SIRET français).

Causes de rejet :

  • SIRET absent : le champ BT-30 n’est pas renseigné du tout
  • SchemeID manquant : le SIRET est présent mais sans l’attribut schemeID="0002", Chorus Pro ne peut pas interpréter l’identifiant
  • SIRET invalide : le numéro ne fait pas 14 chiffres, ou le SIREN (9 premiers chiffres) échoue à la vérification par l’algorithme de Luhn
  • SIRET fermé : l’établissement correspondant est administrativement fermé dans le répertoire SIRENE
<ram:SellerTradeParty>
  <ram:Name>ACME SARL</ram:Name>
  <ram:SpecifiedLegalOrganization>
    <!-- BT-30 : SIRET avec schemeID 0002 -->
    <ram:ID schemeID="0002">12345678901234</ram:ID>
  </ram:SpecifiedLegalOrganization>
</ram:SellerTradeParty>

Pour la vérification d’un SIRET via l’API SIRENE et le mapping vers les champs Factur-X, voir API annuaire et routage SIRET.

Profil Factur-X insuffisant pour le flux B2G

Le profil MINIMUM ne contient pas de lignes de facture, pas de ventilation TVA détaillée, pas d’informations de paiement. Pour les flux B2G généraux, ces informations sont nécessaires au traitement comptable par l’entité publique.

En pratique, Chorus Pro publie plusieurs valeurs de profil admises (MINIMUM, BASIC WL, BASIC, EN 16931, EXTENDED). Le profil MINIMUM est accepté pour le flux A9 (PES Facture), un flux spécifique utilisé par certaines collectivités. Pour les flux B2G standards, viser EN 16931 est le choix le plus robuste, car il garantit la conformité complète au noyau européen et la présence de toutes les informations attendues par le traitement comptable.

Si votre facture est rejetée pour insuffisance de données, vérifiez le profil déclaré dans le GuidelineID du XML et assurez-vous qu’il correspond au contenu réellement présent. Pour la matrice de choix, voir Profils Factur-X : MINIMUM, BASIC WL, BASIC, EN 16931, EXTENDED.

Diagnostic systématique d’un rejet

Quand une facture est rejetée par Chorus Pro, le réflexe de “corriger à l’aveugle” est le pire ennemi. Chaque correction non diagnostiquée risque d’introduire une nouvelle erreur. Voici un workflow en trois étapes.

Etape 1 : valider en amont avant soumission

La majorité des rejets Chorus Pro correspondent à des erreurs détectables par une validation EN16931 standard. Valider votre XML CII avec l’API avant de soumettre à Chorus Pro permet de capturer les erreurs structurelles (XSD) et sémantiques (Schematron) sans consommer un cycle de soumission/rejet.

L’API de validation retourne un rapport détaillé avec les codes BR-* violés, la localisation XPath de chaque erreur, et la description de la règle. C’est un diagnostic bien plus précis que le message de rejet Chorus Pro, qui est souvent un résumé.

Etape 2 : lire le motif de rejet Chorus Pro

Quand le rejet provient de Chorus Pro, le portail fournit un motif. Ce motif peut être :

  • Une erreur technique (format PDF, XML invalide) — indique un problème structurel
  • Une erreur fonctionnelle (champ manquant, valeur incorrecte) — indique un contrôle métier Chorus Pro non satisfait
  • Un rejet de service (référence inconnue, engagement non trouvé) — indique un problème de données métier, pas de format

Distinguer ces trois catégories oriente immédiatement le diagnostic vers la bonne couche.

Etape 3 : croiser avec le catalogue BR-*

Si le rejet concerne une règle EN16931, identifiez le code BR-* correspondant dans le Catalogue des erreurs BR-* EN16931. Chaque entrée documente la cause racine, un exemple XML invalide, et la correction à appliquer.

Si le rejet concerne un contrôle spécifique Chorus Pro (BT-10 manquant, code paiement non supporté), il ne s’agit pas d’une règle BR-* mais d’une exigence opérationnelle nationale. La correction est alors de renseigner le champ attendu selon les spécifications Chorus Pro.

Pour les erreurs qui sont des problèmes de format (date, décimaux, namespace), l’API Repair peut corriger automatiquement certaines d’entre elles. Voir Corriger automatiquement un XML CII Factur-X invalide.

Validation EN16931 pure vs validation Chorus Pro

Cette distinction est fondamentale et source de confusion fréquente.

EN16931 est le noyau européen de facturation électronique. Ses règles (BR-*) définissent le socle sémantique commun indépendamment du pays ou du portail destinataire. Un XML conforme EN16931 satisfait le noyau de validation, mais chaque réseau (Peppol, Chorus Pro, SDI…) peut ajouter ses propres contraintes CIUS ou opérationnelles.

Chorus Pro applique EN16931 plus des contrôles nationaux spécifiques au contexte B2G français. Concrètement :

AspectEN16931Chorus Pro
BT-10 (Buyer reference)Optionnel (0..1)Requis selon le débiteur et le cadre de facturation
BT-81 (Code paiement)Tous codes UNTDID 4461Liste autorisée (30, 42, 48, 49, 58, 59, 97…)
BT-30 (ID vendeur)Tout schemeID valideSIRET attendu (schemeID 0002)
Profil Factur-XTout profil valideEN 16931+ pour flux B2G standard
Règles de validationBR-* SchematronBR-* + contrôles nationaux

Les contrôles nationaux Chorus Pro ne sont pas des règles BR-* officielles du noyau EN16931. Ils ne déclenchent pas d’erreur Schematron standard. Un XML peut donc passer la validation EN16931 avec zéro erreur et être rejeté par Chorus Pro pour un contrôle métier national.

C’est pourquoi la validation EN16931 seule ne suffit pas pour le B2G : elle garantit la conformité au noyau européen, mais pas la conformité aux exigences opérationnelles de Chorus Pro.

Checklist avant soumission Chorus Pro

Avant de soumettre une facture Factur-X à Chorus Pro, vérifiez systématiquement :

  • PDF/A-3 : le conteneur est conforme, le XML CII est correctement embarqué
  • Profil : EN 16931 ou supérieur (sauf flux A9/PES)
  • BT-10 : la référence acheteur est renseignée (numéro d’engagement ou code service)
  • BT-30 : le SIRET vendeur est présent avec schemeID="0002", 14 chiffres, valide
  • BT-81 : le code de moyen de paiement est dans la liste autorisée Chorus Pro (30, 42, 48, 49, 58, 59, 97…)
  • BT-3 : le code type de document est 380 (facture) ou 381 (avoir)
  • Validation EN16931 : l’API retourne zéro erreur BR-*
  • Cohérence XMP/XML : le profil déclaré dans les métadonnées XMP correspond au GuidelineID

Ressources

#chorus-pro #factur-x #B2G #rejet #EN16931 #PDP #validation