Aller au contenu

Ironfang Finance - Référence des règles

BR-O-06 : Retirer le taux de TVA d'une remise au niveau du document non soumise à la TVA

Une remise ou autre réduction au niveau du document en catégorie O ne prend aucun cbc:Percent, donc un taux de remise de 0 en O est rejeté.

EN 16931Erreur : le document n'est pas valideTVARemises et frais

Sur cette page

La réponse courte

BR-O-06 échoue lorsqu'un cac:AllowanceCharge avec cbc:ChargeIndicator false a une cac:TaxCategory O qui contient cbc:Percent. L'exemple enregistré donne au Loyalty discount de 5.00 un taux de 0. Supprimez cet élément et laissez cbc:ID et cac:TaxScheme tels quels.

Pour une remise au taux zéro ou exonérée, l'élément de taux sert à dire 0. Pour O, c'est l'absence de l'élément qui l'exprime, de même que la ventilation O de l'exemple enregistré n'en porte aucun.

Ce que la règle vérifie

Chaque remise dont la catégorie de taxe est O sous le schéma VAT est contrôlée, et le constat pointe vers cette cac:TaxCategory. Rien ne lie la règle à la racine du document, donc une remise de ligne compte aussi : lors d'un essai, une remise de ligne en O avec un taux de 0 a signalé cette règle sur la ligne, avec l'avertissement UBL-CR-558 pour une catégorie de taxe sur une remise de ligne.

Seule la présence de l'élément compte. Le 0 enregistré échoue, et lors d'un essai un taux de 20 sur la même remise de fidélité a donné le même constat unique.

Écrire l'élément vide n'est pas une échappatoire : un cbc:Percent vide dans la catégorie de taxe de la remise a échoué à l'étape XSD lors d'un essai, si bien qu'aucune règle métier ne s'est exécutée.

Cette règle ne lit que les remises. Des frais O avec un taux relèvent de BR-O-07, et une ligne O avec un taux de BR-O-05.

TermeSignificationÉlément UBL
BT-95Code de catégorie de TVA de la remise au niveau du documentcac:AllowanceCharge[cbc:ChargeIndicator = false]/cac:TaxCategory/cbc:ID
BT-96Taux de TVA de la remise au niveau du documentcac:AllowanceCharge[cbc:ChargeIndicator = false]/cac:TaxCategory/cbc:Percent

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 :

  • Le sérialiseur des remises écrit un taux pour chaque catégorie et enregistre zéro pour les catégories sans TVA.
  • La remise a d'abord été créée au taux zéro avec un taux de 0, puis passée en O en ne changeant que son code.
  • Le système source ne peut pas conserver un taux vide sur une remise et envoie 0 à la place.

Comment corriger le document

  1. Assurez-vous que la remise relève vraiment de O : elle doit réduire des montants eux-mêmes non soumis à la TVA, comme la ligne de 25.00 dans l'exemple enregistré.
  2. Supprimez cbc:Percent de la cac:TaxCategory de la remise, de sorte que cbc:ID O soit directement suivi de cac:TaxScheme.
  3. Laissez les montants tels quels. La remise fait toujours passer la base imposable O de 25.00 à 20.00, avec ou sans l'élément de taux.
  4. Dans le sérialiseur, écrivez le taux des remises pour toutes les catégories sauf O.

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 : la remise de fidélité O indique un taux de 0

<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>
    <cbc:Percent>0</cbc:Percent>
    <cac:TaxScheme>
      <cbc:ID>VAT</cbc:ID>
    </cac:TaxScheme>
  </cac:TaxCategory>
</cac:AllowanceCharge>

Fragment de la facture corrigée : la remise de fidélité O n'a pas d'élément de taux

<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>

La facture en échec a cbc:Percent 0 entre cbc:ID et cac:TaxScheme dans la catégorie de taxe du Loyalty discount ; dans la facture corrigée, cet élément est absent. Rien d'autre ne diffère, et le document en échec ne signale que BR-O-06, situé sur la cac:TaxCategory du premier cac:AllowanceCharge.

Ce que le validateur a signalé

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 Invoice et CreditNote, où la remise a la même forme. Réécrite en avoir, la facture en échec n'a signalé que cette règle lors d'un essai.
  • Les remises des autres catégories sans TVA fonctionnent à l'inverse : une remise au taux zéro ou exonérée exige un taux de 0 (BR-Z-06, BR-E-06), si bien que faire passer une remise entre ces catégories et O implique d'ajouter ou de retirer l'élément.
  • Tant qu'elle est en O, la même remise exclut aussi les identifiants TVA selon BR-O-03 et est déduite de la base imposable O que contrôle BR-O-08.

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-06 (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.