Sur cette page
La réponse courte
BR-CL-17 échoue pour chaque cac:TaxCategory/cbc:ID dont la valeur n'est pas un code de catégorie de TVA autorisé. Cet élément apparaît dans la ventilation de la TVA et sur les remises et frais au niveau du document, et le constat pointe vers le cbc:ID fautif. Remplacez la valeur par le code correspondant : dans l'exemple enregistré, la ventilation indique SR là où le code du taux normal est S.
Traduisez chaque code fiscal interne en l'un des dix codes autorisés avant l'export. Les codes des lignes sont contrôlés séparément, par BR-CL-18.
Ce que la règle vérifie
La règle s'exécute sur chaque cbc:ID enfant direct d'un cac:TaxCategory, où que se trouve cette catégorie de taxe. Elle ne lit pas cac:ClassifiedTaxCategory sur les lignes.
Les valeurs acceptées sont AE, L, M, E, S, Z, G, O, K et B. Les espaces qui entourent la valeur sont ignorés, mais un espace à l'intérieur de la valeur, une mauvaise casse ou tout autre code échoue : lors d'un essai, s, A et 20 ont tous été rejetés.
Un cbc:ID vide fait aussi échouer cette règle et, lors d'un essai, il a également entraîné PEPPOL-EN16931-R008 pour l'élément vide.
Seule l'appartenance à la liste est contrôlée. Savoir si la catégorie convient aux articles relève des règles de catégorie, comme BR-S-01 et BR-S-08 pour le taux normal.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-118 | Code de catégorie de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID |
| BT-95 | Code de catégorie de TVA de la remise au niveau du document | cac:AllowanceCharge[cbc:ChargeIndicator = false]/cac:TaxCategory/cbc:ID |
| BT-102 | Code de catégorie de TVA des charges ou frais au niveau du document | cac:AllowanceCharge[cbc:ChargeIndicator = true]/cac:TaxCategory/cbc:ID |
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 :
- Un code fiscal du logiciel comptable comme
SR,T1ouSTDest écrit tel quel dans le XML au lieu d'être traduit. - Le code est mis en minuscules quelque part dans la chaîne de traitement.
- Un code est repris de la liste UNCL5305 complète, qui contient des codes que cette règle n'accepte pas, comme
A. - Un taux, comme
20, est écrit dans le champ du code de catégorie.
Comment corriger le document
- Utilisez l'emplacement du constat pour voir quelle catégorie de taxe contient la mauvaise valeur : une ventilation sous
cac:TaxTotal/cac:TaxSubtotal, ou uncac:AllowanceChargeplacé à la racine. - Faites correspondre le code interne à sa catégorie de TVA :
Staux normal,Ztaux zéro,Eexonéré,AEautoliquidation,Klivraison intracommunautaire,Gexportation hors de l'UE,Ohors du champ de la TVA,LetMpour les impôts des îles Canaries et de Ceuta et Melilla,Bpour la scission des paiements en Italie. - Utilisez le même code sur les lignes, les remises, les frais et la ventilation pour une même opération, afin que la ventilation corresponde toujours aux éléments qu'elle totalise.
- Tenez la correspondance dans une seule table et faites échouer l'export pour tout code qu'elle ne contient pas.
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 : la ligne est codée S, la ventilation SR
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>SR</cbc:ID>
<cbc:Percent>20</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:Item>
<cbc:Name>Example service</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>20</cbc:Percent>
<!-- tax scheme omitted from this fragment -->
</cac:ClassifiedTaxCategory>
</cac:Item>Fragment de la facture corrigée : la ventilation utilise le code S du taux normal
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>20</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>La facture en échec écrit SR dans le cac:TaxCategory/cbc:ID de la ventilation et la facture corrigée écrit S ; c'est la seule différence. Le document en échec signale aussi BR-S-01 : sa ligne est toujours au taux normal, et une ventilation codée SR ne compte pas comme une ventilation au taux normal. Corriger le code efface les deux constats.
Ce que le validateur a signalé
- La facture en erreur signale BR-CL-17 et BR-S-01. 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 à
InvoiceetCreditNoteen UBL. Lors d'un essai, un avoir avecSRdans sa ventilation a signalé les deux mêmes règles. - Sur une remise au niveau du document, l'effet atteint les montants. Lors d'un essai, une remise codée
SRa été signalée par cette règle et parBR-S-08, car la remise sortait de la base imposable au taux normal. - Le même mauvais code sur la ligne et dans la ventilation n'a signalé que
BR-CL-17etBR-CL-18lors d'un essai. La ligne et la ventilation concordaient entre elles, si bien qu'aucune règle de catégorie ne s'est déclenchée, mais le document est tout de même rejeté. - Signalée par l'étape EN 16931 ; l'exemple enregistré réussit l'étape Peppol.
Règles liées
- BR-CL-18 applique la même liste de codes à la catégorie de TVA de chaque ligne
- BR-S-01 est signalée avec cette règle lorsqu'une ventilation au taux normal est mal codée
- BR-47 exige le code de catégorie de la ventilation que cette règle contrôle
- BR-S-08 se déclenche lorsqu'une remise ou des frais mal codés sortent de la base imposable au taux normal
- 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-CL-17 (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.

