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.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-158 | Identifiant de classification de l'article | cac:InvoiceLine/cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode (cac:CreditNoteLine/cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode in a credit note) |
| BT-158 | Identifiant de classification de l'article : son attribut d'identifiant de schéma | cac:InvoiceLine/cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode/@listID |
| BT-158 | Identifiant de classification de l'article : son attribut de version de schéma | cac: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
UNSPSCouCPV, 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
listVersionIDet 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
- Identifiez le système de classification dont provient chaque code : CPV dans les marchés publics, UNSPSC, le Système harmonisé ou un autre.
- Cherchez son code dans la liste UNTDID 7143 publiée avec les listes de codes Peppol BIS.
STIcorrespond à CPV,TSTà UNSPSC etHSau Système harmonisé ; les codes sont en majuscules. - Écrivez le code dans l'attribut
listIDdecbc:ItemClassificationCode, et ajoutezlistVersionIDsi la classification a besoin d'une version pour être lue correctement. - 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é
- La facture en erreur signale BR-65. 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 uneInvoiceet àcac:CreditNoteLinedans unCreditNote. Lors d'un essai, un avoir dont le code de classification avait perdu sonlistIDa signalé cette règle seule. - La classification de l'article est facultative. Une ligne sans
cac:CommodityClassificationpasse à la fois cette règle etBR-CL-13. - Le code de classification et l'identifiant standard de l'article utilisent des attributs et des listes différents : ici
listIDavec UNTDID 7143,schemeIDavec la liste ICD ISO 6523 surcac:StandardItemIdentification.
Règles liées
- BR-CL-13 vérifie que la valeur de listID est un code UNTDID 7143
- BR-64 est le contrôle d'attribut équivalent pour l'identifiant standard de l'article
- BR-CL-21 contrôle le code de schéma de l'identifiant standard de l'article par rapport à la liste ICD
- 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-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.

