Aller au contenu

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

BR-G-01 : Envoyer exactement une ventilation de la TVA pour l'exportation hors UE

Un document avec une ligne, une remise ou des frais de catégorie G a besoin d'une ventilation de la TVA en G : aucune échoue, et une deuxième copie aussi.

EN 16931Erreur : le document n'est pas valideTVA

Sur cette page

La réponse courte

BR-G-01 échoue lorsque le document utilise la catégorie G quelque part, sur une ligne, une remise ou des frais au niveau du document, et que le cac:TaxTotal racine ne contient pas exactement un cac:TaxSubtotal en G. La facture en échec répète sa ventilation d'exportation ; supprimez la copie pour qu'il reste une seule ventilation G de 25.00.

L'exportation hors UE a toujours un taux de 0, il n'y a donc jamais de raison d'avoir une deuxième ventilation G : toutes les lignes, remises et frais en G sont additionnés dans une seule.

Ce que la règle vérifie

La règle s'exécute une fois par document et signale à la racine. Tout cac:ClassifiedTaxCategory ou cac:TaxCategory avec un cbc:ID à G sous le régime VAT la déclenche, ce qui couvre les articles, les remises et frais au niveau du document, et la ventilation elle-même.

Elle compte ensuite les catégories G parmi les éléments cac:TaxSubtotal du cac:TaxTotal racine et en exige exactement 1.

Un doublon est détecté ici et nulle part ailleurs. Chaque copie de la ventilation enregistrée vaut à elle seule les 25.00 de la ligne, donc BR-G-08, qui compare chaque ventilation G à la somme d'exportation entière, les laisse passer toutes les deux.

Un fractionnement est signalé deux fois. Lors d'un essai, l'exemple avec frais de transport divisé en une ventilation G de 25.00 pour la ligne et une de 4.00 pour les frais a signalé cette règle et BR-G-08 sur chaque ventilation, puisqu'aucune ne vaut 29.00.

Des frais seuls suffisent à exiger la ventilation. Lors d'un essai, des frais de transport de 4.00 en G sur une facture au taux normal sans ventilation G ont signalé cette règle et rien d'autre.

L'inverse n'est pas contrôlé. La ventilation compte elle-même comme contenu G : lors d'un essai, une ventilation G de 0.00 ajoutée à une facture au taux normal sans aucun contenu d'exportation a passé toutes les étapes.

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 :

  • La ventilation est ajoutée une fois par le moteur fiscal et une seconde fois par le modèle de facture.
  • Les ventilations sont construites par source, une pour les lignes et une pour les frais au niveau du document, au lieu de par catégorie.
  • Les lignes d'exportation sont rattachées à un code fiscal de taux zéro lors de la construction de la ventilation, si bien que le document a des lignes G sous une ventilation Z.
  • Des frais de transport d'exportation sont classés G alors que la construction de la ventilation ne regarde que les lignes.

Comment corriger le document

  1. Rassemblez chaque ligne, remise racine et frais racine dont la catégorie est G.
  2. Écrivez pour eux un seul cac:TaxSubtotal dans le cac:TaxTotal racine, avec un cbc:ID à G, un cbc:Percent à 0, le motif VATEX-EU-G, et les lignes plus les frais moins les remises comme base imposable.
  3. Supprimez toute autre ventilation G, ainsi que toute ventilation d'une autre catégorie derrière laquelle il n'y a rien.
  4. Lorsque les ventilations sont regroupées par catégorie et par taux, vérifiez qu'aucun article G ne porte un taux parasite, afin que le regroupement ne puisse pas produire une deuxième ventilation d'exportation.

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 ventilation d'exportation apparaît deux fois, avec 25.00 dans chacune

<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>G</cbc:ID>
      <!-- rate 0, reason VATEX-EU-G, reason text and tax scheme omitted from this fragment -->
    </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>G</cbc:ID>
      <!-- rate 0, reason VATEX-EU-G, reason text and tax scheme omitted from this fragment -->
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>

Fragment de la facture corrigée : une ventilation d'exportation pour la ligne d'exportation 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>G</cbc:ID>
      <cbc:Percent>0</cbc:Percent>
      <cbc:TaxExemptionReasonCode>VATEX-EU-G</cbc:TaxExemptionReasonCode>
      <cbc:TaxExemptionReason>Export outside the EU</cbc:TaxExemptionReason>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>

La facture en échec a deux ventilations G identiques de 25.00 dans son cac:TaxTotal ; la facture corrigée en a une. Le document en échec ne signale que BR-G-01 : chaque copie correspond à elle seule à la ligne d'exportation, et avec 0.00 de taxe dans chacune, le total de TVA de 0.00 reste égal à leur somme.

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. Lors d'un essai, la ventilation en double dans un avoir a signalé le même constat.
  • Lorsque des lignes d'exportation relèvent d'une ventilation d'une autre catégorie, les contrôles propres à cette catégorie s'ajoutent à cette règle. Lors d'un essai, la ligne d'exportation avec sa ventilation renommée en Z, sans le motif d'exportation, a signalé cette règle et BR-Z-08.
  • Lors d'un essai, supprimer la seule ventilation a aussi signalé BR-CO-18, PEPPOL-EN16931-R053 et PEPPOL-EN16931-R054, car le document n'avait alors plus aucune ventilation de la TVA.
  • Le même compte d'exactement une s'applique aux autres catégories avec BR-Z-01, BR-E-01, BR-AE-01, BR-IC-01 et BR-O-01. Le contenu au taux normal peut en revanche avoir une ventilation par taux (BR-S-01).

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