Aller au contenu

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

PEPPOL-EN16931-P0104 : Utiliser la catégorie G dans la ventilation qui porte le code d'exportation VATEX-EU-G

VATEX-EU-G indique une exportation hors de l'UE, et Peppol ne l'accepte que dans une catégorie de taxe d'ID G. L'exportation enregistrée était codée exonérée, E.

Peppol BIS BillingErreur : le document n'est pas valideTVAListes de codes

Sur cette page

La réponse courte

PEPPOL-EN16931-P0104 échoue pour chaque cac:TaxCategory qui porte VATEX-EU-G alors que son cbc:ID n'est pas G. Le code indique que la livraison est une exportation hors de l'UE, et EN 16931 donne aux exportations une catégorie propre, G, distincte des livraisons exonérées et de celles au taux zéro. Si les biens quittent l'UE, passez la catégorie à G ; s'ils ne la quittent pas, c'est le code d'exportation qui est faux.

Dans l'exemple enregistré, une facture à un acheteur de New York garde le code d'exportation et le texte Export outside the EU, mais place sa ventilation et sa ligne dans la catégorie E. L'étape EN 16931 l'accepte, car une ventilation exonérée avec un motif est complète ; seule l'étape Peppol voit que le motif contredit la catégorie.

Ce que la règle vérifie

La règle repère une cac:TaxCategory par son code d'exonération mis en majuscules et ne la valide que si la catégorie, sans espaces de bord, vaut G. Lors d'un essai, vatex-eu-g dans la ventilation exonérée a été signalé exactement comme le code en majuscules.

Le code lui-même n'est pas débarrassé de ses espaces. Lors d'un essai, VATEX-EU-G précédé ou suivi d'une espace, dans la même ventilation exonérée, a réussi toutes les étapes : BR-CL-22 supprime les espaces et accepte la valeur, et cette règle ne la reconnaît plus. Les espaces masquent l'incohérence sans la corriger.

Les autres catégories erronées échouent de la même façon, chacune avec ses propres règles en plus. Lors d'un essai, une ventilation au taux zéro portant VATEX-EU-G a signalé cette règle et BR-Z-10, qui n'y admet aucun motif d'exonération, et une ventilation non soumise à la TVA portant le code n'a signalé que cette règle.

Rien dans le contrôle ne lit l'adresse de l'acheteur ni celle de livraison, si bien que la règle ne peut pas savoir si les biens ont réellement quitté l'UE. Elle se contente de lier le code et la catégorie l'un à l'autre.

TermeSignificationÉlément UBL
BT-121Code du motif d'exonération de TVAcac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCode
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

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 ventes hors de l'UE sont comptabilisées comme exonérées parce qu'aucune TVA n'est facturée, tandis que le code d'exonération vient d'un indicateur d'exportation distinct.
  • Dans la TVA britannique, les exportations de biens sont au taux zéro ; elles sont donc associées à Z, et la catégorie d'exportation G d'EN 16931 n'est jamais utilisée.
  • Un seul code d'exonération est défini par client, si bien qu'un client à l'étranger reçoit VATEX-EU-G sur chaque ventilation, y compris pour des services taxés autrement.

Comment corriger le document

  1. Vérifiez si la livraison est une exportation de biens qui quittent l'UE, avec les justificatifs qu'exigent vos règles de TVA. C'est cette décision, et non l'absence de TVA, qui choisit la catégorie.
  2. S'il s'agit d'une exportation, mettez cbc:ID à G dans la ventilation et sur chaque ligne, remise et charge qu'elle couvre, avec le taux 0, et gardez VATEX-EU-G. L'exemple corrigé n'a eu besoin d'aucune autre modification : l'identifiant TVA du vendeur exigé par BR-G-02 était déjà présent.
  3. S'il ne s'agit pas d'une exportation, gardez la catégorie réelle et remplacez VATEX-EU-G par le code de ce traitement, ou supprimez le code et indiquez un texte de motif, comme BR-E-10 le permet sur une ventilation exonérée. Sur une ventilation au taux zéro ou au taux normal, supprimez le code sans indiquer non plus de texte de motif : BR-Z-10 et BR-S-10 n'admettent ni l'un ni l'autre.
  4. Tirez la catégorie et le code d'exonération d'une même détermination fiscale, afin qu'une modification ultérieure de l'un ne laisse pas l'autre en arrière.

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 exportation codée exonérée, E, dans la ventilation et sur la ligne

<cac:TaxSubtotal>
  <cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
  <cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
  <cac:TaxCategory>
    <cbc:ID>E</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>
<!-- totals and the start of the invoice line omitted from this fragment -->
<cac:ClassifiedTaxCategory>
  <cbc:ID>E</cbc:ID>
  <cbc:Percent>0</cbc:Percent>
  <cac:TaxScheme>
    <cbc:ID>VAT</cbc:ID>
  </cac:TaxScheme>
</cac:ClassifiedTaxCategory>

Fragment de la facture corrigée : l'exportation est en catégorie G aux deux endroits

<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>
<!-- totals and the start of the invoice line omitted from this fragment -->
<cac:ClassifiedTaxCategory>
  <cbc:ID>G</cbc:ID>
  <cbc:Percent>0</cbc:Percent>
  <cac:TaxScheme>
    <cbc:ID>VAT</cbc:ID>
  </cac:TaxScheme>
</cac:ClassifiedTaxCategory>

La facture en échec a E là où la facture corrigée a G, dans la ventilation et dans la catégorie de la ligne ; le code VATEX-EU-G, le texte de motif, l'acheteur aux États-Unis et les montants sont identiques dans les deux. Le document en échec ne signale que cette règle Peppol, car une ventilation exonérée avec un motif et un taux nul satisfait toutes les règles EN 16931.

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 à UBL Invoice et CreditNote. Lors d'un essai, un avoir exonéré portant VATEX-EU-G a signalé cette règle.
  • Les remises et charges au niveau du document portent aussi une cac:TaxCategory, si bien qu'un code à cet endroit est contrôlé de la même façon. La catégorie d'une ligne est une cac:ClassifiedTaxCategory, que cette règle ne lit pas.
  • Une règle Peppol BIS Billing de l'étape Peppol. Dans l'étape EN 16931, BR-CL-22 confirme seulement que VATEX-EU-G est un code de la liste.

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 PEPPOL-EN16931-P0104 (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.