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:AllowanceChargeTest (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:SpecifiedTradeAllowanceChargeTest (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.
La même vérification par API:
curl -F file=@invoice.xml https://einvoicechecker.com/v1/validateRègles liées
PEPPOL-EN16931-R001Identifiant du processus métier (BT-23) absentPEPPOL-EN16931-R002Une seule note autorisée au niveau document, sauf si l'acheteur et le vendeur…PEPPOL-EN16931-R003Ni référence acheteur ni référence de bon de commandePEPPOL-EN16931-R004Identifiant de spécification autre que Peppol BIS Billing 3.0PEPPOL-EN16931-R005Devise de comptabilisation de la TVA identique à la devise de facturePEPPOL-EN16931-R006Un seul objet facturé autorisé au niveau documentPEPPOL-EN16931-R007Identifiant du processus métier au format incorrectPEPPOL-EN16931-R008Le document contient des éléments vides
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.