Aller au contenu

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

BR-65 : Ajouter l'attribut listID au code de classification de l'article

Un code de classification d'article dans cac:CommodityClassification doit nommer son système de classification dans listID, avec un code UNTDID 7143.

EN 16931Erreur : le document n'est pas valideLignes et prixListes de codes

Sur cette page

La réponse courte

BR-65 échoue lorsque cac:CommodityClassification/cbc:ItemClassificationCode sur une ligne n'a pas d'attribut listID. Ajoutez listID avec le code UNTDID 7143 de la classification dont provient le code : par exemple TST pour UNSPSC, STI pour le vocabulaire commun pour les marchés publics de l'UE (CPV) ou HS pour le Système harmonisé.

Sans le schéma, l'acheteur ne peut pas savoir à quelle classification appartient le code. Choisissez listID selon l'origine du code, pas selon la valeur qui passe la validation.

Ce que la règle vérifie

La règle s'exécute sur chaque cbc:ItemClassificationCode sous cac:CommodityClassification dans une ligne de facture ou d'avoir et contrôle seulement qu'un attribut listID existe. Un article avec plusieurs classifications est contrôlé code par code : lors d'un essai, une seconde classification sans listID a été signalée à cac:CommodityClassification[2] tandis que la première passait.

La valeur de l'attribut est contrôlée par BR-CL-13, pas ici. Lors d'un essai, listID="" a passé cette règle et a été signalé par celle-là.

listVersionID est un attribut distinct et facultatif, qui ne remplace pas listID. Lors d'un essai, un code ne portant que listVersionID a quand même échoué à cette règle, tandis que listID="HS" avec listVersionID="2022" a passé.

schemeID n'est pas non plus une alternative. Le code de classification est un type de code UBL, qui n'a pas cet attribut, et lors d'un essai un schemeID à la place de listID a été refusé à l'étape XSD.

TermeSignificationÉlément UBL
BT-158Identifiant de classification de l'articlecac:InvoiceLine/cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode (cac:CreditNoteLine/cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode in a credit note)
BT-158Identifiant de classification de l'article : son attribut d'identifiant de schémacac:InvoiceLine/cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode/@listID
BT-158Identifiant de classification de l'article : son attribut de version de schémacac:InvoiceLine/cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode/@listVersionID

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 produits portent dans l'ERP un code de classification sans indication de la classification à laquelle il appartient, et le mapping écrit le code seul.
  • Le schéma est conservé sous forme de nom, comme UNSPSC ou CPV, et l'attribut est omis pour les noms qui n'ont pas d'entrée dans la table de correspondance.
  • La version de la classification est écrite dans listVersionID et le schéma lui-même est oublié.
  • Un acheteur a demandé un code de classification sur la facture, et il a été ajouté comme valeur fixe dans le modèle, sans l'attribut.

Comment corriger le document

  1. Identifiez le système de classification dont provient chaque code : CPV dans les marchés publics, UNSPSC, le Système harmonisé ou un autre.
  2. Cherchez son code dans la liste UNTDID 7143 publiée avec les listes de codes Peppol BIS. STI correspond à CPV, TST à UNSPSC et HS au Système harmonisé ; les codes sont en majuscules.
  3. Écrivez le code dans l'attribut listID de cbc:ItemClassificationCode, et ajoutez listVersionID si la classification a besoin d'une version pour être lue correctement.
  4. Si vous ne pouvez pas établir le schéma, omettez la classification. Elle est facultative, et un code avec un schéma deviné induit l'acheteur en erreur.

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 : le code de classification n'a pas de listID

<cac:Item>
  <cbc:Name>Example service</cbc:Name>
  <!-- standard identifier omitted from this fragment -->
  <cac:CommodityClassification>
    <cbc:ItemClassificationCode>80111600</cbc:ItemClassificationCode>
  </cac:CommodityClassification>
  <!-- tax category and item attribute omitted from this fragment -->
</cac:Item>

Fragment de la facture corrigée : listID TST identifie le code comme un code UNSPSC

<cac:Item>
  <cbc:Name>Example service</cbc:Name>
  <!-- standard identifier omitted from this fragment -->
  <cac:CommodityClassification>
    <cbc:ItemClassificationCode listID="TST">80111600</cbc:ItemClassificationCode>
  </cac:CommodityClassification>
  <!-- tax category and item attribute omitted from this fragment -->
</cac:Item>

Seul l'attribut listID diffère : absent dans la facture en échec, TST, le code UNTDID 7143 pour UNSPSC, dans la facture corrigée. Le document en échec ne signale que BR-65, puisque BR-CL-13 n'a aucune valeur d'attribut à rechercher. Sur une vraie facture, l'attribut désigne la classification dont provient votre propre code.

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 et à cac:CreditNoteLine dans un CreditNote. Lors d'un essai, un avoir dont le code de classification avait perdu son listID a signalé cette règle seule.
  • La classification de l'article est facultative. Une ligne sans cac:CommodityClassification passe à la fois cette règle et BR-CL-13.
  • Le code de classification et l'identifiant standard de l'article utilisent des attributs et des listes différents : ici listID avec UNTDID 7143, schemeID avec la liste ICD ISO 6523 sur cac:StandardItemIdentification.

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-65 (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.