Aller au contenu

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

BR-O-01 : Donner exactement une ventilation O à un document ayant un contenu non soumis à la TVA

Une ligne, une remise ou des frais au niveau du document en catégorie O exigent une ventilation de la TVA en O. Un document qui n'en a aucune, ou qui en a deux, est rejeté.

EN 16931Erreur : le document n'est pas valideTVA

Sur cette page

La réponse courte

BR-O-01 échoue lorsque la catégorie O est utilisée quelque part dans le document et que cac:TaxTotal ne contient pas exactement un cac:TaxSubtotal dont la cac:TaxCategory/cbc:ID vaut O. Dans l'exemple enregistré, la ventilation non soumise à la TVA de 25.00 a été écrite deux fois. Gardez une seule ventilation O qui couvre chaque ligne, remise et frais en O.

N'avoir aucune TVA à déclarer ne dispense pas de la ventilation. Une facture dont toutes les lignes sont hors du champ de la TVA a quand même besoin de son unique entrée O, avec un montant de TVA de 0.00 et un motif d'exonération, par exemple le code VATEX-EU-O.

Ce que la règle vérifie

Le déclencheur est tout cbc:ID égal à O sous le schéma VAT, dans la cac:ClassifiedTaxCategory d'une ligne ou dans n'importe quelle cac:TaxCategory, y compris celle de la ventilation elle-même. Le comptage qui suit ne regarde que cac:TaxTotal/cac:TaxSubtotal sous la racine du document, et le résultat doit valoir exactement 1.

Une ventilation absente échoue autant qu'une ventilation répétée. Lors d'un essai, supprimer l'unique ventilation O de la facture corrigée a signalé cette règle avec BR-CO-18, PEPPOL-EN16931-R053 et PEPPOL-EN16931-R054, car le document n'avait alors plus aucune ventilation de la TVA.

Une remise ou des frais suffisent à la déclencher. Lors d'un essai, une remise au niveau du document de 5.00 en catégorie O sur une facture au taux normal sans ventilation O a signalé cette règle, à côté de BR-O-03 pour l'identifiant TVA du vendeur que porte cette facture ; des frais de 4.00 en O ont fait de même avec BR-O-04.

Les montants ne jouent ici aucun rôle. Le doublon enregistré répète les 25.00 complets, ce qui satisfait deux fois BR-O-08 ; lors d'un essai avec une ventilation O par ligne, 25.00 et 10.00 pour deux lignes O, BR-O-08 a en plus échoué sur chacune des deux.

Le cas inverse passe. Une ventilation O de 0.00 sur une facture au taux normal sans contenu O passe cette règle, car la ventilation compte elle-même comme contenu O ; lors d'un essai, cette facture a été rejetée par BR-O-11 et BR-O-12 à la place.

TermeSignificationÉlément UBL
BG-23Ventilation de la TVAcac:TaxTotal/cac:TaxSubtotal
BT-118Code de catégorie de TVAcac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID
BT-151Code 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-95Code de catégorie de TVA de la remise au niveau du documentcac:AllowanceCharge[cbc:ChargeIndicator = false]/cac:TaxCategory/cbc:ID
BT-102Code de catégorie de TVA des charges ou frais au niveau du documentcac:AllowanceCharge[cbc:ChargeIndicator = true]/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 ventilations ne sont générées que lorsqu'il y a de la TVA à déclarer, si bien qu'un document entièrement hors du champ de la TVA part avec un total de taxe vide.
  • Le récapitulatif fiscal est ajouté deux fois, par exemple une fois par la boucle des lignes et une fois par une étape de totaux, et les deux copies indiquent O.
  • Une ventilation est écrite par ligne ou par code de taxe interne, et plusieurs codes, comme "hors champ" et "hors activité économique", correspondent tous à O.
  • Une remise ou des frais au niveau du document sont placés en O alors que les lignes utilisent une autre catégorie, si bien qu'aucune ventilation O n'a jamais été prévue.

Comment corriger le document

  1. Dressez la liste de ce que le document place en O, en lisant la cac:Item/cac:ClassifiedTaxCategory/cbc:ID de chaque ligne et la cac:TaxCategory/cbc:ID de chaque cac:AllowanceCharge placé directement sous la racine ; dans l'exemple enregistré, c'est l'unique ligne de 25.00.
  2. Écrivez pour eux un cac:TaxSubtotal : le contenu net en O comme cbc:TaxableAmount, 0.00 comme cbc:TaxAmount, et une cac:TaxCategory avec cbc:ID O, le code de motif VATEX-EU-O ou le texte du motif, sans cbc:Percent, et le schéma VAT.
  3. Si le générateur a produit plusieurs ventilations O, fusionnez-les en celle-ci et supprimez les autres. Dans l'exemple enregistré, la seconde copie disparaît tout simplement.
  4. Laissez cac:TaxTotal/cbc:TaxAmount à 0.00, puisqu'une ventilation O n'y ajoute aucune TVA.

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 : deux ventilations O identiques pour l'unique ligne O de 25.00

<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:TaxSubtotal>
    <cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>O</cbc:ID>
      <!-- the same 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, 25.00 in category O, omitted from this fragment -->

Fragment de la facture corrigée : une seule ventilation O

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

La facture en échec répète tout le cac:TaxSubtotal O, base imposable 25.00 et TVA 0.00, si bien que son cac:TaxTotal contient deux entrées identiques pour l'unique ligne ; la facture corrigée en garde une. Le document en échec ne signale que BR-O-01 : le total de TVA de 0.00 égale toujours la somme des ventilations, et chaque copie concorde à elle seule avec la ligne de 25.00.

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, avec un constat à la racine du document. Réécrite en avoir, la facture en échec a signalé le même constat unique lors d'un essai.
  • Seul le schéma VAT compte, dans les catégories comme dans la ventilation. Les autres catégories ont chacune une règle de ce type, comme BR-Z-01 et BR-E-01, tandis que BR-S-01 admet plusieurs ventilations au taux normal parce que les taux normaux diffèrent.
  • L'unique ventilation O doit encore être juste dans le détail : BR-O-08 contrôle sa base imposable, BR-O-09 son montant de TVA et BR-O-10 son motif.

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