Aller au contenu

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

BR-25 : Donner un nom d'article à chaque ligne

Chaque ligne de facture ou d'avoir exige un cac:Item/cbc:Name non vide. Il est vérifié ligne par ligne, et une description d'article ne le remplace pas.

EN 16931Erreur : le document n'est pas valideChamps de baseLignes et prix

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.

TermeSignificationÉlément UBL
BT-153Nom de l'articlecac:InvoiceLine/cac:Item/cbc:Name
BG-25Ligne de facturecac: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:Description en omettant cbc:Name.
  • Les noms sont traduits selon la langue du client, et la traduction pour cette langue est vide.

Comment corriger le document

  1. Utilisez l'emplacement du constat pour identifier les lignes en échec.
  2. Pour les lignes de produit, reprenez dans cac:Item/cbc:Name le nom du produit tel qu'il a été enregistré sur la ligne de facture au moment de la vente.
  3. 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:Name et conservez le texte complet dans cbc:Description.
  4. Dans le XML, cbc:Description précède cbc:Name à l'intérieur de cac: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é

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 dans une Invoice UBL et à cac:CreditNoteLine dans un CreditNote. La structure de cac:Item est 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:Name et ne sont pas lus par elle.

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.