Aller au contenu

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

BR-O-08 : Recalculer la base imposable non soumise à la TVA à partir des lignes, remises et frais en O

La base imposable de la ventilation O doit valoir exactement les montants nets des lignes O, plus les frais O et moins les remises O au niveau du document.

EN 16931Erreur : le document n'est pas valideTVATotaux

Sur cette page

La réponse courte

BR-O-08 échoue lorsque le cbc:TaxableAmount d'une ventilation O diffère du contenu O du document : le cbc:LineExtensionAmount de chaque ligne en O, plus les frais O à la racine, moins les remises O à la racine. La facture enregistrée envoie 25.00, la ligne seule, et oublie le Loyalty discount de 5.00 ; le bon montant est 20.00.

Le montant doit tomber juste au centime près. O n'a pas de taux selon lesquels regrouper et la règle n'admet aucune tolérance, il y a donc une seule somme par document, comparée exactement.

Ce que la règle vérifie

La règle est évaluée sur chaque cac:TaxCategory dont le cbc:ID vaut O sous le schéma VAT dans cac:TaxTotal/cac:TaxSubtotal, et la somme est toujours construite à partir de tout le document. Une ventilation O dupliquée portant les 25.00 complets a passé cette règle deux fois lors d'un essai et a été laissée à BR-O-01 ; répartie en 25.00 et 10.00 pour deux lignes O, les deux parties ont échoué ici.

Les lignes sont sélectionnées par cac:Item/cac:ClassifiedTaxCategory/cbc:ID égal à O, et les remises et frais par leur propre cac:TaxCategory/cbc:ID, directement sous la racine seulement. Les remises et frais de ligne sont déjà inclus dans le montant net de la ligne et ne sont pas comptés deux fois.

Les frais s'ajoutent et les remises se soustraient. Lors d'un essai, 30.00, le résultat obtenu en ajoutant la remise de 5.00 au lieu de la déduire, a échoué ; de même 25.00 sur une facture où des frais de livraison de 4.00 en O devaient être ajoutés pour atteindre 29.00.

L'exactitude joue dans les deux sens : 25.01 pour une seule ligne O de 25.00 a signalé cette règle lors d'un essai, alors que 25 écrit à la place de 25.00 est passé, car les valeurs sont comparées comme des nombres.

TermeSignificationÉlément UBL
BT-116Base imposable de la catégorie de TVAcac:TaxTotal/cac:TaxSubtotal/cbc:TaxableAmount
BT-118Code de catégorie de TVAcac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID
BT-131Montant net de ligne de facturecac:InvoiceLine/cbc:LineExtensionAmount (cac:CreditNoteLine/cbc:LineExtensionAmount in a credit note)
BT-92Montant de la remise au niveau du documentcac:AllowanceCharge[cbc:ChargeIndicator = false]/cbc:Amount
BT-99Montant des charges ou frais au niveau du documentcac:AllowanceCharge[cbc:ChargeIndicator = true]/cbc:Amount

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 base imposable est copiée de la somme des montants nets des lignes, si bien qu'une remise ou des frais O au niveau du document ne l'atteignent jamais.
  • La remise est ajoutée au lieu d'être soustraite, ou des frais sont soustraits, lors de la construction de la ventilation.
  • Des montants d'autres catégories sans TVA, comme des lignes au taux zéro ou exonérées, sont regroupés dans le montant O.
  • La ventilation provient d'un récapitulatif fiscal enregistré avant l'ajout de la remise ou des frais à la commande.
  • Une ventilation O est écrite par ligne, si bien que chacune ne contient qu'une partie du total.

Comment corriger le document

  1. Partez des lignes en O : dans l'exemple enregistré, la ligne 1 avec un cbc:LineExtensionAmount de 25.00. Gardez le signe de toute ligne négative.
  2. Prenez en compte les éléments cac:AllowanceCharge en O à la racine, les frais (cbc:ChargeIndicator true) avec un signe plus et les remises (false) avec un signe moins : ici seulement le Loyalty discount de 5.00, ce qui donne 20.00.
  3. Écrivez le résultat avec deux décimales comme cbc:TaxableAmount de l'unique cac:TaxSubtotal O, et laissez son montant de TVA à 0.00, comme l'exige BR-O-09.
  4. Recoupez avec cbc:TaxExclusiveAmount, construit à partir des mêmes éléments : sur une facture entièrement en O, les deux montants sont égaux, 20.00 dans l'exemple enregistré.

L'exemple enregistré a une ligne et une remise au niveau du document, toutes deux en catégorie O, et aucuns frais au niveau du document.

Montant net de la ligne en O : 25.00
Frais au niveau du document en O : aucuns, donc + 0.00
Remise au niveau du document en O, la remise de fidélité : - 5.00
Base imposable O attendue : 25.00 + 0.00 - 5.00 = 20.00
Envoyé : 25.00, le total des lignes seul, donc la règle échoue

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 : 25.00 de base imposable en O, alors que la remise O de 5.00 ramène le contenu O à 20.00

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <!-- reason code 95 and reason omitted from this fragment -->
  <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">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>
<!-- line 1 in category O: LineExtensionAmount 25.00 -->

Fragment de la facture corrigée : 25.00 - 5.00 = 20.00 de base imposable en O

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

Seul le cbc:TaxableAmount O diffère : 25.00 dans la facture en échec et 20.00 dans la facture corrigée. Le document en échec ne signale que BR-O-08. Ses totaux déduisent déjà la remise, avec cbc:TaxExclusiveAmount et cbc:PayableAmount à 20.00 dans les deux documents, et rien d'autre dans le document ne réagit au mauvais montant de la ventilation.

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 ; pour un avoir, la règle additionne les montants nets des cac:CreditNoteLine, et la facture en échec réécrite ainsi a de nouveau signalé cette règle lors d'un essai.
  • La règle suppose une ventilation O. BR-O-01 exige exactement cela, et BR-O-09 exige que son montant de TVA soit 0.
  • Les bases imposables des autres catégories sont contrôlées par leurs propres règles, comme BR-S-08 pour les ventilations au taux normal, qui tolère un écart inférieur à 1.00 là où cette règle n'en tolère aucun.

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