Sur cette page
La réponse courte
BR-E-10 échoue lorsqu'une ventilation de la TVA de catégorie E n'a ni cbc:TaxExemptionReason ni cbc:TaxExemptionReasonCode dans son cac:TaxCategory. Indiquez pourquoi la livraison est exonérée, sous forme de texte, de code de la liste VATEX, ou des deux.
L'exonération peut reposer sur de nombreux fondements juridiques, il n'existe donc pas de formule unique à coder en dur. La valeur doit provenir de ce qui a conduit votre système à traiter la livraison comme exonérée.
Ce que la règle vérifie
La règle sélectionne chaque cac:TaxCategory avec un cbc:ID à E sous le régime fiscal VAT, dans cac:TaxTotal/cac:TaxSubtotal sous la racine du document, et passe lorsqu'il a un enfant cbc:TaxExemptionReason ou un enfant cbc:TaxExemptionReasonCode.
Un code seul suffit. Le fichier de test exonéré valide, avec son texte remplacé par un cbc:TaxExemptionReasonCode à VATEX-EU-132, passe toutes les étapes.
Le contenu du texte n'est pas examiné ; tout texte non vide passe. Le validateur ne peut pas vous dire si l'exonération indiquée est la bonne.
Les codes sont contrôlés ailleurs. Une valeur hors de la liste VATEX est rejetée par BR-CL-22, et le code d'autoliquidation VATEX-EU-AE sur une ventilation exonérée est rejeté par la règle Peppol PEPPOL-EN16931-P0107, même avec un texte de motif à côté.
Un élément cbc:TaxExemptionReason vide suffit pour cette règle et est ensuite rejeté par PEPPOL-EN16931-R008.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-118 | Code de catégorie de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID |
| BT-120 | Motif d'exonération de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReason |
| BT-121 | Code du motif d'exonération de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCode |
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 :
- L'exonération n'est enregistrée dans le système source que sous forme de code fiscal, sans description ni référence juridique que l'export pourrait utiliser.
- Le motif existe par article ou par client, et l'export construit la ventilation de la TVA à partir de la seule catégorie et du seul taux.
- La formulation est imprimée sur le PDF à partir d'un modèle et ne fait jamais partie des données structurées.
- Les valeurs vides sont supprimées lors de la sérialisation, et le motif était vide pour ce code fiscal.
- Une livraison au taux zéro ou hors du champ de la TVA a été associée à
Epar une règle fourre-tout, si bien qu'aucun motif d'exonération n'existe pour elle. Dans ce cas, c'est l'attribution de la catégorie qui est le défaut, et elle se corrige là où la catégorie est décidée.
Comment corriger le document
- Déterminez pourquoi la livraison est exonérée : sur quelle disposition ou quel régime votre détermination fiscale s'est appuyée. Si elle est réellement exonérée, la catégorie reste
E. - Ajoutez
cbc:TaxExemptionReasonavec une formulation qui énonce ce fondement, oucbc:TaxExemptionReasonCodeavec le code VATEX correspondant, dans lecac:TaxCategoryde la ventilationE. Si aucun code de la liste ne convient, envoyez du texte. - Placez les éléments dans l'ordre UBL : après
cbc:Percentet avantcac:TaxScheme, avec le code avant le texte lorsque les deux sont envoyés. Dans le mauvais ordre, le document échoue à l'étape XSD et les étapes suivantes sont ignorées. - Stockez le motif avec le code fiscal ou l'enregistrement d'exonération à la source, afin que l'export n'ait jamais à en inventer un.
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 exonérée qui ne donne aucun motif
<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>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>Fragment de la facture corrigée : texte de motif ajouté à la catégorie de taxe
<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>La facture corrigée porte cbc:TaxExemptionReason dans la catégorie de taxe E et la facture en échec non ; cet élément est toute la différence. Le document en échec ne signale que BR-E-10. Le texte du fichier de test, Exempt from VAT, est une formulation générique qui satisfait le contrôle ; une vraie facture devrait nommer le fondement réel.
Ce que le validateur a signalé
- La facture en erreur signale BR-E-10. 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. Un avoir exonéré sans motif signale la même règle. - Seule la catégorie
Esous le régime fiscalVATest concernée. L'autoliquidation a sa propre règle,BR-AE-10. - La règle ne lit que la ventilation de la TVA. La catégorie sur une ligne, ou sur une remise ou des frais au niveau du document, n'est pas l'endroit où le motif est recherché.
- La taxe dans une ventilation exonérée est une autre question : un montant de taxe de 5.00 y entraîne
BR-E-09etBR-CO-17.
Règles liées
- BR-AE-10 est la même exigence pour les ventilations en autoliquidation, où le motif est fixe
- PEPPOL-EN16931-R008 rejette un élément de motif d'exonération laissé vide
- BR-CO-17 contrôle le montant de taxe de la ventilation exonérée par rapport à son taux de 0
- 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-E-10 (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.

