Sur cette page
La réponse courte
BR-E-08 échoue lorsque le cbc:TaxableAmount d'une ventilation de la TVA de catégorie E n'est pas le contenu net exonéré du document : le cbc:LineExtensionAmount de chaque ligne de catégorie E, plus les frais au niveau racine de catégorie E, moins les remises au niveau racine de catégorie E. Calculez ce montant et écrivez-le comme base d'imposition.
Il n'y a aucune tolérance. L'équivalent pour le taux normal laisse passer un écart inférieur à 1.00 ; ici, un seul centime suffit à échouer.
Ce que la règle vérifie
La règle s'exécute pour chaque cac:TaxCategory avec un cbc:ID à E sous le régime VAT dans le cac:TaxTotal racine, et compare la base d'imposition de cette ventilation à une somme construite à partir de tout le document.
La somme prend les montants nets des lignes dont la catégorie d'article est E, ajoute le cbc:Amount des éléments cac:AllowanceCharge au niveau racine de catégorie E avec un cbc:ChargeIndicator à true, et soustrait ceux à false. Lors d'un essai, une remise exonérée au niveau du document de 5.00 à côté d'une ligne exonérée de 25.00 a été validée avec une base d'imposition de 20.00 et a fait échouer cette règle avec 25.00.
Les remises et frais au niveau de la ligne ne sont pas ajoutés à nouveau, car chaque montant net de ligne les contient déjà.
Les deux montants sont comparés exactement, en tant que nombres décimaux. Lors d'un essai, une base d'imposition de 25.01 face à des lignes exonérées de 25.00 a échoué. La notation n'a pas d'importance, donc 25 est égal à 25.00.
Rien n'est regroupé par taux. Si le document a plus d'une ventilation exonérée, chacune est comparée à la somme complète et chacune échoue, ce qui est le schéma que produit BR-E-01.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-116 | Base imposable de la catégorie de TVA | cac:TaxTotal/cac:TaxSubtotal/cbc:TaxableAmount |
| BT-118 | Code de catégorie de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID |
| BT-131 | Montant net de ligne de facture | cac:InvoiceLine/cbc:LineExtensionAmount (cac:CreditNoteLine/cbc:LineExtensionAmount in a credit note) |
| 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 d'imposition provient d'un récapitulatif fiscal stocké qui n'a pas été actualisé après la modification ou la suppression d'une ligne exonérée.
- Une remise ou des frais exonérés au niveau du document sont omis de la ventilation, ou appliqués avec le mauvais signe.
- Des montants au taux zéro ou hors du champ d'application sont ajoutés au montant exonéré, parce que les trois ne portent aucune taxe.
- Le montant est recalculé à partir de la quantité multipliée par le prix au lieu d'additionner les montants nets de ligne écrits dans le document, et l'arrondi le décale d'un centime.
- Le contenu exonéré est réparti sur plusieurs ventilations
E, chacune détenant une part du total.
Comment corriger le document
- Prenez chaque ligne dont
cac:Item/cac:ClassifiedTaxCategory/cbc:IDvautEet additionnez soncbc:LineExtensionAmountexactement tel qu'il est écrit, en conservant le signe des lignes négatives. - Ajoutez les montants des
cac:AllowanceChargeau niveau racine de catégorieEdont lecbc:ChargeIndicatorvauttrue, et soustrayez ceux où il vautfalse. - Écrivez le résultat, avec deux décimales, comme
cbc:TaxableAmountde l'uniquecac:TaxSubtotalexonéré. Son montant de taxe reste0.00. - Si une ligne ou une remise a changé de catégorie pendant votre analyse, reconstruisez aussi la ventilation qu'elle a quittée.
L'exemple enregistré a une ligne exonérée et ni remise ni frais au niveau du document.
Montant net de la ligne exonérée : 25.00 Frais exonérés au niveau du document : 0.00 ; remises exonérées au niveau du document : 0.00 Base d'imposition exonérée attendue : 25.00 + 0.00 - 0.00 = 25.00 Envoyé : 30.00, soit un écart de 5.00, 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 : une base d'imposition exonérée de 30.00 pour une ligne exonérée de 25.00
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">30.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cbc:TaxExemptionReason>Exempt from VAT</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Example service</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<!-- tax scheme omitted from this fragment -->
</cac:ClassifiedTaxCategory>
</cac:Item>
<!-- price omitted from this fragment -->
</cac:InvoiceLine>Fragment de la facture corrigée : la base d'imposition exonérée est le montant de 25.00 de la ligne exonérée
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cbc:TaxExemptionReason>Exempt from VAT</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>Seul le cbc:TaxableAmount exonéré diffère : 30.00 dans la facture en échec, 25.00 dans la facture corrigée. Le document en échec ne signale que BR-E-08. Ses totaux monétaires sont construits à partir de la ligne et concordent entre eux, et le montant de taxe de la ventilation est 0.00 dans les deux documents, donc aucune des règles sur les totaux n'est déclenchée par la mauvaise base d'imposition.
Ce que le validateur a signalé
- La facture en erreur signale BR-E-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, la règle additionne les élémentscac:CreditNoteLine. Lors d'un essai, un avoir exonéré avec une base d'imposition de 30.00 face à une ligne de 25.00 a signalé cette règle. - Signalée par l'étape EN 16931 comme un constat de gravité fatal sur le
cac:TaxCategoryde chaque ventilation exonérée. - Les ventilations au taux normal sont contrôlées par
BR-S-08, qui regroupe par taux et tolère un écart inférieur à 1.00. Rien de tel ne s'applique au montant exonéré. - La ventilation exonérée doit aussi apparaître exactement une fois (
BR-E-01), porter un motif (BR-E-10) et n'indiquer aucune taxe (BR-E-09).
Règles liées
- BR-E-01 exige l'unique ventilation exonérée dont cette règle contrôle la base d'imposition
- BR-S-08 est la version de ce contrôle pour le taux normal, regroupée par taux et avec une tolérance
- BR-E-09 exige que le montant de taxe de la même ventilation exonérée soit nul
- BR-45 exige la base d'imposition que cette règle compare au contenu exonéré
- 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-E-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.

