Sur cette page
La réponse courte
BR-CL-22 échoue lorsqu'un cbc:TaxExemptionReasonCode contient une valeur absente de la liste de codes VATEX, et le constat pointe vers cet élément. Remplacez la valeur par le code VATEX du fondement juridique réel de l'exonération, ou supprimez le code et indiquez le motif dans cbc:TaxExemptionReason si aucun code ne convient.
L'exemple enregistré utilise VATEX-EU-EXEMPT, qui suit le modèle des vrais codes mais n'existe pas.
Ce que la règle vérifie
La règle s'exécute sur chaque cbc:TaxExemptionReasonCode du document et recherche sa valeur dans la liste VATEX dont dispose le validateur : les codes d'articles de l'UE comme VATEX-EU-132 et VATEX-EU-143-1A, les codes de catégorie VATEX-EU-AE, VATEX-EU-IC, VATEX-EU-G et VATEX-EU-O, les codes du régime de la marge VATEX-EU-D, VATEX-EU-F, VATEX-EU-I et VATEX-EU-J, et un ensemble de codes français VATEX-FR-.
La valeur est débarrassée de ses espaces de début et de fin et mise en majuscules avant la recherche : vatex-eu-132 a donc été accepté lors d'un essai. Un espace à l'intérieur de la valeur ou un préfixe manquant échoue : VATEX EU 132 et 132 ont tous deux été rejetés.
Un élément vide fait échouer cette règle et, lors d'un essai, il a aussi entraîné PEPPOL-EN16931-R008.
Un code qui échoue ici compte quand même comme motif d'exonération pour BR-E-10. Lors d'un essai, VATEX-EU-EXEMPT seul, sans texte de motif, a signalé cette règle et rien d'autre.
Seule l'appartenance à la liste est contrôlée. Savoir si un code de la liste convient à la catégorie relève de Peppol, avec PEPPOL-EN16931-P0106 et les règles voisines.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-121 | Code du motif d'exonération de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCode |
| BT-120 | Motif d'exonération de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReason |
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 code est assemblé selon un modèle,
VATEX-EU-suivi d'un libellé, au lieu d'être choisi dans la liste. - Un code d'exonération interne ou une référence juridique nationale est écrit dans l'élément de code, où seuls les codes VATEX sont acceptés.
- Le numéro d'article de loi est écrit sans le préfixe
VATEX-EU-.
Comment corriger le document
- Retrouvez le fondement juridique de l'exonération dans votre détermination fiscale.
- Recherchez le code VATEX de ce fondement, par exemple
VATEX-EU-132pour une exonération au titre de l'article 132 de la directive TVA, et écrivez-le exactement comme dans la liste. - Si aucun code ne correspond, supprimez
cbc:TaxExemptionReasonCodeet indiquez le fondement danscbc:TaxExemptionReason. Une ventilation exonérée a besoin de l'un ou de l'autre au titre deBR-E-10. - Si vous envoyez les deux, placez le code avant le texte. Lors d'un essai, le code placé après le texte a échoué à l'étape XSD.
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 : la ventilation exonérée porte un code d'exonération absent de la liste VATEX
<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:TaxExemptionReasonCode>VATEX-EU-EXEMPT</cbc:TaxExemptionReasonCode>
<cbc:TaxExemptionReason>Exempt from VAT</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>Fragment de la facture corrigée : le code non valide a disparu et le texte du motif reste
<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 en échec a <cbc:TaxExemptionReasonCode>VATEX-EU-EXEMPT</cbc:TaxExemptionReasonCode> avant son texte de motif ; la facture corrigée n'a que le texte. Le document en échec ne signale que BR-CL-22 : le texte maintient BR-E-10 satisfaite, et aucune autre règle ne lit un code inconnu. La correction présentée supprime le code, mais un vrai code VATEX au même endroit, comme VATEX-EU-132, a aussi passé toutes les étapes lors d'un essai. Le texte Exempt from VAT est une formulation d'exemple générique ; une vraie facture doit nommer le fondement réel.
Ce que le validateur a signalé
- La facture en erreur signale BR-CL-22. 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 à
InvoiceetCreditNoteen UBL. Lors d'un essai, un avoir exonéré avecVATEX-EU-EXEMPTa signalé cette règle seule. - Signalée par l'étape EN 16931. L'étape Peppol vérifie ensuite que les codes propres à une catégorie sont utilisés avec leur catégorie.
- Les ventilations au taux normal et au taux zéro ne peuvent porter aucun motif d'exonération, valide ou non ;
BR-S-10etBR-Z-10le rejettent à cet endroit.
Règles liées
- BR-E-10 exige un code ou un texte de motif d'exonération sur une ventilation exonérée
- PEPPOL-EN16931-P0106 réserve le code VATEX-EU-IC de la liste aux ventilations de livraisons intracommunautaires
- BR-S-10 interdit tout motif d'exonération sur une ventilation au taux normal
- BR-IC-10 demande un motif d'exonération sur les ventilations de livraisons intracommunautaires
- 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-CL-22 (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.

