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.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-121 | Code du motif d'exonération de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCode |
| BT-118 | Code de catégorie de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID |
| BT-151 | Code 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'exportationGd'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-Gsur chaque ventilation, y compris pour des services taxés autrement.
Comment corriger le document
- 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.
- S'il s'agit d'une exportation, mettez
cbc:IDàGdans la ventilation et sur chaque ligne, remise et charge qu'elle couvre, avec le taux0, et gardezVATEX-EU-G. L'exemple corrigé n'a eu besoin d'aucune autre modification : l'identifiant TVA du vendeur exigé parBR-G-02était déjà présent. - S'il ne s'agit pas d'une exportation, gardez la catégorie réelle et remplacez
VATEX-EU-Gpar le code de ce traitement, ou supprimez le code et indiquez un texte de motif, commeBR-E-10le 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-10etBR-S-10n'admettent ni l'un ni l'autre. - 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é
- La facture en erreur signale PEPPOL-EN16931-P0104. Le document corrigé passe toutes les étapes de validation sans constat.Télécharger le XML en erreurTélécharger le XML corrigé
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
InvoiceetCreditNote. Lors d'un essai, un avoir exonéré portantVATEX-EU-Ga 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 unecac: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-22confirme seulement queVATEX-EU-Gest un code de la liste.
Règles liées
- BR-G-10 exige un motif d'exonération sur une ventilation d'exportation, que VATEX-EU-G fournit
- PEPPOL-EN16931-P0106 lie de la même façon le code intracommunautaire VATEX-EU-IC à la catégorie K
- PEPPOL-EN16931-P0110 repère la confusion inverse, un code du régime de la marge pour les objets d'art dans une ventilation d'exportation
- BR-Z-10 signale VATEX-EU-G une seconde fois lorsqu'une exportation est codée au taux zéro
- Parcourir toutes les règles de la référence
- Contexte (en anglais) : How Peppol invoice validation actually works
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.

