errorbusinessEN 16931

PEPPOL-EN16931-R040:Discount or surcharge amount doesn't match the calculation

Fix: Invoice Navigator automatically fixes this Invoice compliance issue by updating the relevant XML elements (PEPPOL-EN16931-R040). Upload your invoice to fix this automatically.

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 rejected by Peppol access points and never reaches 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 — the invoice must be corrected and re-sent before it can reach the recipient.

Inconsistent discount/surcharge calculations make the invoice totals unreliable. The invoice will be rejected by Peppol validation because the numbers do not add up.

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.

Related Errors

Related Content

Last updated: 31 March 2026

Share this guide:

Validate your invoice

Drop your XML here to check for PEPPOL-EN16931-R040

Auto-fix PEPPOL-EN16931-R040 in seconds

Upload your invoice and we fix this error automatically. Financial fields are never touched.