PEPPOL-EN16931-R040: Allowance/charge amount must equal base amount * percentage/100 if base amount and…
Peppol BIS Billing 3.0.21 · UBL
Original rule text
[PEPPOL-EN16931-R040]-Allowance/charge amount must equal base amount * percentage/100 if base amount and percentage exists
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)PEPPOL-EN16931-R040 is a fatal rule in the format layer of Peppol BIS Billing 3.0.21 · UBL. An invoice that breaks it is rejected.
What this rule requires
The rule checks allowance/charge elements in UBL invoices and credit notes. If both cbc:BaseAmount and cbc:MultiplierFactorNumeric are present, the cbc:Amount must be approximately equal to cbc:BaseAmount * cbc:MultiplierFactorNumeric / 100, within a tolerance of 0.02. A document fails when both fields exist and the amount deviates by more than that tolerance, or when cbc:Amount is missing (treated as 0) but the calculated amount is not near 0.
How to fix
Ensure that when cbc:BaseAmount and cbc:MultiplierFactorNumeric are both present, cbc:Amount is set to the result of cbc:BaseAmount * cbc:MultiplierFactorNumeric / 100 (rounded as needed to stay within 0.02). If the allowance/charge is not percentage-based, remove either cbc:MultiplierFactorNumeric or cbc:BaseAmount so the rule does not apply. Otherwise, adjust the base amount or percentage to match the intended amount.
Guidance on this rule. The original text above is authoritative.
Where to go next
No published Peppol BIS Billing UBL release comparison lists a change to PEPPOL-EN16931-R040.
Validate an invoice against these rules · All release changes