Peppol BIS Billing 3.0.21 · UBL

PEPPOL-EN16931-R040: Allowance/charge amount must equal base amount * percentage/100 if base amount and…

Peppol BIS Billing 3.0.21 · UBL

fatalformat

Original rule text

[PEPPOL-EN16931-R040]-Allowance/charge amount must equal base amount * percentage/100 if base amount and percentage exists

Stored validation assertion

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