Compte
Français

PEPPOL-EN16931-R040: Montant de remise ou majoration différent de base x pourcentage

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-R040] Allowance/charge amount must equal base amount * percentage/100 if base amount and percentage exists

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

Pourquoi cette erreur apparaît

Lorsqu'une remise ou une majoration indique à la fois un montant de base et un pourcentage, le montant doit être égal à base x pourcentage / 100, avec une tolérance de 0,02. La règle compare cbc:Amount à cbc:BaseAmount et cbc:MultiplierFactorNumeric dans cac:AllowanceCharge au niveau document et ligne (UBL), ou ram:ActualAmount à ram:BasisAmount et ram:CalculationPercent dans ram:SpecifiedTradeAllowanceCharge (CII). Elle échoue lorsque le pourcentage est exprimé en fraction (0.10 au lieu de 10), lorsque le montant de base ne correspond pas à l'assiette réellement utilisée pour calculer le montant, ou lorsque l'arrondi diffère.

Comment corriger

Formule : Amount = round(BaseAmount x MultiplierFactorNumeric / 100, 2). Exprimez le pourcentage en nombre de pour cent (10 pour 10 %). Renseignez BaseAmount avec le montant auquel la remise a réellement été appliquée (en général la somme des lignes concernées) et calculez Amount à partir de celui-ci. Si vous ne pouvez pas fournir une base cohérente, omettez à la fois cbc:BaseAmount et cbc:MultiplierFactorNumeric et n'indiquez que cbc:Amount, ce qui est toujours admis.

Exemple (valide)

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReason>Discount</cbc:AllowanceChargeReason>
  <cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
  <cbc:Amount currencyID="EUR">25.00</cbc:Amount>
  <cbc:BaseAmount currencyID="EUR">250.00</cbc:BaseAmount>
  <cac:TaxCategory><cbc:ID>S</cbc:ID><cbc:Percent>19</cbc:Percent><cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme></cac:TaxCategory>
</cac:AllowanceCharge>

Ce que le validateur vérifie

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

UBL

ubl-invoice:Invoice/cac:AllowanceCharge | ubl-invoice:Invoice/cac:InvoiceLine/cac:AllowanceCharge | ubl-creditnote:CreditNote/cac:AllowanceCharge | ubl-creditnote:CreditNote/cac:CreditNoteLine/cac:AllowanceCharge

Test (XPath):

not(cbc:MultiplierFactorNumeric and cbc:BaseAmount) or u:slack(if (cbc:Amount) then
            cbc:Amount
          else
            0, (xs:decimal(cbc:BaseAmount) * xs:decimal(cbc:MultiplierFactorNumeric)) div 100, 0.02)

CII

ram:SpecifiedTradeAllowanceCharge

Test (XPath):

not(ram:CalculationPercent and ram:BasisAmount) or u:slack(if (ram:ActualAmount) then
                        ram:ActualAmount
                    else
                        0, (xs:decimal(ram:BasisAmount) * xs:decimal(ram:CalculationPercent)) div 100, 0.02)

Corriger automatiquement

Cette erreur peut être corrigée automatiquement : après confirmation, le vérificateur recalcule les totaux et la TVA à partir des lignes.

Corriger ma 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-R040 ?

PEPPOL-EN16931-R040 est une règle peppol bis billing 3.0 : Allowance/charge amount must equal base amount * percentage/100 if base amount and percentage exists

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

Oui. PEPPOL-EN16931-R040 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-R040 ?

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.