Sur cette page
La réponse courte
PEPPOL-EN16931-P0105 échoue pour chaque cac:TaxCategory qui porte VATEX-EU-O alors que son cbc:ID n'est pas O. Le code affirme que la livraison n'est pas du tout soumise à la TVA, ce que signifie la catégorie O ; à côté de toute autre catégorie, il contredit le traitement que cette catégorie déclare.
L'exemple enregistré est une facture en autoliquidation à un acheteur doté d'un identifiant TVA allemand : catégorie AE, texte de motif Reverse charge, et en plus VATEX-EU-O. Un service transfrontalier peut sembler hors du champ du point de vue du vendeur, mais lorsque le client acquitte la TVA, le traitement est l'autoliquidation, dont le code est VATEX-EU-AE.
Ce que la règle vérifie
La règle repère une cac:TaxCategory par son code d'exonération après mise en majuscules, si bien qu'une casse mélangée n'y échappe pas : lors d'un essai, Vatex-EU-o dans la ventilation en autoliquidation a été signalé. La catégorie doit alors valoir exactement O, sans espaces de bord.
Elle échoue quelle que soit l'autre catégorie. Lors d'un essai, VATEX-EU-O dans une ventilation d'exportation, catégorie G, n'a été signalé que par cette règle, comme dans la ventilation AE enregistrée.
Remplacer le code règle le cas enregistré : avec VATEX-EU-AE à la place de VATEX-EU-O, la facture en autoliquidation a réussi toutes les étapes lors d'un essai.
Changer la catégorie est la modification la plus lourde. Lors d'un essai, passer la ventilation et la ligne de l'exemple enregistré en O a effacé cette règle mais fait apparaître BR-O-02, parce qu'un document avec une ligne O ne peut porter aucun identifiant TVA, et BR-O-05, parce qu'une ligne O ne peut porter aucun taux.
| 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-120 | Motif d'exonération de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReason |
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 services transfrontaliers entre entreprises sont paramétrés comme hors du champ dans le système du vendeur, parce que le lieu de prestation est à l'étranger, tandis que la catégorie de la facture suit les règles de l'autoliquidation.
- Un code d'exonération par défaut
VATEX-EU-Oest écrit dans chaque ventilation sans TVA. - La catégorie est choisie d'après le type de client et le code d'exonération d'après le produit, et les deux paramètres n'ont jamais été alignés.
Comment corriger le document
- Décidez quel traitement s'applique.
Oconcerne les livraisons totalement hors du champ de la TVA ; si le client acquitte la TVA par autoliquidation, le traitement estAE. - Pour une livraison en autoliquidation, gardez
AEet indiquezVATEX-EU-AE, un texte de motif, ou les deux, comme l'exigeBR-AE-10. L'exemple corrigé garde le texteReverse chargeet supprime le code. - Pour une livraison réellement non soumise à la TVA, passez la ventilation et chaque ligne qu'elle couvre en
Oet gardezVATEX-EU-O. Supprimez les taux de TVA des lignes, queBR-O-05interdit, et les identifiants TVA du vendeur et de l'acheteur, queBR-O-02interdit.
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 ventilation en autoliquidation portant le code de non-soumission à la TVA
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>AE</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cbc:TaxExemptionReasonCode>VATEX-EU-O</cbc:TaxExemptionReasonCode>
<cbc:TaxExemptionReason>Reverse charge</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>Fragment de la facture corrigée : la ventilation en autoliquidation indique son motif sous forme de texte
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>AE</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cbc:TaxExemptionReason>Reverse charge</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>La facture en échec ajoute <cbc:TaxExemptionReasonCode>VATEX-EU-O</cbc:TaxExemptionReasonCode> à sa ventilation en autoliquidation ; la facture corrigée garde la catégorie AE avec le seul texte Reverse charge. Seule cette règle Peppol est signalée : le texte satisfait BR-AE-10, et VATEX-EU-O est un code de la liste pour BR-CL-22.
Ce que le validateur a signalé
- La facture en erreur signale PEPPOL-EN16931-P0105. 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-Oa signalé cette règle. - Signalée uniquement par l'étape Peppol. La règle EN 16931 des ventilations de catégorie
O,BR-O-10, y demande un motif quelconque mais ne regarde pas les codes placés dans d'autres catégories. - Le code est lu dans la ventilation de la TVA et dans les remises et charges au niveau du document. Les catégories des lignes sont des éléments
cac:ClassifiedTaxCategoryet restent hors de la règle.
Règles liées
- BR-O-10 exige un motif, comme VATEX-EU-O, sur une ventilation réellement en catégorie O
- BR-AE-10 exige le motif d'autoliquidation que la ventilation corrigée donne sous forme de texte
- PEPPOL-EN16931-P0107 lie le code d'autoliquidation VATEX-EU-AE à la catégorie AE
- BR-O-02 interdit les identifiants TVA sur un document comportant une ligne non soumise à la TVA
- 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-P0105 (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.

