Sur cette page
La réponse courte
BR-E-09 échoue lorsque le cbc:TaxAmount d'un cac:TaxSubtotal de catégorie E est autre chose que zéro. Mettez-le à 0.00, puis retirez le même montant de cac:TaxTotal/cbc:TaxAmount, cbc:TaxInclusiveAmount et cbc:PayableAmount.
Si la TVA est réellement due sur ces livraisons, elles ne sont pas exonérées, et c'est la catégorie sur les lignes et dans la ventilation qu'il faut corriger.
Ce que la règle vérifie
La règle lit le cbc:TaxAmount à côté de chaque cac:TaxCategory avec un cbc:ID à E sous le régime VAT dans le cac:TaxTotal racine, et exige qu'il soit égal à zéro en tant que nombre ; 0 et 0.00 passent donc tous deux.
Aucun arrondi ni aucune tolérance ne s'applique. Lors d'un essai, un montant de taxe de 0.40 dans la ventilation exonérée, avec les totaux ajustés en conséquence, a fait échouer cette règle et rien d'autre : BR-CO-17 l'a laissé passer, car à un taux de 0 cette règle demande seulement un montant qui, arrondi à l'entier, vaut zéro.
Le total de TVA du document ne fait pas partie de ce test. Lors d'un essai, 5.00 dans la ventilation exonérée avec le total de TVA laissé à 0.00 a signalé BR-CO-14 en plus de cette règle et de BR-CO-17.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-117 | Montant de la TVA de la catégorie | cac:TaxTotal/cac:TaxSubtotal/cbc:TaxAmount |
| BT-118 | Code de catégorie de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID |
| BT-110 | Montant total de la TVA de la facture | cac:TaxTotal/cbc:TaxAmount |
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 calculé avec un taux par défaut pour chaque catégorie, au lieu du taux propre à la catégorie.
- L'article était taxé dans le système source et a été reclassé comme exonéré plus tard, mais le montant de taxe stocké a été conservé.
- La TVA de toute la facture est calculée une fois et répartie sur les ventilations au prorata de leurs bases d'imposition.
- Un écart d'arrondi provenant des autres ventilations est reporté dans la dernière ventilation écrite, qui est la ventilation exonérée.
Comment corriger le document
- Confirmez à partir de votre détermination fiscale que les livraisons de la ventilation exonérée sont bien exonérées. Si c'est le cas, leur montant de taxe de ventilation est
0.00. - Mettez
cbc:TaxAmountà0.00dans lecac:TaxSubtotalexonéré. - Recalculez
cac:TaxTotal/cbc:TaxAmountcomme la somme des montants de taxe des ventilations, puiscbc:TaxInclusiveAmountetcbc:PayableAmountà partir de celui-ci. Dans l'exemple enregistré, chacun des trois baisse de 5.00. - Si la TVA est en fait due, donnez aux lignes la catégorie applicable, comme
Savec son taux, et construisez plutôt cette ventilation. C'est une décision fiscale à prendre à la source, pas une modification à faire dans le seul XML.
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 : 5.00 de TVA dans la ventilation exonérée, reportés dans les totaux
<cac:TaxTotal>
<cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">5.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:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="GBP">25.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="GBP">30.00</cbc:TaxInclusiveAmount>
<!-- allowance, charge, prepaid and rounding amounts omitted from this fragment -->
<cbc:PayableAmount currencyID="GBP">30.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>Fragment de la facture corrigée : aucune TVA dans la ventilation exonérée, et des totaux sans elle
<cac:TaxTotal>
<cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
<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>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="GBP">25.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="GBP">25.00</cbc:TaxInclusiveAmount>
<!-- allowance, charge, prepaid and rounding amounts omitted from this fragment -->
<cbc:PayableAmount currencyID="GBP">25.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>La facture en échec facture 5.00 de TVA dans la ventilation exonérée et les reporte jusqu'à un total de TVA de 5.00, un total TVA comprise de 30.00 et un montant à payer de 30.00 ; la facture corrigée a 0.00, 25.00 et 25.00. Le document en échec signale aussi BR-CO-17 : à un taux de 0, le montant de taxe de la ventilation doit s'arrondir à zéro, et 5.00 ne le fait pas. Les totaux concordent entre eux, donc BR-CO-14 et BR-CO-15 restent muets.
Ce que le validateur a signalé
- La facture en erreur signale BR-CO-17 et BR-E-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 aux documents UBL
InvoiceetCreditNote. Lors d'un essai, un avoir exonéré avec 5.00 de taxe dans sa ventilation a signalé cette règle etBR-CO-17. - Signalée par l'étape EN 16931 comme un constat de gravité fatal sur le
cac:TaxCategoryde la ventilation exonérée. - Les ventilations en autoliquidation ont la même exigence selon
BR-AE-09, et les ventilations au taux zéro selonBR-Z-09.
Règles liées
- BR-CO-17 est signalé à côté de cette règle lorsque le montant de taxe exonéré ne s'arrondit pas à zéro
- BR-AE-09 exige de la même façon un montant de taxe nul dans une ventilation en autoliquidation
- BR-CO-14 se déclenche aussi si le montant de taxe de la ventilation et le total de TVA ne sont pas modifiés ensemble
- BR-E-10 exige le motif d'exonération dans la même ventilation exonérée
- 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-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.

