Sur cette page
La réponse courte
BR-S-09 échoue lorsqu'une ventilation de la TVA de catégorie S porte un cbc:TaxAmount qui ne correspond pas à son cbc:TaxableAmount multiplié par son cbc:Percent. Recalculez le montant comme base imposable x taux / 100, arrondi à deux décimales, et mettez à jour les totaux qui l'incluent.
Elle arrive normalement avec BR-CO-17, qui fait la même comparaison sur chaque ventilation quelle que soit sa catégorie ; une ventilation au taux normal avec un montant faux signale donc les deux. Une seule correction lève la paire.
Ce que la règle vérifie
La règle sélectionne les éléments cac:TaxCategory dont le cbc:ID vaut S et le cac:TaxScheme/cbc:ID vaut VAT, dans un cac:TaxSubtotal d'un cac:TaxTotal placé directement sous la racine du document. Les ventilations de toute autre catégorie sont laissées à BR-CO-17 et à leurs propres règles de catégorie.
Elle calcule base imposable x taux / 100, arrondi à deux décimales, et passe lorsque le montant de taxe s'écarte de moins de 1.00 de ce montant. Un écart d'exactement 1.00 échoue. Sur 25.00 à 20 %, 5.99 passe et 6.00 échoue ; de même 4.01 et 4.00 du côté inférieur.
La tolérance tient à la façon dont le contrôle publié est écrit ; elle ne dit rien de ce qui est acceptable sur une facture. Un montant faux de 0.90 est validé et reste faux de 0.90.
Contrairement à BR-CO-17, il n'y a pas de branche pour un taux absent. Une ventilation au taux normal sans cbc:Percent échoue à cette règle, ainsi qu'à BR-CO-17 et BR-48, qui exige le taux.
Les montants sont comparés en valeur absolue ; le signe n'est donc pas examiné.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-118 | Code de catégorie de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID |
| BT-117 | Montant de la TVA de la catégorie | cac:TaxTotal/cac:TaxSubtotal/cbc:TaxAmount |
| BT-116 | Base imposable de la catégorie de TVA | cac:TaxTotal/cac:TaxSubtotal/cbc:TaxableAmount |
| BT-119 | Taux de la catégorie de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:Percent |
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 montant de taxe de la ventilation est une somme de TVA par ligne, et une ligne au taux normal a été taxée à un autre taux que celui de la ventilation dans laquelle elle a été regroupée.
- Deux taux normaux sont utilisés, et leur taxe a été additionnée dans une seule ventilation alors que les bases imposables étaient séparées, ou l'inverse.
- Le taux de la ventilation vient d'une table de codes de taxe et le montant de taxe d'une écriture passée sous un taux antérieur.
- La base imposable a été réduite par une remise au niveau du document après le calcul de la TVA.
- Le taux est écrit
0.2au lieu de20.
Comment corriger le document
- Construisez une ventilation au taux normal pour chaque taux distinct, afin que chaque ventilation ait un seul
cbc:Percent. - Pour chacune, calculez
cbc:TaxableAmountxcbc:Percent/ 100 en arithmétique décimale, arrondissez à deux décimales, et écrivez le résultat dans lecbc:TaxAmountde la ventilation. - Si cela diffère de la TVA comptabilisée par votre système, résolvez l'écart à la source. La catégorie reste
S; la règle porte sur le montant, pas sur la classification. - Refaites la somme des montants de taxe des ventilations dans
cac:TaxTotal/cbc:TaxAmount(BR-CO-14) et recalculezcbc:TaxInclusiveAmountetcbc:PayableAmount.
L'exemple enregistré a une seule ventilation au taux normal.
Base imposable 25.00, taux 20 Taxe calculée : 25.00 x 20 / 100 = 5.00 Envoyé : 6.50, soit un écart de 1.50, hors de la tolérance de moins de 1.00 Montant de taxe corrigé : 5.00
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 : une ventilation au taux normal avec 6.50 de TVA sur 25.00 à 20 %
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">6.50</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>Fragment de la facture corrigée : le montant vaut 25.00 x 20 / 100
<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>Dans la ventilation, seul cbc:TaxAmount diffère, 6.50 contre 5.00. Hors de ce fragment, la facture corrigée a aussi un total de TVA de 5.00 au lieu de 6.50, et un total TTC et un montant à payer de 30.00 au lieu de 31.50, car le document en échec avait reporté le mauvais montant dans ses totaux. Le document en échec signale aussi BR-CO-17, la forme indépendante de la catégorie du même contrôle. Rien d'autre ne se déclenche, puisque ces totaux étaient cohérents entre eux.
Ce que le validateur a signalé
- La facture en erreur signale BR-CO-17 et BR-S-09. 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 de la même façon aux documents UBL
InvoiceetCreditNote; un avoir avec les mêmes chiffres signale les deux mêmes règles. - Seule la catégorie
Ssous le schéma fiscalVATest concernée. LorsqueBR-CO-17est signalé sansBR-S-09, cherchez la ventilation fautive dans une autre catégorie. - Cette règle prend la base imposable telle quelle. La correspondance de ce montant avec les lignes, remises et frais au taux normal est contrôlée par
BR-S-08.
Règles liées
- BR-CO-17 applique le même calcul à chaque ventilation de la TVA et ajoute les cas du taux zéro et de l'absence de taux
- BR-S-08 contrôle la base imposable au taux normal par rapport aux lignes, remises et frais
- BR-CO-14 contrôle le total de TVA par rapport à la somme des montants des ventilations
- BR-S-01 exige d'abord que la ventilation au taux normal existe
- 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-20.
La définition officielle de BR-S-09 (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.

