errorEN 16931

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.

Severity
Fatal
Rule set
EN 16931
Country
All EU
Fix type
AUTO-FIX
Confidence
90%
Category
calculation

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

1.

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.

2.

Recalculate

The correct amount = base amount × percentage ÷ 100. For example: base 500 × 10% = 50.

3.

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

Failing XML
<Invoice>
  <!-- Issue: Allowance/charge amount must equal base amount × percentage/ -->
</Invoice>
Corrected XML
<Invoice>
  <!-- Issue resolved per EN 16931 -->
</Invoice>

Technical Reference

XPathcac:AllowanceCharge/cbc:Amount
SpecEN 16931
Operationrecalculate
StrategyRecalculates the allowance/charge amount as base amount × percentage / 100

Code 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

All invoicing software

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

Share this guide:

Handle PEPPOL-EN16931-R040 Automatically in Your Pipeline

The compliance engine auto-remediates this error with controlled safety policies and evidence pack generation.