Aller au contenu

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

PEPPOL-EN16931-R053 : Placer toute la ventilation de la TVA dans un seul total de taxe

Le document doit avoir exactement un cac:TaxTotal contenant des éléments cac:TaxSubtotal. Placez chaque ventilation de la TVA dans ce seul total de taxe.

Peppol BIS BillingErreur : le document n'est pas valideTVATotaux

Sur cette page

La réponse courte

PEPPOL-EN16931-R053 échoue lorsque le nombre d'éléments cac:TaxTotal de niveau racine contenant un cac:TaxSubtotal est différent de un. Placez chaque ventilation de la TVA, un cac:TaxSubtotal par catégorie et taux, dans un seul cac:TaxTotal dont le cbc:TaxAmount est la somme de leurs montants de taxe.

Zéro échoue aussi. Un document sans aucune ventilation de la TVA signale cette règle à côté des règles EN 16931 relatives à la ventilation manquante.

Ce que la règle vérifie

La règle s'exécute une fois sur la racine et compte les enfants cac:TaxTotal qui contiennent au moins un cac:TaxSubtotal. Elle ne passe que si ce nombre est exactement un.

Un cac:TaxTotal sans ventilation n'est pas compté. Peppol en autorise un, et seulement lorsque cbc:TaxCurrencyCode est présent, pour le total de TVA en devise de comptabilisation ; c'est PEPPOL-EN16931-R054 qui l'impose.

Aucun montant n'est comparé. La répartition enregistrée garde des chiffres justes, 11.70 et 0.00 donnant ensemble l'ancien total de TVA, et elle est pourtant rejetée sur le nombre.

Lors d'un essai, un document sans cac:TaxTotal a signalé cette règle avec BR-CO-15, BR-CO-18 et BR-S-01. Un document dont le seul total de taxe avait perdu sa ventilation l'a signalée avec BR-CO-18, BR-S-01 et PEPPOL-EN16931-R054.

TermeSignificationÉlément UBL
BG-23Ventilation de la TVAcac:TaxTotal/cac:TaxSubtotal
BT-110Montant total de la TVA de la facturecac:TaxTotal/cbc:TaxAmount

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 :

  • Le mapping émet un cac:TaxTotal par taux de TVA, à l'image d'une table source qui contient une ligne de taxe par taux.
  • Une boucle sur les catégories de taxe ouvre et ferme le total de taxe à l'intérieur de la boucle au lieu d'une seule fois autour d'elle.
  • La TVA dans une seconde devise est envoyée sous forme de copie complète de la ventilation, ce qui crée un second total de taxe avec ventilation.

Comment corriger le document

  1. Ouvrez un seul cac:TaxTotal directement sous la racine, après les éventuels cac:AllowanceCharge au niveau du document et avant cac:LegalMonetaryTotal.
  2. À l'intérieur, écrivez un cac:TaxSubtotal pour chaque combinaison de catégorie et de taux de TVA utilisée dans le document.
  3. Donnez à son cbc:TaxAmount la somme des montants de taxe de la ventilation, arrondie à deux décimales, dans la devise du document.
  4. Si la TVA doit aussi être indiquée dans une devise de comptabilisation, ajoutez cbc:TaxCurrencyCode et un second cac:TaxTotal ne contenant qu'un cbc:TaxAmount dans cette devise. Il ne porte aucune ventilation et n'est donc pas compté ici.

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 : les ventilations au taux normal et au taux zéro sont dans deux totaux de taxe séparés

<cac:TaxTotal>
  <cbc:TaxAmount currencyID="GBP">11.70</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="GBP">58.50</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="GBP">11.70</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>S</cbc:ID>
      <cbc:Percent>20</cbc:Percent>
      <!-- tax scheme omitted from this fragment -->
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="GBP">10.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>Z</cbc:ID>
      <cbc:Percent>0</cbc:Percent>
      <!-- tax scheme omitted from this fragment -->
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>

Fragment de la facture corrigée : un seul total de taxe de 11.70 contenant les deux ventilations

<cac:TaxTotal>
  <cbc:TaxAmount currencyID="GBP">11.70</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="GBP">58.50</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="GBP">11.70</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>S</cbc:ID>
      <cbc:Percent>20</cbc:Percent>
      <!-- tax scheme omitted from this fragment -->
    </cac:TaxCategory>
  </cac:TaxSubtotal>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="GBP">10.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>Z</cbc:ID>
      <cbc:Percent>0</cbc:Percent>
      <!-- tax scheme omitted from this fragment -->
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>

La facture en échec ferme le total de taxe après la ventilation au taux normal et en ouvre un second, avec son propre total de TVA de 0.00, pour la ventilation au taux zéro ; la facture corrigée garde les deux ventilations dans un seul total de taxe de 11.70. Chaque total de taxe concorde toujours avec sa propre ventilation : BR-CO-14 passe donc. Le document en échec signale aussi BR-CO-15 depuis l'étape EN 16931. Cette règle attend exactement un total de TVA dans la devise du document à ajouter au total hors TVA, en trouve deux, 11.70 et 0.00, et échoue sur le nombre, alors que 68.50 + 11.70 + 0.00 donne toujours le total TVA comprise de 80.20. Fusionner les totaux de taxe lève les deux constats.

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 aussi bien aux documents UBL Invoice qu'aux CreditNote. Lors d'un essai, un avoir réparti de la même façon a signalé les deux mêmes règles.
  • C'est une règle Peppol BIS, et l'étape EN 16931 ne compte pas les totaux de taxe en tant que tels. Une ventilation répartie échoue pourtant aux deux étapes, car BR-CO-15 réagit au second total de TVA dans la devise du document.
  • Un second total de taxe qui reprend la ventilation dans une devise de comptabilisation est compté lui aussi. Lors d'un essai, une copie en EUR de la ventilation au taux normal a signalé, entre autres constats, cette règle, PEPPOL-EN16931-R051 sur chacun de ses montants et PEPPOL-EN16931-R054. La devise de comptabilisation ne prend qu'un seul cbc:TaxAmount, sans ventilation.

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-24.1 : source vérifiée le 2026-09-24, explication mise à jour le 2026-09-24.

La définition officielle de PEPPOL-EN16931-R053 (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.