Sur cette page
La réponse courte
BR-O-06 échoue lorsqu'un cac:AllowanceCharge avec cbc:ChargeIndicator false a une cac:TaxCategory O qui contient cbc:Percent. L'exemple enregistré donne au Loyalty discount de 5.00 un taux de 0. Supprimez cet élément et laissez cbc:ID et cac:TaxScheme tels quels.
Pour une remise au taux zéro ou exonérée, l'élément de taux sert à dire 0. Pour O, c'est l'absence de l'élément qui l'exprime, de même que la ventilation O de l'exemple enregistré n'en porte aucun.
Ce que la règle vérifie
Chaque remise dont la catégorie de taxe est O sous le schéma VAT est contrôlée, et le constat pointe vers cette cac:TaxCategory. Rien ne lie la règle à la racine du document, donc une remise de ligne compte aussi : lors d'un essai, une remise de ligne en O avec un taux de 0 a signalé cette règle sur la ligne, avec l'avertissement UBL-CR-558 pour une catégorie de taxe sur une remise de ligne.
Seule la présence de l'élément compte. Le 0 enregistré échoue, et lors d'un essai un taux de 20 sur la même remise de fidélité a donné le même constat unique.
Écrire l'élément vide n'est pas une échappatoire : un cbc:Percent vide dans la catégorie de taxe de la remise a échoué à l'étape XSD lors d'un essai, si bien qu'aucune règle métier ne s'est exécutée.
Cette règle ne lit que les remises. Des frais O avec un taux relèvent de BR-O-07, et une ligne O avec un taux de BR-O-05.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-95 | Code de catégorie de TVA de la remise au niveau du document | cac:AllowanceCharge[cbc:ChargeIndicator = false]/cac:TaxCategory/cbc:ID |
| BT-96 | Taux de TVA de la remise au niveau du document | cac:AllowanceCharge[cbc:ChargeIndicator = false]/cac:TaxCategory/cbc:Percent |
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 sérialiseur des remises écrit un taux pour chaque catégorie et enregistre zéro pour les catégories sans TVA.
- La remise a d'abord été créée au taux zéro avec un taux de 0, puis passée en
Oen ne changeant que son code. - Le système source ne peut pas conserver un taux vide sur une remise et envoie 0 à la place.
Comment corriger le document
- Assurez-vous que la remise relève vraiment de
O: elle doit réduire des montants eux-mêmes non soumis à la TVA, comme la ligne de 25.00 dans l'exemple enregistré. - Supprimez
cbc:Percentde lacac:TaxCategoryde la remise, de sorte quecbc:IDOsoit directement suivi decac:TaxScheme. - Laissez les montants tels quels. La remise fait toujours passer la base imposable
Ode 25.00 à 20.00, avec ou sans l'élément de taux. - Dans le sérialiseur, écrivez le taux des remises pour toutes les catégories sauf
O.
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 remise de fidélité O indique un taux de 0
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Loyalty discount</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="GBP">5.00</cbc:Amount>
<cac:TaxCategory>
<cbc:ID>O</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>Fragment de la facture corrigée : la remise de fidélité O n'a pas d'élément de taux
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Loyalty discount</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="GBP">5.00</cbc:Amount>
<cac:TaxCategory>
<cbc:ID>O</cbc:ID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>La facture en échec a cbc:Percent 0 entre cbc:ID et cac:TaxScheme dans la catégorie de taxe du Loyalty discount ; dans la facture corrigée, cet élément est absent. Rien d'autre ne diffère, et le document en échec ne signale que BR-O-06, situé sur la cac:TaxCategory du premier cac:AllowanceCharge.
Ce que le validateur a signalé
- La facture en erreur signale BR-O-06. 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, où la remise a la même forme. Réécrite en avoir, la facture en échec n'a signalé que cette règle lors d'un essai. - Les remises des autres catégories sans TVA fonctionnent à l'inverse : une remise au taux zéro ou exonérée exige un taux de 0 (
BR-Z-06,BR-E-06), si bien que faire passer une remise entre ces catégories etOimplique d'ajouter ou de retirer l'élément. - Tant qu'elle est en
O, la même remise exclut aussi les identifiants TVA selonBR-O-03et est déduite de la base imposableOque contrôleBR-O-08.
Règles liées
- BR-O-05 interdit le même élément de taux sur une ligne non soumise à la TVA
- BR-O-07 l'interdit sur des frais au niveau du document en catégorie O
- BR-Z-06 exige sur une remise au taux zéro le taux de 0 que cette règle interdit pour O
- BR-O-03 interdit les identifiants TVA sur un document ayant une remise non soumise à la TVA
- 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-28.1 : source vérifiée le 2026-09-28, explication mise à jour le 2026-09-28.
La définition officielle de BR-O-06 (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.

