Sur cette page
La réponse courte
BR-S-05 échoue sur chaque ligne dont la cac:Item/cac:ClassifiedTaxCategory a un cbc:ID égal à S et un cbc:Percent qui n'est pas supérieur à zéro. Écrivez dans cbc:Percent le taux normal applicable à l'article, 20 dans l'exemple enregistré ; si aucune TVA n'est due sur l'article, donnez-lui plutôt la catégorie qui en indique la raison.
La catégorie S avec un taux de 0 % est une contradiction que la règle n'accepte pas. Les fournitures au taux zéro, exonérées et en autoliquidation ont chacune leur propre code de catégorie et leur propre ventilation.
Ce que la règle vérifie
La règle parcourt chaque catégorie de taxe d'article dont le cbc:ID vaut S sous le schéma VAT, dans cac:InvoiceLine ou cac:CreditNoteLine, et signale sur cette cac:ClassifiedTaxCategory. Deux lignes fautives donnent deux constats.
Elle passe lorsque cbc:Percent est un nombre supérieur à zéro : 0, 0.00 et les taux négatifs échouent donc tous. Omettre l'élément échoue aussi : lors d'un essai, une ligne au taux normal sans cbc:Percent a signalé cette règle et BR-S-08.
Aucune liste de taux nationaux n'est consultée. Tout nombre positif satisfait cette règle, et le validateur ne peut pas savoir s'il s'agit du bon taux pour l'article.
Les remises et frais au niveau du document sont hors de son périmètre. Lors d'un essai, une remise au niveau du document au taux normal à 0 a été signalée comme BR-S-06, avec BR-S-08, et non comme cette règle.
Une ligne négative n'a droit à aucune exception. L'exemple enregistré échoue sur une ligne de correction de quantité -1 et d'un montant net de -2.00 ; le montant porte le signe et le taux reste positif.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-151 | Code de catégorie de TVA de l'article facturé | cac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID (cac:CreditNoteLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID in a credit note) |
| BT-152 | Taux de TVA de l'article facturé | cac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:Percent (cac:CreditNoteLine/cac:Item/cac:ClassifiedTaxCategory/cbc:Percent in a credit note) |
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 :
- Le taux de la ligne est obtenu en divisant un montant de taxe par le montant net, et une ligne sans taxe calculée séparément, comme une correction, donne 0.
- Les lignes de correction, de remise ou de geste commercial sont créées avec un taux vide alors que la catégorie retombe par défaut sur
S. - Les codes de taxe source ne se distinguent que par le taux, et le mapping les envoie tous vers
S, y compris un code à 0 % prévu pour des ventes au taux zéro ou exonérées. - Un champ de taux vide est sérialisé en
0, ou l'élémentcbc:Percentest omis. - L'article a été reclassé dans le système source, et la catégorie et le taux ont été mis à jour séparément, ce qui les a désynchronisés.
Comment corriger le document
- Servez-vous de l'emplacement de chaque constat pour trouver la ligne : il pointe sur la
cac:ClassifiedTaxCategorydans l'article de la ligne. - Établissez le traitement TVA de cet article à partir du code de taxe du système source. S'il est soumis à un taux normal, écrivez ce taux dans
cbc:Percent. Une ligne de correction ou de retour prend le taux de la fourniture qu'elle corrige. - Si aucune TVA n'est due sur l'article, remplacez
cbc:IDpar la catégorie qui en indique la raison, commeZouE, et déplacez le montant de la ligne vers la ventilation de cette catégorie. Cette catégorie apporte ses propres exigences, par exemple un motif d'exonération pourE. - Reconstruisez la ventilation au taux normal pour ce taux à partir des lignes corrigées, puis recalculez son montant de taxe et le total de TVA.
BR-S-08etBR-S-09contrôlent ces montants.
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 de correction est au taux normal à 0, et la ventilation à 20 la compte toujours
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">58.50</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">11.70</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>20</cbc:Percent>
<!-- tax scheme omitted from this fragment -->
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:InvoiceLine>
<cbc:ID>3</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">-1</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">-2.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Example correction</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<!-- price omitted from this fragment -->
</cac:InvoiceLine>Fragment de la facture corrigée : la ligne de correction porte le même taux de 20 que la vente
<cac:InvoiceLine>
<cbc:ID>3</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">-1</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">-2.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Example correction</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>20</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<!-- price omitted from this fragment -->
</cac:InvoiceLine>Seul le cbc:Percent de la ligne 3 diffère : 0 dans la facture en échec, 20 dans la facture corrigée. Le document en échec signale aussi BR-S-08 sur la ventilation au taux normal à 20, car la ligne 3 n'étant plus à ce taux, le contenu à 20 donne en net 58.00 + 3.50 - 1.00 = 60.50, alors que la ventilation indique 58.50. Cet écart de 2.00 dépasse la tolérance de BR-S-08, et rétablir le taux réintègre les -2.00 dans la somme et lève les deux constats.
Ce que le validateur a signalé
- La facture en erreur signale BR-S-05 et BR-S-08. 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 aux documents UBL
InvoiceetCreditNote. Une ligne d'avoir en catégorieSau taux 0 a signalé cette règle etBR-S-08lors d'un essai. - Signalée par l'étape EN 16931 comme constat fatal sur la
cac:ClassifiedTaxCategoryde la ligne. - Les catégories à taux nul ont la règle de ligne inverse :
BR-Z-05etBR-AE-05exigent exactement 0 sur les lignes au taux zéro et en autoliquidation. - Une ligne sans aucune catégorie est un autre échec, signalé par
BR-CO-04.
Règles liées
- BR-S-08 échoue en même temps que cette règle lorsque la ligne sort de la ventilation à son taux réel
- BR-Z-05 est la règle de ligne au taux zéro, qui exige un taux d'exactement 0
- BR-CO-04 exige d'abord que chaque ligne porte une catégorie de TVA
- BR-S-01 exige une ventilation au taux normal pour les lignes 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-S-05 (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.

