Sur cette page
La réponse courte
BR-54 échoue lorsqu'une cac:AdditionalItemProperty dans l'article d'une ligne n'a pas son cbc:Value ou son cbc:Name. Dans l'exemple enregistré, l'attribut s'appelle Service level et n'a pas de valeur. Ajoutez la valeur tirée des données de l'article, ou retirez toute la cac:AdditionalItemProperty si l'article n'en a pas pour cet attribut.
Un nom manquant n'atteint pas cette règle en pratique. cbc:Name est obligatoire dans cet élément UBL : une propriété qui ne l'a pas est donc refusée à l'étape XSD avant toute règle métier.
Ce que la règle vérifie
La règle s'exécute sur chaque cac:AdditionalItemProperty du document et est satisfaite lorsqu'elle a à la fois un enfant cbc:Name et un enfant cbc:Value. Chaque propriété est jugée séparément : lors d'un essai, un article avec deux propriétés sans valeur a signalé la règle deux fois, une pour chacune.
Seule la présence des deux éléments est testée. Un cbc:Value vide satisfait cette règle et est signalé à la place par PEPPOL-EN16931-R008 ; un cbc:Name vide s'est comporté de la même façon lors d'un essai.
Seul cbc:Value compte comme valeur. Lors d'un essai, une propriété avec cbc:ValueQuantity à sa place a signalé cette règle et l'avertissement UBL-CR-611, qui signale cbc:ValueQuantity comme un élément hors du modèle EN 16931.
L'ordre des éléments compte pour le schéma, pas pour cette règle. Lors d'un essai, une propriété avec cbc:Value écrit avant cbc:Name a échoué à l'étape XSD.
| Terme | Signification | Élément UBL |
|---|---|---|
| BG-32 | Attributs de l'article | cac:InvoiceLine/cac:Item/cac:AdditionalItemProperty (cac:CreditNoteLine/cac:Item/cac:AdditionalItemProperty in a credit note) |
| BT-160 | Nom de l'attribut de l'article | cac:InvoiceLine/cac:Item/cac:AdditionalItemProperty/cbc:Name |
| BT-161 | Valeur de l'attribut de l'article | cac:InvoiceLine/cac:Item/cac:AdditionalItemProperty/cbc:Value |
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 :
- Les attributs sont générés à partir d'un modèle de produit aux noms d'attribut fixes, et la valeur est vide pour ce produit.
- Le sérialiseur omet les valeurs nulles mais écrit quand même la
cac:AdditionalItemPropertyenglobante et son nom. - Un attribut numérique comme un poids est écrit en
cbc:ValueQuantityparce qu'UBL le propose, et aucuncbc:Valuen'est envoyé. - Les noms et les valeurs d'attribut proviennent de sources différentes, comme un catalogue et une commande, et la jointure ne trouve aucune valeur pour cette ligne.
Comment corriger le document
- Utilisez l'emplacement du constat, par exemple
cac:InvoiceLine[1]/cac:Item[1]/cac:AdditionalItemProperty[1], pour trouver la propriété. - Si l'article a une valeur pour l'attribut, écrivez-la sous forme de texte dans
cbc:Value, juste aprèscbc:Name. Pour une mesure, mettez le nombre et son unité dans ce texte, carcbc:Valueest le seul élément de valeur qu'utilise le modèle EN 16931. - S'il n'y a pas de valeur, omettez toute la
cac:AdditionalItemProperty. Uncbc:Valuevide ne fait qu'échanger ce constat contrePEPPOL-EN16931-R008. - Empêchez le sérialiseur d'écrire une propriété dont la valeur est nulle, afin qu'un nom ne soit jamais envoyé seul.
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 la facture en échec : l'attribut d'article a un nom et aucune valeur
<cac:Item>
<cbc:Name>Example service</cbc:Name>
<!-- standard identifier, classification and tax category omitted from this fragment -->
<cac:AdditionalItemProperty>
<cbc:Name>Service level</cbc:Name>
</cac:AdditionalItemProperty>
</cac:Item>Fragment de la facture corrigée : l'attribut Service level a la valeur Standard
<cac:Item>
<cbc:Name>Example service</cbc:Name>
<!-- standard identifier, classification and tax category omitted from this fragment -->
<cac:AdditionalItemProperty>
<cbc:Name>Service level</cbc:Name>
<cbc:Value>Standard</cbc:Value>
</cac:AdditionalItemProperty>
</cac:Item>Seul cbc:Value diffère : absent de l'attribut d'article dans la facture en échec, Standard dans la facture corrigée. Le document en échec ne signale que BR-54. Son étape Peppol réussit, car l'élément de valeur est absent plutôt que vide : PEPPOL-EN16931-R008 n'a donc aucun élément à signaler.
Ce que le validateur a signalé
- La facture en erreur signale BR-54. 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
- S'applique à
cac:InvoiceLine/cac:Itemdans uneInvoiceUBL et àcac:CreditNoteLine/cac:Itemdans unCreditNote. Lors d'un essai, un avoir dont la valeur avait été retirée a signalé le même constat unique surcac:CreditNoteLine[1]. - Les attributs d'article sont facultatifs. Une ligne sans aucune
cac:AdditionalItemPropertypasse, c'est pourquoi retirer un attribut que vous ne pouvez pas renseigner est une correction légitime. - La règle ne lit que l'attribut. Le nom de l'article, l'identifiant standard et la classification du même article ont leurs propres règles.
Règles liées
- PEPPOL-EN16931-R008 signale un nom ou une valeur d'attribut présent mais vide
- BR-25 exige le nom de l'article sur le même article de ligne
- BR-64 vérifie le schéma de l'identifiant standard de l'article dans le même article
- Parcourir toutes les règles de la référence
- Contexte (en anglais) : Understanding EN 16931 validation errors
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-24.
La définition officielle de BR-54 (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.

