Sur cette page
La réponse courte
BR-O-13 échoue lorsque le document a une ventilation de la TVA O et une remise, un cac:AllowanceCharge avec cbc:ChargeIndicator false, dont la cac:TaxCategory est dans une autre catégorie sous le schéma VAT. Dans la facture enregistrée, le Loyalty discount de 5.00 est codé S à 20 alors que la ligne et la ventilation sont en O. Remettez la remise en O, sans taux, et déduisez-la de la base imposable O.
Une remise suit le traitement TVA de ce qu'elle réduit. Sur une facture où tout est hors du champ de la TVA, une remise au taux normal réduirait une TVA qui n'a jamais été facturée.
Ce que la règle vérifie
Après avoir trouvé une ventilation O, la règle compte les éléments cac:TaxCategory sous le schéma VAT dont le cbc:ID n'est pas O à l'intérieur des remises, où que se trouvent ces remises, et exige que le compte soit nul. BR-O-11 ne voit pas ce cas, car aucune seconde ventilation n'existe.
La recherche descend sous la racine. Lors d'un essai, une remise de 0.00 à l'intérieur de la ligne O, avec une cac:TaxCategory S à 20, a signalé cette règle avec BR-S-01, BR-S-03 et l'avertissement UBL-CR-558, qui déconseille une catégorie de taxe sur une remise de ligne.
Toute autre catégorie est attrapée. Avec la remise codée E à 0, les constats ont été cette règle, BR-E-01 et BR-E-03 ; codée Z à 0, cette règle, BR-Z-01 et BR-Z-03.
Donner à la remise au taux normal sa propre ventilation ne change que la compagnie de cette règle : lors d'un essai, une ventilation S de -5.00 a remplacé BR-S-01 par BR-O-11, et cette règle ainsi que BR-S-03 sont restées.
| Terme | Signification | Élément UBL |
|---|---|---|
| BG-20 | Remises au niveau du document | cac:AllowanceCharge[cbc:ChargeIndicator = false] |
| BT-95 | Code de catégorie de TVA de la remise au niveau du document | cac:AllowanceCharge[cbc:ChargeIndicator = false]/cac:TaxCategory/cbc:ID |
| 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 :
- Les remises sont créées à partir d'un modèle portant le taux normal, quelle que soit la catégorie de la facture à laquelle elles sont ajoutées.
- La remise reprend sa catégorie du code de taxe par défaut du vendeur plutôt que des lignes qu'elle réduit.
- Un moteur de promotions extérieur au système de facturation ajoute la remise avec ses propres paramètres fiscaux.
Comment corriger le document
- Déterminez quelles lignes la remise réduit. Si elles sont toutes en
O, la remise relève aussi deO. - Changez la
cac:TaxCategory/cbc:IDde la remise enOet supprimez soncbc:Percent, comme l'exigeBR-O-06. - Déduisez la remise dans la ventilation
O: dans l'exemple enregistré, la base imposableOpasse de 25.00 à 20.00, en accord avec les totaux, qui déduisent déjà la remise. - Si la remise porte réellement sur des fournitures taxables, ces fournitures et la remise relèvent d'une facture distincte avec leur propre ventilation.
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 remise de fidélité au taux normal sur un document dont l'unique ventilation est O
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Loyalty discount</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="GBP">5.00</cbc:Amount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>20</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<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>Fragment de la facture corrigée : la remise est en O et déduite dans la ventilation O
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Loyalty discount</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="GBP">5.00</cbc:Amount>
<cac:TaxCategory>
<cbc:ID>O</cbc:ID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">20.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>Dans la facture en échec, le Loyalty discount a le cbc:ID S et le cbc:Percent 20, et la base imposable O vaut 25.00, la ligne sans la remise ; la facture corrigée code la remise en O sans taux et la déduit, ce qui donne 20.00. La ventilation en échec a été fixée à 25.00 pour correspondre à son propre contenu O et laisser BR-O-08 silencieux ; avec la seule remise recodée, cette règle s'est ajoutée aux constats lors d'un essai. Le document en échec signale aussi BR-S-01, puisque la remise au taux normal n'a pas de ventilation au taux normal, et BR-S-03, puisqu'une remise au taux normal exige un identifiant TVA du vendeur, un identifiant d'immatriculation fiscale ou un représentant fiscal.
Ce que le validateur a signalé
- La facture en erreur signale BR-O-13, BR-S-01 et BR-S-03. 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; la version avoir de la facture en échec a signalé les trois mêmes constats lors d'un essai. - Les lignes et les frais ont les règles correspondantes
BR-O-12etBR-O-14. Seule une ventilationOactive les trois ; une remise enOsur un document sans ventilationOrelève deBR-O-01.
Règles liées
- BR-O-14 est la même restriction pour les frais au niveau du document
- BR-O-12 est la même restriction pour les lignes de facture
- BR-S-03 est signalé ici parce qu'une remise au taux normal exige un identifiant du vendeur pour la TVA ou l'impôt
- BR-O-06 s'applique une fois la remise revenue en catégorie O, et interdit son taux
- 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-13 (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.

