Aller au contenu

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

BR-01 : Ajouter l'identifiant de spécification dans CustomizationID

La racine du document doit contenir un cbc:CustomizationID non vide. Pour Peppol BIS Billing 3.0, c'est une valeur fixe, pas une donnée lue dans la source.

EN 16931Erreur : le document n'est pas valideChamps de baseProcessus et références

Sur cette page

La réponse courte

BR-01 échoue lorsque la racine Invoice ou CreditNote n'a pas de cbc:CustomizationID, ou en a un sans contenu. Ajoutez l'élément avant cbc:ProfileID avec la valeur de Peppol BIS Billing 3.0 : urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0.

Cette règle demande seulement un texte. Savoir si ce texte est le bon identifiant relève d'un contrôle distinct, PEPPOL-EN16931-R004, et un identifiant absent fait échouer les deux.

Ce que la règle vérifie

La règle examine le cbc:CustomizationID enfant direct de la racine du document et échoue lorsqu'il est absent ou ne contient que des espaces. Tout autre texte la satisfait : un document qui porte seulement urn:cen.eu:en16931:2017 passe BR-01 et n'est signalé que par PEPPOL-EN16931-R004.

Absent et vide ne se comportent pas tout à fait de la même façon. Le schéma UBL considère cbc:CustomizationID comme facultatif : un document sans cet élément passe donc l'étape XSD et signale BR-01 et PEPPOL-EN16931-R004. Un élément présent mais vide, ou qui ne contient que des espaces, signale ces deux règles ainsi que PEPPOL-EN16931-R008, la règle Peppol contre les éléments vides.

Des espaces autour d'une valeur correcte sont sans conséquence ici. Un élément mis en forme, avec l'identifiant sur sa propre ligne, passe toutes les étapes.

TermeSignificationÉlément UBL
BT-24Identifiant de spécificationcbc:CustomizationID

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 :

  • L'identifiant est une constante de configuration définie pour le modèle de facture, mais jamais pour le modèle d'avoir.
  • Le sérialiseur omet les éléments dont la valeur source est nulle, et l'identifiant est recherché par destinataire ou par profil dans une table qui n'a aucune entrée pour ce cas.
  • La même recherche renvoie une chaîne vide, et l'élément est écrit sans contenu.
  • L'export UBL a été conçu pour un destinataire hors Peppol et n'a jamais porté d'identifiant de spécification.
  • L'intégration renseigne l'identifiant dans l'enveloppe de transport et suppose que le document lui-même n'en a pas besoin.

Comment corriger le document

  1. Produisez cbc:CustomizationID comme enfant direct de la racine Invoice ou CreditNote, avant cbc:ProfileID.
  2. Renseignez-le à partir d'une constante propre à la spécification que vous produisez. Pour Peppol BIS Billing 3.0, c'est urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0.
  3. Appliquez la même constante aux avoirs ; l'élément et la valeur sont identiques.
  4. Laissez cbc:ProfileID porter l'identifiant du processus métier. Ce sont deux champs différents, et l'un ne peut pas remplacer l'autre.

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.

Début de la facture en échec : la racine passe directement à l'identifiant de profil

<!-- first children of the Invoice root; there is no cbc:CustomizationID -->
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>EXAMPLE-INV-001</cbc:ID>
<cbc:IssueDate>2026-09-08</cbc:IssueDate>
<!-- rest of the document omitted -->

Début de la facture corrigée : l'identifiant de spécification vient en premier

<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>EXAMPLE-INV-001</cbc:ID>
<cbc:IssueDate>2026-09-08</cbc:IssueDate>
<!-- rest of the document omitted -->

La facture corrigée contient l'élément cbc:CustomizationID, la facture en échec non ; rien d'autre ne diffère. Le document en échec signale aussi PEPPOL-EN16931-R004, qui exige que l'identifiant commence par la valeur de Peppol BIS Billing 3.0 et ne peut pas être satisfait par un identifiant absent. Ajouter l'élément avec cette valeur lève les deux constats.

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

  • S'applique de la même façon aux documents UBL Invoice et CreditNote. L'avoir enregistré sans cet élément signale les deux mêmes règles.
  • La valeur indiquée ici est celle de Peppol BIS Billing 3.0, le périmètre de cette référence. D'autres spécifications fondées sur EN 16931 ont leurs propres identifiants et leurs propres règles à leur sujet.
  • L'identifiant indique la spécification que le document déclare suivre. Il ne dit rien sur le fait que le destinataire soit enregistré pour accepter ce type de document.

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-24.1 : source vérifiée le 2026-09-24, explication mise à jour le 2026-09-20.

La définition officielle de BR-01 (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.