Sur cette page
La réponse courte
BR-O-12 échoue lorsque la ventilation de la TVA comprend la catégorie O et qu'une ligne a une catégorie d'article sous le schéma VAT autre que O. Dans l'exemple enregistré, une seconde ligne, Example zero rated item pour 10.00 en Z, figure à côté de la ligne O de 25.00. Déplacez cette ligne sur une facture à part, afin que celle-ci ne contienne que des lignes O.
Elle comble la lacune que laisse BR-O-11, puisque cette règle compare des ventilations entre elles : une ligne dont la catégorie n'a pas de ventilation, comme la ligne au taux zéro ici, lui échappe et est attrapée par cette règle.
Ce que la règle vérifie
Le déclencheur est une cac:TaxCategory O dans cac:TaxTotal/cac:TaxSubtotal. Chaque cac:ClassifiedTaxCategory du document sous le schéma VAT dont le cbc:ID n'est pas O est alors comptée, et le compte doit être nul ; un seul constat est émis à la racine, quel que soit le nombre de lignes concernées.
L'autre catégorie n'importe pas. Lors d'essais, une ligne au taux normal à 20 à la place de la ligne au taux zéro a signalé cette règle avec BR-S-01 et BR-S-02, et une ligne exonérée l'a signalée avec BR-E-01 et BR-E-02.
Fournir la ventilation manquante ne sauve pas le document. Lors d'un essai, une ventilation au taux zéro de 10.00 a levé BR-Z-01 et fait apparaître BR-O-11 à sa place, à côté de cette règle et de BR-Z-02.
La règle a besoin d'une ventilation O comme point de départ. Une facture ayant des lignes O et aucune ventilation O est signalée par BR-O-01 à la place.
| Terme | Signification | Élément UBL |
|---|---|---|
| BG-25 | Ligne de facture | cac:InvoiceLine (cac:CreditNoteLine in a credit note) |
| 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-118 | Code de catégorie de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID |
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 :
- La ventilation est construite à partir d'un indicateur "non soumis à la TVA" au niveau du document, tandis que chaque ligne prend sa catégorie dans le référentiel articles, où un article est au taux zéro.
- Un article que le vendeur fournit à la fois dans et hors de son activité soumise à la TVA apporte sa catégorie taxable depuis la liste de prix sur une facture par ailleurs hors champ.
- Une ligne de livraison ou d'emballage est ajoutée automatiquement, avec une catégorie par défaut, après que le document a été mis en
O.
Comment corriger le document
- Vérifiez la catégorie de chaque ligne par rapport à la fourniture qu'elle décrit. Si la ligne au taux zéro est en réalité hors du champ de la TVA, changez sa catégorie en
O, retirez son taux et ajoutez ses 10.00 à la base imposableO. - Si la ligne est réellement au taux zéro, retirez-la de cette facture et facturez-la sur un document distinct, avec sa propre ventilation
Zet l'identifiant du vendeur queBR-Z-02y exige. - Recalculez les totaux de ce qui reste : dans l'exemple enregistré, le total des lignes, les totaux hors TVA et TTC et le montant à payer reviennent de 35.00 à 25.00.
- Imposez-le dans le mapping : lorsqu'un document est écrit avec une ventilation
O, refusez d'écrire des lignes d'une autre catégorie.
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 ligne au taux zéro de 10.00 à côté de la ligne O, avec une seule ventilation O
<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>
<!-- totals of 35.00 and line 1, 25.00 in category O, omitted from this fragment -->
<cac:InvoiceLine>
<cbc:ID>2</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">10.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Example zero rated item</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>Z</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<!-- price omitted from this fragment -->
</cac:InvoiceLine>Fragment de la facture corrigée : la ligne au taux zéro a disparu et les totaux reviennent à la ligne O
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="GBP">25.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="GBP">25.00</cbc:TaxInclusiveAmount>
<!-- allowance, charge, prepaid and rounding totals omitted from this fragment -->
<cbc:PayableAmount currencyID="GBP">25.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<!-- quantity and amount omitted from this fragment -->
<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>
<!-- price omitted from this fragment -->
</cac:InvoiceLine>La facture en échec ajoute la ligne 2, Example zero rated item à 10.00 en catégorie Z avec un taux de 0, et porte le total des lignes, les totaux hors TVA et TTC et le montant à payer à 35.00, tandis que la ventilation O reste à 25.00 pour correspondre à l'unique ligne O ; la facture corrigée n'a que cette ligne. Le document en échec signale aussi BR-Z-01, parce qu'un contenu Z exige une ventilation au taux zéro, et BR-Z-02, parce qu'une ligne au taux zéro exige un identifiant TVA du vendeur, un identifiant d'immatriculation fiscale ou un représentant fiscal, et que ce vendeur n'en a aucun.
Ce que le validateur a signalé
- La facture en erreur signale BR-O-12, BR-Z-01 et BR-Z-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, où les catégories de ligne se trouvent souscac:CreditNoteLine/cac:Item. En avoir, la facture en échec a signalé les trois mêmes constats lors d'un essai. - Les remises et frais au niveau du document dans d'autres catégories relèvent de
BR-O-13etBR-O-14; avecBR-O-11pour les ventilations, les quatre maintiennent enOchaque partie d'un documentO.
Règles liées
- BR-O-11 rejette une seconde ventilation de la TVA à côté de la ventilation O, que cette règle n'a pas besoin de trouver
- BR-O-13 applique la même restriction aux remises au niveau du document
- BR-Z-02 est signalé avec cette règle parce que la ligne au taux zéro exige un identifiant TVA ou d'immatriculation fiscale du vendeur
- BR-Z-01 est signalé aussi, puisque la ligne au taux zéro n'a pas de ventilation au taux zéro
- 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-12 (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.

