Sur cette page
La réponse courte
BR-S-08 échoue lorsque le cbc:TaxableAmount d'une ventilation de la TVA au taux normal ne correspond pas à ce que le document contient à ce taux. Prenez le cbc:Percent de la ventilation, additionnez le cbc:LineExtensionAmount de chaque ligne de catégorie S à ce taux, ajoutez les frais au niveau du document de catégorie S à ce taux, soustrayez les remises au niveau du document de catégorie S à ce taux, et écrivez le résultat comme base imposable.
Le regroupement se fait par taux autant que par catégorie. Les lignes à un autre taux normal, et les lignes d'autres catégories, appartiennent à d'autres ventilations.
Ce que la règle vérifie
La règle s'exécute une fois pour chaque ventilation dont la cac:TaxCategory a un cbc:ID égal à S sous le schéma VAT, avec le taux propre à cette ventilation. Les taux sont comparés comme des nombres, donc 20 dans la ventilation correspond à 20.00 sur une ligne.
D'abord, il doit exister quelque chose au taux normal à ce taux : une ligne, ou une remise ou des frais portant une cac:TaxCategory. Une ventilation à 19 % sur des lignes à 20 % échoue sur ce point, quels que soient ses montants.
Ensuite, la base imposable est comparée à : les montants nets des lignes, plus les frais au niveau du document, moins les remises au niveau du document, chacun filtré sur la catégorie S et le même taux. Seuls les éléments cac:AllowanceCharge placés directement sous la racine du document entrent dans la somme ; les remises et frais de ligne sont déjà inclus dans le montant net de la ligne.
La comparaison a une tolérance. La règle passe lorsque la base imposable s'écarte de moins de 1.00 du montant calculé, et échoue pour un écart d'exactement 1.00. Pour un montant calculé de 58.50, des bases imposables de 57.51 et 59.49 passent ; 57.50 et 59.50 échouent.
Être dans la tolérance ne rend pas le montant correct. Une base imposable de 59.40 pour un montant calculé de 58.50 a passé toutes les étapes de validation lors de notre essai, et elle reste fausse de 0.90. Envoyez le montant calculé.
Deux ventilations pour le même taux normal échouent toutes deux, car chacune est comparée à la somme complète pour ce taux.
| Terme | Signification | Élément UBL |
|---|---|---|
| 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 |
| BT-131 | Montant net de ligne de facture | cac:InvoiceLine/cbc:LineExtensionAmount |
| BT-152 | Taux de TVA de l'article facturé | cac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:Percent |
| BT-99 | Montant des charges ou frais au niveau du document | cac:AllowanceCharge[cbc:ChargeIndicator = true]/cbc:Amount |
| BT-92 | Montant de la remise au niveau du document | cac:AllowanceCharge[cbc:ChargeIndicator = false]/cbc:Amount |
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 :
- La base imposable est construite à partir des seules lignes, et les frais ou la remise au niveau du document sont oubliés, ou appliqués avec le mauvais signe.
- Les lignes sont regroupées par catégorie mais pas par taux, si bien que deux taux normaux se retrouvent dans une seule ventilation.
- Les lignes négatives, comme les corrections ou les retours, sont ignorées lors de la somme.
- Des lignes au taux zéro ou exonérées sont incluses dans la base imposable au taux normal.
- Le taux de la ventilation provient d'une autre source que les taux des lignes, et les deux divergent, par exemple après un changement de taux.
- La base imposable est déduite à rebours d'un montant TTC au lieu d'être la somme des montants nets du document.
Comment corriger le document
- Rassemblez les lignes dont la
cac:Item/cac:ClassifiedTaxCategorya uncbc:IDégal àS, et regroupez-les parcbc:Percent. - Pour chaque taux, additionnez les valeurs
cbc:LineExtensionAmountdes lignes, ajoutez les montants descac:AllowanceChargeà la racine dont lecbc:ChargeIndicatorvauttrueen catégorieSà ce taux, et soustrayez ceux àfalse. Utilisez une arithmétique décimale. - Émettez exactement un
cac:TaxSubtotalpar taux, avec ce montant commecbc:TaxableAmountet le taux commecbc:Percent. - Recalculez le
cbc:TaxAmountde la ventilation à partir de la base imposable corrigée.BR-S-09etBR-CO-17le contrôlent, et le total de TVA et le total TTC en découlent.
L'exemple enregistré a deux lignes au taux normal de 20 %, une ligne au taux zéro, et une remise et des frais au niveau du document, tous deux au taux normal de 20 %.
Lignes au taux normal de 20 % : 58.00 + (-2.00) = 56.00 Frais au niveau du document, S à 20 % : + 3.50 Remise au niveau du document, S à 20 % : - 1.00 Base imposable pour S à 20 % : 56.00 + 3.50 - 1.00 = 58.50 La ligne au taux zéro de 10.00 ne fait pas partie de ce montant Envoyé : 60.00, soit un écart de 1.50, donc la règle échoue
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 : 60.00 de base imposable, alors que le contenu au taux normal de 20 % donne en net 58.50
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<!-- reason code and reason omitted from this fragment -->
<cbc:Amount currencyID="GBP">1.00</cbc:Amount>
<!-- tax category S at 20 omitted from this fragment -->
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<!-- reason code, reason, multiplier and base amount omitted from this fragment -->
<cbc:Amount currencyID="GBP">3.50</cbc:Amount>
<!-- tax category S at 20 omitted from this fragment -->
</cac:AllowanceCharge>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">60.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">11.70</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>
<!-- Standard rated lines at 20: LineExtensionAmount 58.00 and -2.00. Zero rated line: 10.00 -->Fragment de la facture corrigée : 58.00 - 2.00 + 3.50 - 1.00 = 58.50
<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>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>Seul le cbc:TaxableAmount au taux normal diffère : 60.00 dans la facture en échec, 58.50 dans la facture corrigée. Le document ne signale que BR-S-08. Le montant de taxe de 11.70 s'écarte de 0.30 de 20 % de 60.00, ce qui est dans la tolérance de BR-CO-17 et BR-S-09, et le total de TVA et les totaux du document sont identiques dans les deux documents.
Ce que le validateur a signalé
- La facture en erreur signale 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. Dans un avoir, les lignes sont descac:CreditNoteLineet la somme est construite de la même façon ; un avoir avec les mêmes 60.00 signale la même règle. - Seules les ventilations au taux normal sont concernées. Les autres catégories de TVA ont leurs propres règles de base imposable.
- La règle ne regarde pas
cac:LegalMonetaryTotal. Le total hors TVA est contrôlé séparément parBR-CO-13. - Une ligne au taux normal à un taux sans ventilation n'est pas signalée par cette règle, qui part des ventilations présentes.
Règles liées
- BR-S-09 contrôle le montant de taxe au taux normal calculé à partir de cette base imposable
- BR-S-01 exige une ventilation au taux normal dès qu'il existe un contenu au taux normal
- BR-CO-13 contrôle le total hors TVA, construit à partir des mêmes lignes, remises et frais
- BR-CO-10 contrôle la somme des montants nets des lignes qui alimentent ce montant
- 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-08 (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.

