Sur cette page
La réponse courte
BR-O-09 échoue lorsqu'un cac:TaxSubtotal en catégorie O a un cbc:TaxAmount différent de zéro ; la facture enregistrée facture 5.00, soit 20 % de sa ligne hors champ de 25.00. Mettez le montant de TVA de la ventilation à 0.00 et retirez les 5.00 de cac:TaxTotal/cbc:TaxAmount, cbc:TaxInclusiveAmount et cbc:PayableAmount, ce qui ramène le montant à payer à 25.00.
Si l'acheteur doit réellement de la TVA sur ce montant, la fourniture n'est pas hors du champ de la TVA. C'est alors la catégorie qui est fausse, et un document qui facture de la TVA ne peut pas du tout s'exprimer avec O.
Ce que la règle vérifie
La règle compare à zéro, en tant que nombre, le cbc:TaxAmount placé à côté de chaque cac:TaxCategory O sous le schéma VAT : 0 passe aussi bien que 0.00, et un montant négatif échoue comme un montant positif, ainsi que -5.00 l'a fait lors d'un essai.
BR-CO-17 ne rattrape ici que les montants plus élevés, car une ventilation O n'a normalement pas de cbc:Percent, et pour une ventilation sans taux cette règle demande seulement un montant de TVA qui, arrondi à l'entier, vaut zéro. Lors d'un essai, 0.40 dans la ventilation O n'a signalé que cette règle, et 0.50 a fait revenir BR-CO-17.
Le total de TVA est comparé par une autre règle. Avec 5.00 dans la ventilation O et le total de TVA laissé à 0.00, le document a signalé BR-CO-14 en plus de cette règle et de BR-CO-17 lors d'un essai.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-117 | Montant de la TVA de la catégorie | cac:TaxTotal/cac:TaxSubtotal/cbc:TaxAmount |
| BT-118 | Code de catégorie de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID |
| BT-110 | Montant total de la TVA de la facture | cac:TaxTotal/cbc:TaxAmount |
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 taxe est calculée au taux normal par défaut pour chaque ventilation, quelle que soit sa catégorie.
- Une facture autrefois au taux normal a été passée en
Oen renommant la catégorie, et les montants de taxe enregistrés ont été conservés. - Le fournisseur n'est pas immatriculé à la TVA, mais son logiciel de facturation a été configuré avec la TVA activée.
- La TVA du document est calculée une fois puis attribuée à la seule ventilation existante, la ventilation
O.
Comment corriger le document
- Confirmez que les montants de la ventilation sont hors du champ de la TVA. Si c'est le cas, aucune TVA n'est due sur eux et le montant de TVA de la ventilation est
0.00. - Mettez à
0.00lecbc:TaxAmountducac:TaxSubtotalO. - Recalculez le total de TVA comme la somme des montants de TVA des ventilations, puis le total TTC et le montant à payer : dans l'exemple enregistré, le total de TVA passe de 5.00 à 0.00, et les deux autres totaux de 30.00 à 25.00.
- Si la TVA est finalement due, passez les lignes dans la catégorie applicable, avec son taux, et remplacez la ventilation
Oet son motif par la ventilation de cette catégorie ; les identifiants TVA queBR-O-02interdisait peuvent alors revenir.
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 : 5.00 de TVA dans la ventilation O, reportés dans les totaux
<cac:TaxTotal>
<cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>O</cbc:ID>
<cbc:TaxExemptionReasonCode>VATEX-EU-O</cbc:TaxExemptionReasonCode>
<cbc:TaxExemptionReason>Not subject to VAT</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="GBP">25.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="GBP">30.00</cbc:TaxInclusiveAmount>
<!-- allowance, charge, prepaid and rounding totals omitted from this fragment -->
<cbc:PayableAmount currencyID="GBP">30.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>Fragment de la facture corrigée : aucune TVA dans la ventilation O, et 25.00 à payer
<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>
<cbc:TaxExemptionReasonCode>VATEX-EU-O</cbc:TaxExemptionReasonCode>
<cbc:TaxExemptionReason>Not subject to VAT</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<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>La facture en échec montre 5.00 comme montant de TVA de la ventilation O et comme total de TVA, et 30.00 comme cbc:TaxInclusiveAmount et cbc:PayableAmount ; la facture corrigée a 0.00 et 25.00. À côté de BR-O-09, le document en échec signale BR-CO-17 : sans taux dans la ventilation O, cette règle attend un montant de TVA qui s'arrondit à 0, ce que 5.00 ne fait pas.
Ce que le validateur a signalé
- La facture en erreur signale BR-CO-17 et BR-O-09. 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 de nouveau signalé cette règle etBR-CO-17lors d'un essai. - Seules les ventilations
Osous le schémaVATsont contrôlées. Les catégories taux zéro, exonération, autoliquidation, livraison intracommunautaire et exportation ont chacune leur propre règle de montant de TVA nul. - Les autres valeurs de la ventilation sont contrôlées ailleurs : sa base imposable par
BR-O-08et son motif parBR-O-10.
Règles liées
- BR-CO-17 est signalé avec cette règle, et ne relève un montant de TVA en O que s'il ne s'arrondit pas à zéro
- BR-O-08 contrôle la base imposable de la même ventilation O
- BR-E-09 est la règle du montant de TVA nul pour les ventilations exonérées
- BR-O-01 exige que cette ventilation n'apparaisse qu'une seule fois
- 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-09 (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.

