Sur cette page
La réponse courte
BR-O-05 échoue lorsqu'un article classé O a un cbc:Percent dans sa cac:Item/cac:ClassifiedTaxCategory ; dans l'exemple enregistré, la ligne indique 0. Supprimez l'élément cbc:Percent de cette catégorie et gardez cbc:ID et cac:TaxScheme.
Un taux de 0 reste un taux. Une ligne non soumise à la TVA n'a aucun taux, et c'est cette absence qui la distingue d'une ligne au taux zéro.
Ce que la règle vérifie
La règle s'exécute sur chaque catégorie de taxe d'article dont le cbc:ID vaut O sous le schéma VAT, dans cac:InvoiceLine comme dans cac:CreditNoteLine, et signale sur cette cac:ClassifiedTaxCategory. Deux lignes O avec un taux ont donné deux constats lors d'un essai.
Elle ne demande qu'une chose : si cbc:Percent existe. La valeur ne change rien : 0 échoue, et 20 aussi lors d'un essai.
Un cbc:Percent vide ne permet pas de contourner la règle. Le schéma exige un nombre dans cet élément, et un élément vide a échoué à l'étape XSD lors d'un essai, si bien que les règles EN 16931 ne se sont jamais exécutées.
La ventilation de la TVA est hors du périmètre de cette règle. Lors d'un essai, un taux de 0 dans la ventilation O, sans taux sur la ligne, a passé toutes les étapes ; omettre le taux de la ventilation est aussi permis, car BR-48 n'en exige pas pour O.
Les remises et frais au niveau du document ont leurs propres équivalents. Une remise O avec un taux de 0 a signalé BR-O-06, et non cette règle, lors d'un essai.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-151 | Code de catégorie de TVA de l'article facturé | cac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID (cac:CreditNoteLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID in a credit note) |
| BT-152 | Taux de TVA de l'article facturé | cac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:Percent (cac:CreditNoteLine/cac:Item/cac:ClassifiedTaxCategory/cbc:Percent in a credit note) |
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 écrit
cbc:Percentà partir d'un champ de taux sur chaque ligne, et les articles non taxés ont un taux de zéro. - Un seul modèle construit la catégorie de taxe de l'article pour toutes les catégories, avec l'élément de taux toujours présent.
- Le système source ne peut pas stocker un taux absent et enregistre 0, ce qui convient aux lignes au taux zéro mais pas à
O. - La ligne est passée de
ZouEàOdans le mapping sans que son taux soit retiré.
Comment corriger le document
- Vérifiez que la ligne n'est vraiment pas soumise à la TVA. Si elle est en réalité au taux zéro ou exonérée, c'est la catégorie qui est fautive, et
ZouEgardent leur taux de 0. - Pour les lignes
O, omettez complètementcbc:Percentdecac:Item/cac:ClassifiedTaxCategoryau lieu de l'écrire vide ou à 0. - Faites dépendre l'omission de la catégorie dans le sérialiseur, afin que le taux soit écrit pour toutes les autres catégories et jamais pour
O. - Ne touchez pas aux montants. Le montant net de la ligne et la base imposable de la ventilation ne changent pas quand l'élément de taux disparaît.
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 : un article de catégorie O qui indique un taux de 0
<cac:Item>
<cbc:Name>Example service</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>O</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>Fragment de la facture corrigée : l'article de catégorie O n'a pas d'élément de taux
<cac:Item>
<cbc:Name>Example service</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>O</cbc:ID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>La facture en échec a cbc:Percent 0 dans la cac:ClassifiedTaxCategory de la ligne ; la facture corrigée n'y a aucun élément de taux, et la ventilation O n'en a dans aucun des deux documents. Le document en échec ne signale que BR-O-05, situé sur la catégorie de taxe de la ligne 1.
Ce que le validateur a signalé
- La facture en erreur signale BR-O-05. 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 catégorie se trouve danscac:CreditNoteLine/cac:Item, et la facture en échec réécrite ainsi a signalé le même constat lors d'un essai. - Les lignes au taux zéro fonctionnent à l'inverse :
BR-Z-05y exige un taux de 0, donc un mapping qui fait passer une ligne deZàOou l'inverse doit ajouter ou retirer l'élément. - Une ligne
Oentraîne les autres règlesO: aucun identifiant TVA selonBR-O-02, un motif sur la ventilation selonBR-O-10, et aucune autre catégorie selonBR-O-11.
Règles liées
- BR-Z-05 est le cas inverse et exige un taux de 0 sur les lignes au taux zéro
- BR-48 exige un taux dans chaque ventilation de la TVA, sauf celle qui n'est pas soumise à la TVA
- BR-O-02 s'applique au même document dès qu'il a une ligne O, et interdit les identifiants 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-24.1 : source vérifiée le 2026-09-24, explication mise à jour le 2026-09-24.
La définition officielle de BR-O-05 (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.

