Peppol error codes

PEPPOL-EN16931-R040: allowance or charge does not match the percentage

Error code PEPPOL-EN16931-R040 means: the amount of an allowance or charge does not equal the base amount times the percentage.

Rule set: Peppol BIS Billing 3.0 · Severity: error (fatal): an Access Point rejects the invoice · Checked against the official rules of May 2026

What does PEPPOL-EN16931-R040 mean?

The validator shows this message (as worded in the official rules):

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

If a document-level allowance or charge states both a percentage (MultiplierFactorNumeric) and a base amount (BaseAmount), the amount (Amount) must match: base amount × percentage / 100. For an allowance these are BT-94, BT-93 and BT-92, for a charge BT-101, BT-100 and BT-99.

Common causes

  • The percentage was changed after the calculation.
  • The base amount is the total with VAT instead of without VAT.
  • A fixed amount was entered, with a percentage on top.

How to fix it as the sender

  1. Calculate the amount from base amount and percentage and round to two decimals.
  2. If you use a fixed amount, leave out percentage and base amount: they are optional.
  3. Then check BR-CO-13: the total without VAT must include the allowance or charge.

Received an invoice with this error?

An invoice with this error is not compliant. Ask the supplier for a corrected invoice and do not change the XML yourself.

Example in the XML

❌ Wrong

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReason>Korting</cbc:AllowanceChargeReason>
  <cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
  <cbc:Amount currencyID="EUR">20.00</cbc:Amount>
  <cbc:BaseAmount currencyID="EUR">300.00</cbc:BaseAmount>
  ...
</cac:AllowanceCharge>
<!-- 10 % of 300.00 is 30.00, not 20.00 -->

✅ Correct

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReason>Korting</cbc:AllowanceChargeReason>
  <cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
  <cbc:Amount currencyID="EUR">30.00</cbc:Amount>
  <cbc:BaseAmount currencyID="EUR">300.00</cbc:BaseAmount>
  ...
</cac:AllowanceCharge>

Both snippets come from a complete test invoice that we checked with our validator: the wrong version gives exactly this message, the correct version no errors at all.

Good to know

In our test, a 10% allowance on 300.00 with an amount of 20.00 gave exactly this error. With 30.00 the invoice was valid.

Check your invoice

Drop your XML into the free validator. You see right away whether this error still occurs, with a link to the explanation for every message.

Official rule

The full rule with its technical test (Schematron) is in the official Peppol documentation:

Related error codes

  • PEPPOL-EN16931-R120: The net amount of an invoice line does not equal quantity × unit price, plus charges and minus allowances on that line.
  • BR-CO-13: The total without VAT does not equal the sum of lines minus document-level allowances plus charges.

Frequently asked questions about PEPPOL-EN16931-R040

Do I have to state percentage and base amount?

No, they are optional. But if you do, the amount must match them.

Does the rule also apply to allowances on an invoice line?

Similar rules exist for line-level allowances. There too, the amount must match base amount and percentage.

← All Peppol error codes