Aller au contenu

Ironfang Finance - Référence des règles

PEPPOL-EN16931-R080 : N'envoyer qu'une seule référence de projet sur un avoir

Un avoir Peppol peut porter au plus un cac:AdditionalDocumentReference avec cbc:DocumentTypeCode à 50 : c'est ainsi qu'il contient sa référence de projet.

Peppol BIS BillingErreur : le document n'est pas valideProcessus et références

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.

TermeSignificationÉlément UBL
BT-11Référence de projetcac: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 50 parce 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

  1. Décidez à quel projet unique l'avoir appartient, normalement le projet de la facture qu'il corrige.
  2. Gardez un cac:AdditionalDocumentReference avec ce projet dans cbc:ID et le cbc:DocumentTypeCode à 50, et supprimez les autres.
  3. Si l'avoir couvre réellement plusieurs projets, émettez un avoir par projet.
  4. 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é

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 document Invoice place son unique référence de projet dans cac:ProjectReference, et l'étape EN 16931 y applique la limite sous UBL-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:ID vide sur la référence de type 50 a signalé BR-52 et PEPPOL-EN16931-R008.
  • Déplacer le projet vers cac:ProjectReference n'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.

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.