Sur cette page
La réponse courte
BR-25 échoue pour une ligne dont le cac:Item/cbc:Name est absent ou vide. Indiquez sur chaque ligne un nom court pour ce qui a été vendu.
L'emplacement du constat pointe vers la ligne en cause, par exemple cac:InvoiceLine[2], et il y a un constat pour chaque ligne sans nom.
Ce que la règle vérifie
La règle s'exécute une fois pour chaque cac:InvoiceLine ou cac:CreditNoteLine et échoue lorsque le cbc:Name situé directement dans le cac:Item de cette ligne est absent ou ne contient que des espaces. Deux lignes sans nom dans un même document donnent deux constats.
cbc:Description n'est pas une alternative. Une ligne dont l'article a une description mais pas de nom échoue quand même.
Absent ou vide : cac:Item lui-même est obligatoire dans le schéma UBL, et une ligne qui ne l'a pas est rejetée par l'étape XSD avant toute règle métier. Le cbc:Name qu'il contient est facultatif dans le schéma : une ligne dont l'article n'a pas de nom passe donc l'étape XSD et signale BR-25 seul. Avec un nom présent mais vide, comme dans l'exemple enregistré, PEPPOL-EN16931-R008 est aussi signalé.
Rien n'est vérifié sur le texte, sinon qu'il y en a. Un nom - passe.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-153 | Nom de l'article | cac:InvoiceLine/cac:Item/cbc:Name |
| BG-25 | Ligne de facture | cac:InvoiceLine |
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 lignes en texte libre, comme le transport, des frais ou un ajustement manuel, ont un montant mais aucun produit derrière elles : il n'y a donc aucun nom de produit à copier.
- Le produit a été supprimé ou renommé après la vente, et le nom est recherché en direct au lieu d'être enregistré sur la ligne de facture.
- Le système source conserve un seul texte long par ligne, et le mapping l'envoie dans
cbc:Descriptionen omettantcbc:Name. - Les noms sont traduits selon la langue du client, et la traduction pour cette langue est vide.
Comment corriger le document
- Utilisez l'emplacement du constat pour identifier les lignes en échec.
- Pour les lignes de produit, reprenez dans
cac:Item/cbc:Namele nom du produit tel qu'il a été enregistré sur la ligne de facture au moment de la vente. - Pour les lignes sans produit, écrivez un libellé court indiquant à quoi sert la ligne. Si la source n'a qu'un texte long, mettez une forme courte pertinente dans
cbc:Nameet conservez le texte complet danscbc:Description. - Dans le XML,
cbc:Descriptionprécèdecbc:Nameà l'intérieur decac:Item. Respectez cet ordre en ajoutant l'élément, sinon l'étape XSD rejettera la ligne.
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.
Ligne de la facture en échec : l'article a un nom vide
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name></cbc:Name>
<!-- tax category omitted from this fragment -->
</cac:Item>
<!-- price omitted from this fragment -->
</cac:InvoiceLine>Ligne de la facture corrigée : l'article a un nom
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Example service</cbc:Name>
<!-- tax category omitted from this fragment -->
</cac:Item>
<!-- price omitted from this fragment -->
</cac:InvoiceLine>Seul cac:Item/cbc:Name de la ligne 1 diffère : vide dans la facture en échec, Example service dans la facture corrigée. Le document en échec signale aussi PEPPOL-EN16931-R008, situé sur le même cbc:Name, car Peppol rejette les éléments sans contenu. Écrire le nom fait disparaître les deux constats.
Ce que le validateur a signalé
- La facture en erreur signale BR-25 et PEPPOL-EN16931-R008. 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:InvoiceLinedans uneInvoiceUBL et àcac:CreditNoteLinedans unCreditNote. La structure decac:Itemest la même dans les deux, et une ligne d'avoir dont le nom est vide ou absent se comporte exactement comme décrit ci-dessus. - La règle ne concerne que l'article de la ligne. Les noms ailleurs dans le document, comme ceux des parties ou des contacts, utilisent le même élément
cbc:Nameet ne sont pas lus par elle.
Règles liées
- PEPPOL-EN16931-R008 est signalé sur le même élément lorsque le nom est présent mais vide
- BR-27 vérifie le prix net de l'article sur la même ligne
- BR-CL-23 vérifie le code d'unité de la quantité de la ligne
- PEPPOL-EN16931-R120 vérifie le montant net de la ligne par rapport à la quantité et au prix
- 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-20.
La définition officielle de BR-25 (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.

