Compte
Français

PEPPOL-EN16931-R046: Prix net de l'article différent de prix brut moins remise

Règle Peppol BIS Billing 3.0 · Erreur · UBL, CII

NormePeppol BIS Billing 3.0 (OpenPeppol)GravitéErreur: la facture est rejetéeSyntaxeUBL, CIIS'applique àFactures et avoirs transmis via le réseau Peppol (UBL) et, XRechnung reprenant ces règles, toute XRechnung.

Texte officiel de la règle

[PEPPOL-EN16931-R046] Item net price MUST equal (Gross price - Allowance amount) when gross price is provided.

Le texte normatif est en anglais ; il est cité tel quel.

Pourquoi cette erreur apparaît

Lorsqu'un prix brut (BT-148) est indiqué, le prix net (BT-146) doit être exactement égal au prix brut diminué de la remise sur le prix de l'article (BT-147) ; aucune tolérance n'est admise. En UBL, la règle compare cac:Price/cbc:PriceAmount à cac:Price/cac:AllowanceCharge/cbc:BaseAmount moins cbc:Amount ; en CII, ram:NetPriceProductTradePrice/ram:ChargeAmount à ram:GrossPriceProductTradePrice/ram:ChargeAmount moins ram:AppliedTradeAllowanceCharge/ram:ActualAmount. Elle échoue lorsque la remise est dérivée d'un pourcentage et arrondie séparément, ou lorsque les prix net et brut n'ont pas le même nombre de décimales.

Comment corriger

Formule : PriceAmount = BaseAmount - Amount (UBL) / ChargeAmount du prix net = ChargeAmount du prix brut - ActualAmount (CII), comparés en décimales exactes. Calculez d'abord le montant de la remise, puis déduisez-en le prix net, en utilisant le même nombre de décimales pour les trois valeurs (jusqu'à quatre sont courantes pour les prix). Si vous ne pouvez pas reproduire exactement le couple prix brut/remise, supprimez la remise au niveau du prix et le prix brut, et n'indiquez que le prix net, ce qui suffit toujours.

Exemple (valide)

<cac:Price>
  <cbc:PriceAmount currencyID="EUR">85.50</cbc:PriceAmount>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
    <cbc:Amount currencyID="EUR">4.50</cbc:Amount>
    <cbc:BaseAmount currencyID="EUR">90.00</cbc:BaseAmount>
  </cac:AllowanceCharge>
</cac:Price>

Ce que le validateur vérifie

Élément vérifié (contexte):

UBL

cac:Price/cac:AllowanceCharge

Test (XPath):

not(cbc:BaseAmount) or xs:decimal(../cbc:PriceAmount) = xs:decimal(cbc:BaseAmount) - xs:decimal(cbc:Amount)

CII

rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice

Test (XPath):

not(ram:ChargeAmount) or xs:decimal(../ram:NetPriceProductTradePrice/ram:ChargeAmount) = xs:decimal(ram:ChargeAmount) - u:decimalOrZero(ram:AppliedTradeAllowanceCharge/ram:ActualAmount[1])

Vérifier votre facture

Déposez votre XML ou PDF dans le validateur : chaque règle en échec renvoie vers sa page ici. Gratuit, sans compte, le fichier n'est pas conservé.

Vérifier votre facture →

La même vérification par API:

curl -F file=@invoice.xml https://einvoicechecker.com/v1/validate

Règles liées

Questions fréquentes

Que signifie PEPPOL-EN16931-R046 ?

PEPPOL-EN16931-R046 est une règle peppol bis billing 3.0 : Item net price MUST equal (Gross price - Allowance amount) when gross price is provided.

Ma facture sera-t-elle rejetée à cause de PEPPOL-EN16931-R046 ?

Oui. PEPPOL-EN16931-R046 est classée « bloquante » ; les validateurs (plateformes agréées, points d'accès Peppol, KoSIT, KSeF) rejettent la facture tant qu'elle n'est pas corrigée.

À quels formats s'applique PEPPOL-EN16931-R046 ?

Factures et avoirs transmis via le réseau Peppol (UBL) et, XRechnung reprenant ces règles, toute XRechnung. Syntaxe : UBL et CII.

Source: Peppol BIS Billing 3.0.20 (November 2025). Catalogue généré à partir des jeux de règles officiels le 2026-10-15.