Skip to content

Fatal

PEPPOL-EN16931-CL002: Discount reason code must be on the allowed list

In short

Fatal: fails the selected checks.

PEPPOL-EN16931-CL002 means a discount has a reason code (BT-98 or BT-140) that is not on the Peppol list. Pick an allowed code, such as 95 for a discount, or leave the code out and give the reason in words.

On this page

What it means

A discount can carry a reason code, either on the whole invoice (BT-98) or on a line (BT-140). Peppol accepts only these UNCL 5189 codes: 41, 42, 60, 62, 63, 64, 65, 66, 67, 68, 70, 71, 88, 95, 100, 102, 103, 104 and 105. The general ones are 95 (discount) and 100 (special rebate). A charge code such as FC, free text or any number outside the list fails. Charges use a different list, checked by PEPPOL-EN16931-CL003.

Why it matters

The reason code tells the recipient why an amount was taken off.

How to fix it

In your invoicing software, set the discount reason code on the invoice or on the line to an allowed UNCL 5189 code. You can also leave the code out and write the reason as text, such as "Volume discount". If you build the XML yourself, the code is cbc:AllowanceChargeReasonCode inside the cac:AllowanceCharge whose cbc:ChargeIndicator is false. If you omit the code, remove cbc:AllowanceChargeReasonCode rather than leaving an empty element.

Once the file is corrected, check it again for free: Validate a Peppol BIS invoice

Or fix the invoice in a form and download the corrected file, for 1 credit: Fix a rejected e-invoice

The rule as published

Read the rule on the publisher's site

Where this rule applies

Rule set Version
Peppol BIS Billing 3.0 (invoice) 2026.5
Peppol BIS Billing 3.0 (credit note) 2026.5
Rule text from phive-rules 4.6.4.

Check your file

Drop your e-invoice to see whether PEPPOL-EN16931-CL002 still fails, and which other rules do.

Updated 6 November 2026