Sur cette page
La réponse courte
BR-O-02 échoue lorsqu'une ligne est classée O, non soumise à la TVA, et que le document contient aussi un identifiant TVA : un cbc:CompanyID dans un cac:PartyTaxScheme VAT chez le vendeur, l'acheteur ou dans cac:TaxRepresentativeParty. Dans l'exemple enregistré, il s'agit de l'identifiant du vendeur GB123456789. Retirez le cac:PartyTaxScheme VAT de chaque partie ou, si la facture doit afficher des numéros de TVA, demandez-vous si O est la bonne catégorie.
Cela va à l'encontre de l'intuition, puisque les règles d'autres catégories de TVA, comme BR-S-02 et BR-IC-02, exigent des identifiants TVA au lieu de les interdire. Les règles EN 16931 traitent un document comportant des lignes O comme entièrement hors du système de TVA : aucune autre catégorie de TVA ne peut y figurer, et aucune partie ne peut y être identifiée à la TVA. Même le numéro de TVA de l'acheteur, qui est une donnée sur l'acheteur, est interdit.
Ce que la règle vérifie
Une seule ligne O suffit à déclencher la règle : n'importe quelle cac:ClassifiedTaxCategory dont le cbc:ID vaut O sous le schéma VAT. Un seul constat est émis à la racine, quel que soit le nombre d'identifiants présents ; vendeur et acheteur ensemble ont donné un seul constat lors d'un essai.
Trois parties sont contrôlées, chacune uniquement pour un cac:PartyTaxScheme dont le cac:TaxScheme/cbc:ID vaut VAT : le vendeur, l'acheteur et le représentant fiscal. Lors d'un essai, un identifiant TVA de l'acheteur seul et un identifiant TVA du représentant fiscal seul ont chacun signalé BR-O-02.
C'est l'élément qui échoue, pas son contenu. Un cbc:CompanyID du vendeur vide dans un cac:PartyTaxScheme VAT a encore signalé BR-O-02 lors d'un essai, avec PEPPOL-EN16931-R008 à côté.
Les immatriculations hors du schéma TVA ne sont pas concernées. Un cac:PartyTaxScheme du vendeur sous le schéma TAX, l'emplacement prévu pour une immatriculation fiscale autre que la TVA, a donné un document valide lors d'un essai. Les identifiants d'immatriculation légale dans cac:PartyLegalEntity ne sont pas touchés non plus ; l'exemple enregistré en conserve un pour chaque partie.
| 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-31 | Identifiant à la TVA du vendeur | cac:AccountingSupplierParty/cac:Party/cac:PartyTaxScheme/cbc:CompanyID |
| BT-63 | Identifiant à la TVA du représentant fiscal du vendeur | cac:TaxRepresentativeParty/cac:PartyTaxScheme/cbc:CompanyID |
| BT-48 | Identifiant à la TVA de l'acheteur | cac:AccountingCustomerParty/cac:Party/cac:PartyTaxScheme/cbc:CompanyID |
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 :
- L'identifiant TVA du vendeur est ajouté à chaque document sortant à partir des paramètres de l'entreprise, quelles que soient les catégories des lignes.
- Le numéro de TVA de l'acheteur est copié par défaut depuis la fiche client, y compris sur les documents qui n'ont que des lignes
O. - Une ligne que le système source marque comme hors du champ de la TVA est envoyée en
Odans une facture par ailleurs soumise à la TVA, où les identifiants dont le reste de la facture a besoin deviennent interdits. - Une valeur par défaut du mapping transforme les articles sans code de taxe en
O, si bien qu'un vendeur immatriculé à la TVA se retrouve avec une ligneOqu'il n'a jamais voulue.
Comment corriger le document
- Décidez d'abord si l'ensemble du document est hors du champ de la TVA. S'il comporte aussi un contenu taxable, ou si le vendeur doit y faire figurer son numéro de TVA, c'est
Oqui pose problème et la décision revient à la personne responsable de la détermination de la taxe ;BR-O-11rejette de toute façonOmélangé à d'autres catégories. - Si le document n'est réellement pas soumis à la TVA, retirez chaque
cac:PartyTaxSchemedont lecac:TaxScheme/cbc:IDvautVATdecac:AccountingSupplierParty/cac:Party,cac:AccountingCustomerParty/cac:Partyetcac:TaxRepresentativeParty. Vider la valeur en gardant l'élément ne fonctionne pas. - Gardez le vendeur identifiable d'une autre manière, comme l'exige
BR-CO-26: un identifiant d'immatriculation légale danscac:PartyLegalEntity/cbc:CompanyIDou un identifiant du vendeur danscac:PartyIdentification/cbc:ID. Un identifiant TVA ajouté dans ce but ramène aussitôt cette règle. - Intégrez ce comportement au mapping : dès qu'une ligne est
O, supprimez lecac:PartyTaxSchemeVATde toutes les parties, plutôt que de modifier des factures une à une.
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 identifiant TVA du vendeur sur un document dont la seule ligne est en catégorie O
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="0088">7300010000001</cbc:EndpointID>
<!-- postal address omitted from this fragment -->
<cac:PartyTaxScheme>
<cbc:CompanyID>GB123456789</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Example Supplier Ltd</cbc:RegistrationName>
<cbc:CompanyID>12345678</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingSupplierParty>
<!-- buyer, totals and the start of line 1 omitted from this fragment -->
<cac:ClassifiedTaxCategory>
<cbc:ID>O</cbc:ID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>Fragment de la facture corrigée : le vendeur n'est identifié que par son numéro d'immatriculation légale
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="0088">7300010000001</cbc:EndpointID>
<!-- postal address omitted from this fragment -->
<cac:PartyLegalEntity>
<cbc:RegistrationName>Example Supplier Ltd</cbc:RegistrationName>
<cbc:CompanyID>12345678</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingSupplierParty>La facture en échec a un cac:PartyTaxScheme du vendeur contenant GB123456789 sous le schéma VAT ; la facture corrigée n'a d'identifiant TVA pour aucune partie, et toutes deux gardent la même ligne et la même ventilation O. Le document en échec ne signale que BR-O-02. Sans l'identifiant TVA, le document corrigé passe toujours BR-CO-26, grâce à l'identifiant d'immatriculation légale du vendeur 12345678.
Ce que le validateur a signalé
- La facture en erreur signale BR-O-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. Transformée en avoir, la facture en échec a signalé cette règle seule lors d'un essai. - Avec une ligne au taux normal à côté de la ligne
O, les règles sur les identifiants tirent en sens opposés :BR-S-02exige un identifiant du vendeur que cette règle interdit lorsqu'il s'agit d'un identifiant TVA.BR-O-11rejette le mélange lui-même. - La règle ne lit que les catégories des lignes et les schémas fiscaux des parties. Elle ne sait pas si le vendeur est réellement immatriculé à la TVA ; un résultat sans constat ne dit donc rien à ce sujet.
Règles liées
- BR-O-11 interdit les autres catégories de TVA sur un document non soumis à la TVA, l'autre moitié de la même logique du tout ou rien
- BR-CO-26 exige toujours un identifiant du vendeur une fois l'identifiant TVA retiré
- BR-S-02 exige l'identifiant du vendeur que cette règle interdit, lorsqu'une ligne est au taux normal
- 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-02 (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.

