Sur cette page
La réponse courte
BR-O-11 échoue lorsque cac:TaxTotal contient un cac:TaxSubtotal en catégorie O et aussi un dans une autre catégorie sous le schéma VAT ; l'exemple enregistré ajoute une ventilation au taux normal de 20 % à côté de la ventilation O. Retirez du document les lignes de l'autre catégorie et facturez-les séparément, afin que chaque document soit ou bien entièrement non soumis à la TVA, ou bien sans aucun O.
Aucune disposition du XML ne rend ce mélange valide. Les règles EN 16931 réservent O à un document entièrement hors TVA ; un document qui n'est que partiellement hors du champ de la TVA ne peut donc pas être exprimé avec O.
Ce que la règle vérifie
La règle ne lit que la ventilation au niveau du document. Dès qu'une cac:TaxSubtotal/cac:TaxCategory sous le schéma VAT a un cbc:ID égal à O, le nombre de ventilations de ce schéma avec un autre cbc:ID doit être nul. Un seul constat est émis à la racine.
Les lignes relèvent de BR-O-12, qui rejette une ligne d'une autre catégorie sur un document ayant une ventilation O. Avec la ventilation au taux normal retirée mais sa ligne conservée, cette règle est passée lors d'un essai, et BR-O-12 a échoué avec BR-S-01 et BR-S-02.
Cela fonctionne aussi dans l'autre sens : une ventilation au taux normal à côté de lignes O, sans ligne au taux normal derrière elle, a encore signalé BR-O-11 lors d'un essai, parmi des constats sur la ventilation sans contrepartie.
Toute seconde catégorie compte, pas seulement S. Une ligne et une ventilation exonérées à la place de celles au taux normal ont signalé cette règle, BR-O-12, et BR-E-02 pour l'identifiant TVA du vendeur manquant.
Deux ventilations O ne sont pas comptées par cette règle, mais ce document a été rejeté par BR-O-01 et BR-O-08 lors d'un essai.
| Terme | Signification | Élément UBL |
|---|---|---|
| BG-23 | Ventilation de la TVA | cac:TaxTotal/cac:TaxSubtotal |
| BT-118 | Code de catégorie de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID |
| 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) |
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 :
- Une même facture combine une vente taxable et un article que le système source marque comme hors du champ de la TVA, et l'export écrit une ventilation par catégorie trouvée.
- Les articles sans code de taxe passent par défaut en
O, si bien qu'une facture ordinaire au taux normal récupère par accident une ligne et une ventilationO. - Un vendeur non immatriculé à la TVA utilise
Opartout, mais un produit ou des frais portent encore un code de taxe au taux normal issu d'un modèle ou d'une liste de prix.
Comment corriger le document
- Déterminez pourquoi chaque ligne a sa catégorie. Si la ligne
Ovient d'une valeur par défaut pour un code de taxe manquant, corrigez le code de taxe à la source ; le document n'aura alors peut-être plus besoin deO. - Si les deux types de fourniture sont réels, émettez deux documents : l'un avec uniquement les lignes
Oet la ventilationO, sans identifiants TVA, l'autre avec les autres lignes, leurs ventilations et les identifiants TVA que ces catégories exigent. - Recalculez tous les totaux de chaque document. Dans l'exemple enregistré, retirer la ligne au taux normal fait passer le total des lignes de 35.00 à 25.00, le total de TVA de 2.00 à 0.00 et le montant à payer de 37.00 à 25.00.
- Ne reclassez pas la ligne taxable en
Opour contourner la règle. La catégorie indique le traitement TVA, et la modifier déforme la fourniture.
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 O et une ventilation au taux normal dans le même total de TVA
<cac:TaxTotal>
<cbc:TaxAmount currencyID="GBP">2.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>O</cbc:ID>
<!-- reason code and text omitted from this fragment -->
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">10.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">2.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>20</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<!-- line 1 in category O at 25.00 and line 2 in category S at 20 for 10.00 omitted from this fragment -->Fragment de la facture corrigée : seule la ventilation O subsiste, sans TVA
<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>O</cbc:ID>
<!-- reason code and text omitted from this fragment -->
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>La facture en échec ajoute une seconde ligne, Example standard rated item à 10.00 en catégorie S à 20 %, avec une ventilation au taux normal correspondante et des totaux portés à 35.00 hors taxes, 2.00 de TVA et 37.00 à payer ; la facture corrigée n'a que la ligne et la ventilation O. Le document en échec signale trois constats. BR-O-11 est le conflit entre les ventilations. BR-O-12 est le même conflit sur les lignes, puisqu'une ligne S figure sur un document ayant une ventilation O. BR-S-02 apparaît parce qu'une ligne au taux normal exige un identifiant TVA ou un identifiant d'immatriculation fiscale du vendeur et que ce vendeur n'en a pas ; ajouter un identifiant TVA du vendeur, lors d'un essai, a levé BR-S-02 et fait apparaître BR-O-02, qui interdit cet identifiant. Ce conflit est la leçon : le document mixte ne peut pas être rendu valide.
Ce que le validateur a signalé
- La facture en erreur signale BR-O-11,
BR-O-12et BR-S-02. 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. En avoir, la facture en échec a donné les trois mêmes constats lors d'un essai. - Les identifiants ne peuvent pas sauver un document mixte. Lors d'un essai, une immatriculation fiscale du vendeur sous le schéma
TAXa levéBR-S-02sans déclencherBR-O-02, etBR-O-11etBR-O-12ont toujours échoué. - Après la séparation, chaque document doit être équilibré à lui seul :
BR-CO-10,BR-CO-13,BR-CO-14etBR-CO-15contrôlent ses totaux.
Règles liées
- BR-O-02 interdit les identifiants TVA dont les autres catégories d'un document mixte auraient besoin
- BR-S-02 est signalé à côté de cette règle lorsque la ligne ajoutée est au taux normal et que le vendeur n'a pas d'identifiant TVA
- BR-S-01 exige une ventilation au taux normal pour les lignes au taux normal ; retirer seulement la ventilation n'aide donc pas
- BR-CO-14 contrôle le total de TVA par rapport aux ventilations une fois les documents séparés
- 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-11 (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.

