Peppol error codes

PEPPOL-EN16931-R046 / R044: price allowance does not add up

Error code PEPPOL-EN16931-R046 / PEPPOL-EN16931-R044 means: the net price does not equal the gross price minus the allowance (R046), or there is a charge on price level (R044).

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-R046 / PEPPOL-EN16931-R044 mean?

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

[PEPPOL-EN16931-R046]-Item net price MUST equal (Gross price - Allowance amount) when gross price is provided.
[PEPPOL-EN16931-R044]-Charge on price level is NOT allowed. Only value 'false' allowed.

In UBL, an allowance on the unit price is in cac:Price/cac:AllowanceCharge. The gross price (BT-148) is in cbc:BaseAmount, the allowance per unit (BT-147) in cbc:Amount and the net price (BT-146) in cbc:PriceAmount. PEPPOL-EN16931-R046 checks that the net price equals the gross price minus the allowance. In addition, PEPPOL-EN16931-R044 states that only an allowance is allowed on price level, not a charge: cbc:ChargeIndicator is always false there.

Common causes

  • The software converts a discount percentage into an amount and rounds it differently from the net price.
  • The allowance in cbc:Amount is stated for the whole line instead of per unit.
  • A charge, such as an environmental fee, is on price level with ChargeIndicator true.

How to fix it as the sender

  1. State the allowance per unit in cbc:Amount, not for the whole line.
  2. Make sure cbc:PriceAmount exactly equals cbc:BaseAmount minus cbc:Amount.
  3. Do not put charges on price level, but as a charge on line level or document level. Validate again.

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:Price>
  <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
    <cbc:Amount currencyID="EUR">25.00</cbc:Amount>
    <cbc:BaseAmount currencyID="EUR">120.00</cbc:BaseAmount>
  </cac:AllowanceCharge>
</cac:Price>
<!-- 120.00 - 25.00 = 95.00, not 100.00 -->

✅ Correct

<cac:Price>
  <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
    <cbc:Amount currencyID="EUR">20.00</cbc:Amount>
    <cbc:BaseAmount currencyID="EUR">120.00</cbc:BaseAmount>
  </cac:AllowanceCharge>
</cac:Price>

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

An allowance on price level is informative: the line amount is calculated with the net price. An allowance that lowers the line amount itself belongs as cac:AllowanceCharge directly under the invoice line.

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-10: The total of the invoice lines at the bottom of the invoice does not equal the sum of the line amounts.

Frequently asked questions about PEPPOL-EN16931-R046 / PEPPOL-EN16931-R044

Do I have to state the gross price?

No, the gross price and the price allowance are optional. If you do state them, they must match the net price.

Where do I put a charge on a product?

As a charge on the invoice line (cac:InvoiceLine/cac:AllowanceCharge with ChargeIndicator true), or as a separate invoice line.

← All Peppol error codes