Le code d’erreur PEPPOL-EN16931-R040 signifie : le montant d’une remise ou d’un supplément n’est pas égal au montant de base fois le pourcentage.
Que signifie PEPPOL-EN16931-R040 ?
Le validateur affiche ce message (en anglais, comme dans les règles officielles) :
[PEPPOL-EN16931-R040]-Allowance/charge amount must equal base amount * percentage/100 if base amount and percentage exists
Si une remise ou un supplément au niveau de la facture indique à la fois un pourcentage (MultiplierFactorNumeric) et un montant de base (BaseAmount), le montant (Amount) doit correspondre : montant de base × pourcentage / 100. Pour une remise, il s’agit des BT-94, BT-93 et BT-92, pour un supplément des BT-101, BT-100 et BT-99.
Causes fréquentes
- Le pourcentage a été modifié après le calcul.
- Le montant de base est le total TTC au lieu du total hors TVA.
- Un montant fixe a été indiqué, avec en plus un pourcentage.
Comment corriger en tant qu’émetteur
- Calculez le montant à partir du montant de base et du pourcentage, et arrondissez à deux décimales.
- Si vous utilisez un montant fixe, omettez le pourcentage et le montant de base : ils sont facultatifs.
- Vérifiez ensuite BR-CO-13 : le total hors TVA doit inclure la remise ou le supplément.
Vous avez reçu une facture avec cette erreur ?
Une facture avec cette erreur n’est pas conforme. Demandez une facture corrigée au fournisseur et ne modifiez pas le XML vous-même.
Exemple dans le XML
❌ Incorrect
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Korting</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">20.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">300.00</cbc:BaseAmount>
...
</cac:AllowanceCharge>
<!-- 10 % de 300.00 font 30.00, et non 20.00 -->
✅ Correct
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Korting</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">30.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">300.00</cbc:BaseAmount>
...
</cac:AllowanceCharge>
Les deux extraits proviennent d’une facture de test complète vérifiée avec notre validateur : la version incorrecte donne exactement ce message, la version correcte aucune erreur.
Bon à savoir
Dans notre test, une remise de 10 % sur 300,00 avec un montant de 20,00 donnait exactement cette erreur. Avec 30,00, la facture était valide.
Vérifiez votre facture
Déposez votre XML dans le validateur gratuit. Vous voyez tout de suite si cette erreur se produit encore, avec un lien vers l’explication pour chaque message.
Règle officielle
La règle complète avec son test technique (Schematron) figure dans la documentation officielle Peppol :
Codes d’erreur liés
- PEPPOL-EN16931-R120: Le montant net d’une ligne de facture n’est pas égal à quantité × prix unitaire, plus les suppléments et moins les remises de cette ligne.
- BR-CO-13: Le total hors TVA ne correspond pas à la somme des lignes moins les remises plus les suppléments au niveau de la facture.
Questions fréquentes sur PEPPOL-EN16931-R040
Dois-je indiquer le pourcentage et le montant de base ?
Non, ils sont facultatifs. Mais si vous les indiquez, le montant doit y correspondre.
La règle vaut-elle aussi pour les remises sur une ligne ?
Des règles similaires existent pour les remises au niveau de la ligne. Là aussi, le montant doit correspondre au montant de base et au pourcentage.