PEPPOL-EN16931-R040:Discount or surcharge amount doesn't match the calculation
A discount or surcharge amount does not match its base amount multiplied by the percentage. When all three values are provided (amount, base amount, and percentage), they must be consistent: amount = base amount × percentage ÷ 100.
Engine Classification
Recalculates the allowance/charge amount as base amount × percentage / 100
Confidence: 90% · Applied automatically in pipeline
What is PEPPOL-EN16931-R040?
PEPPOL-EN16931-R040 is a fatal validation rule defined in the EN 16931 specification. It validates the Amount element in the UBL invoice XML.
When this rule fires, the invoice is non-compliant and will be rejected by Peppol access points and national validation services. The sending system receives a rejection response and the invoice does not reach the buyer.
Target path: cac:AllowanceCharge/cbc:Amount
Why This Error Matters
Invoice will be rejected by PEPPOL validation. Allowance/charge calculations must be mathematically consistent.
PEPPOL-EN16931-R040 is a hard failure. Invoices that trigger this rule are rejected at the access point and never reach the recipient. In Peppol networks, this means your sending system receives an MLR (Message Level Response) with a rejection status. The invoice must be corrected and re-sent, adding delay to your payment cycle.
Invoice Navigator can automatically correct this error in your pipeline. The fix is applied with full audit evidence, so your compliance trail remains intact.
Validator Behavior
- ·Causes invoice rejection
- ·Error returned: PEPPOL-EN16931-R040
- ·Specification: EN 16931
How to Fix It
Find the inconsistent discount/surcharge
Check each document-level and line-level allowance or charge. One of them has amount, base amount, and percentage that do not match.
Recalculate
The correct amount = base amount × percentage ÷ 100. For example: base 500 × 10% = 50.
Decide which value is wrong
Usually the amount should be recalculated from the base and percentage. But if the amount is correct, adjust the percentage or base amount instead.
Before / After
<Invoice> <!-- Issue: Allowance/charge amount must equal base amount × percentage/ --> </Invoice>
<Invoice> <!-- Issue resolved per EN 16931 --> </Invoice>
Technical Reference
cac:AllowanceCharge/cbc:AmountCode Example
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>100</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Early payment discount</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">50.00</cbc:Amount>
</cac:AllowanceCharge>Common Causes
- ·Rounding differences between ERP calculation and EN16931 formula
- ·Percentage changed after amount was calculated
- ·Manual override of discount amount without updating percentage
Seeing this in production? The API handles PEPPOL-EN16931-R040 automatically. See the fix response →
Commonly Seen In
Frequently Asked Questions
Document and line allowances must set ChargeIndicator to false.
Set ChargeIndicator to false for allowances. Invoice Navigator can help identify and fix this issue.
Yes, PEPPOL-EN16931-R040 is a critical error that must be fixed.
See Also
Related Errors
Last updated: 27 February 2026
Handle PEPPOL-EN16931-R040 Automatically in Your Pipeline
The compliance engine auto-remediates this error with controlled safety policies and evidence pack generation.