Codes d'erreur Peppol

PEPPOL-EN16931-R120 : le montant de ligne ne correspond pas à quantité × prix

Le code d’erreur PEPPOL-EN16931-R120 signifie : 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.

Jeu de règles: Peppol BIS Billing 3.0 · Gravité: erreur (fatal) : un point d’accès rejette la facture · Vérifié avec les règles officielles de mai 2026

Que signifie PEPPOL-EN16931-R120 ?

Le validateur affiche ce message (en anglais, comme dans les règles officielles) :

[PEPPOL-EN16931-R120]-Invoice line net amount MUST equal (Invoiced quantity * (Item net price/item price base quantity) + Sum of invoice line charge amount - sum of invoice line allowance amount

Pour chaque ligne, la règle recalcule : quantité (InvoicedQuantity, BT-129) × prix net (Price/PriceAmount, BT-146, divisé par la quantité de base BaseQuantity, BT-149, si elle existe), plus les suppléments et moins les remises de la ligne. Le résultat doit correspondre au montant de ligne (LineExtensionAmount, BT-131). Peppol tolère 2 centimes : 3 × 99,99 = 299,97 contre 300,00 fait 3 centimes d’écart, donc une erreur.

Causes fréquentes

  • Le prix unitaire est arrondi (par exemple 33,33 pour un tiers de 100), alors que le montant de ligne est calculé sur le prix non arrondi.
  • Une remise de ligne est incluse dans le montant de ligne mais pas ajoutée comme AllowanceCharge sur la ligne, ou inversement.
  • Le prix s’applique par emballage ou par 100 pièces, mais la quantité de base (BaseQuantity) manque.
  • Le prix unitaire a été saisi TVA comprise au lieu de hors TVA.

Comment corriger en tant qu’émetteur

  1. Calculez le montant de ligne à partir de quantité × prix, et non le prix à partir du montant de ligne.
  2. Pour un prix par 100 ou par emballage, utilisez la quantité de base, ou convertissez en prix unitaire avec plus de décimales.
  3. Saisissez toujours le prix unitaire hors TVA.
  4. Ajoutez les remises de ligne comme remise (allowance) avec un montant propre.

Vous avez reçu une facture avec cette erreur ?

Vous ne pouvez pas corriger la facture vous-même. Demandez une facture corrigée au fournisseur. Il s’agit souvent d’un paramètre de son logiciel.

Exemple dans le XML

❌ Incorrect

<cac:InvoiceLine>
  <cbc:InvoicedQuantity unitCode="HUR">3</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="EUR">300.00</cbc:LineExtensionAmount>
  ...
  <cac:Price>
    <cbc:PriceAmount currencyID="EUR">99.99</cbc:PriceAmount>
  </cac:Price>
</cac:InvoiceLine>
<!-- 3 x 99.99 = 299.97, et non 300.00 -->

✅ Correct

<cac:InvoiceLine>
  <cbc:InvoicedQuantity unitCode="HUR">3</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="EUR">300.00</cbc:LineExtensionAmount>
  ...
  <cac:Price>
    <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
  </cac:Price>
</cac:InvoiceLine>

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 Peppol, le prix unitaire peut avoir plus de deux décimales. Un prix de 33,3333 est autorisé et résout de nombreux problèmes d’arrondi.

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

  • BR-CO-15: Le total TVA comprise n’est pas égal au total hors TVA plus le montant de TVA.
  • BR-27: Le prix net d’un article sur une ligne de facture est négatif. Ce n’est jamais autorisé.

Questions fréquentes sur PEPPOL-EN16931-R120

Quelle tolérance R120 accepte-t-elle ?

2 centimes par ligne. Un écart de 0,02 ou moins est accepté ; à partir de 0,03, c’est une erreur.

Le prix unitaire peut-il avoir plus de décimales ?

Oui. Le montant de ligne a deux décimales, mais le prix peut être plus précis, par exemple 33,3333.

← Tous les codes d’erreur Peppol