Sur cette page
La réponse courte
PEPPOL-EN16931-R080 échoue lorsqu'un CreditNote contient plus d'un cac:AdditionalDocumentReference dont le cbc:DocumentTypeCode vaut 50. Gardez une seule référence de projet par avoir : le projet auquel se rapporte l'avoir.
L'avoir UBL 2.1 n'a pas d'élément cac:ProjectReference : Peppol y porte donc le projet comme référence de document additionnelle avec le code de type 50. C'est pourquoi la limite est comptée sur ces références, et pourquoi elle ne s'applique qu'aux avoirs.
Ce que la règle vérifie
La règle s'exécute une fois à la racine de l'avoir et compte les références de document additionnelles de code de type 50. Une seule est permise ; tout nombre supérieur échoue, et le constat n'est signalé qu'une fois : lors d'un essai, trois références de ce type ont donné un seul constat à la racine.
Les identifiants ne sont pas comparés entre eux. Lors d'un essai, deux références contenant toutes deux PROJECT-001 ont échoué exactement comme deux références différentes.
Les références avec un autre code de type, ou sans code, ne sont pas comptées. Lors d'un essai, une seconde référence à PROJECT-002 sans code de type a passé toutes les étapes, mais c'est alors un document justificatif ordinaire, et non une référence de projet.
Les factures sont hors du champ de la règle. Lors d'un essai, un document Invoice avec deux références de type 50 ne l'a pas signalée ; l'étape EN 16931 a rejeté chaque référence sous UBL-SR-43, car une facture porte son projet dans cac:ProjectReference, et deux de ces éléments ont signalé UBL-SR-39.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-11 | Référence de projet | cac:AdditionalDocumentReference[cbc:DocumentTypeCode = 50]/cbc:ID (cac:ProjectReference/cbc:ID in an invoice) |
Comment une intégration en arrive là
Causes possibles, déduites de la forme de la règle et non d'une utilisation mesurée :
- Un avoir construit à partir d'une facture qui référençait plusieurs projets transforme chacun d'eux en référence de type
50. - L'avoir porte sur des travaux de plusieurs projets, et l'export les liste tous.
- D'autres références, comme un ordre de travail ou un contrat, sont écrites avec le code de type
50parce que le mapping utilise un seul code pour toute référence additionnelle. - Le même projet est écrit deux fois, une fois depuis l'en-tête et une fois depuis une imputation analytique.
Comment corriger le document
- Décidez à quel projet unique l'avoir appartient, normalement le projet de la facture qu'il corrige.
- Gardez un
cac:AdditionalDocumentReferenceavec ce projet danscbc:IDet lecbc:DocumentTypeCodeà50, et supprimez les autres. - Si l'avoir couvre réellement plusieurs projets, émettez un avoir par projet.
- Envoyez les références qui ne sont pas des projets dans leurs propres éléments : un contrat va dans
cac:ContractDocumentReference, et un document justificatif est une référence de document additionnelle sans code de type.
Valider votre facture corrigée
Avant et après
Ce sont des extraits, pas des documents complets. Les documents synthétiques complets dont ils proviennent sont liés ci-dessous.
Fragment de l'avoir en échec : deux références de document additionnelles de type 50
<cac:BillingReference>
<!-- invoice reference omitted from this fragment -->
</cac:BillingReference>
<cac:AdditionalDocumentReference>
<cbc:ID>PROJECT-001</cbc:ID>
<cbc:DocumentTypeCode>50</cbc:DocumentTypeCode>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<cbc:ID>PROJECT-002</cbc:ID>
<cbc:DocumentTypeCode>50</cbc:DocumentTypeCode>
</cac:AdditionalDocumentReference>
<cac:AccountingSupplierParty>
<!-- seller omitted from this fragment -->
</cac:AccountingSupplierParty>Fragment de l'avoir corrigé : une seule référence de projet, PROJECT-001
<cac:BillingReference>
<!-- invoice reference omitted from this fragment -->
</cac:BillingReference>
<cac:AdditionalDocumentReference>
<cbc:ID>PROJECT-001</cbc:ID>
<cbc:DocumentTypeCode>50</cbc:DocumentTypeCode>
</cac:AdditionalDocumentReference>
<cac:AccountingSupplierParty>
<!-- seller omitted from this fragment -->
</cac:AccountingSupplierParty>L'avoir en échec a un second cac:AdditionalDocumentReference pour PROJECT-002 avec le code de type 50 ; l'avoir corrigé ne garde que PROJECT-001, et rien d'autre ne diffère. PEPPOL-EN16931-R080 est le seul constat, à la racine CreditNote. L'étape EN 16931 passe, car sa propre limite sur les références de projet compte cac:ProjectReference, qu'un avoir n'a pas.
Ce que le validateur a signalé
- L'avoir en erreur signale PEPPOL-EN16931-R080. Le document corrigé passe toutes les étapes de validation sans constat.Télécharger le XML en erreurTélécharger le XML corrigé
Enregistré avec phive 12.1.0 / phive-rules-peppol 4.5.6 / Saxon-HE 12.10, le moteur du validateur gratuit, sur des données synthétiques. Un résultat enregistré est une preuve de non-régression pour ces documents ; ce n'est pas une certification.
Où la règle s'applique
- Une règle propre aux documents
CreditNote. Un documentInvoiceplace son unique référence de projet danscac:ProjectReference, et l'étape EN 16931 y applique la limite sousUBL-SR-39. - Une règle Peppol BIS, signalée à la seule étape Peppol.
- La référence reste une référence de document additionnelle, donc les règles qui visent celles-ci s'y appliquent aussi : lors d'un essai, un
cbc:IDvide sur la référence de type50a signaléBR-52etPEPPOL-EN16931-R008. - Déplacer le projet vers
cac:ProjectReferencen'est pas possible dans un avoir. Lors d'un essai, cet élément a échoué à l'étape XSD, car le schéma de l'avoir UBL 2.1 ne le définit pas.
Règles liées
- PEPPOL-EN16931-R100 fixe la limite correspondante à un seul objet facturé par ligne
- BR-52 exige un identifiant dans chaque référence de document additionnelle, référence de projet comprise
- Parcourir toutes les règles de la référence
- Contexte (en anglais) : How Peppol invoice validation actually works
Portée et source
Rédigé pour Peppol BIS Billing 3.0.21 (May 2026), EN 16931 1.3.16, tel qu'appliqué aux documents Invoice et CreditNote en UBL 2.1. D'autres profils, syntaxes et versions peuvent définir cet identifiant autrement. Version du catalogue d'aide 2026-09-28.1 : source vérifiée le 2026-09-28, explication mise à jour le 2026-09-28.
La définition officielle de PEPPOL-EN16931-R080 (en anglais) contient le texte normatif et le test. Cette page en est notre explication, pas une copie.
Cette aide ne modifie pas le verdict du moteur. Corriger ce constat ne signifie pas que le document passe toutes les étapes de validation, et la validation ne certifie pas la conformité juridique ou fiscale et ne transmet aucun document via Peppol.

