Skip to content

Fatal

UBL-SR-30: A discount can have only one reason text

In short

Fatal: fails the selected checks.

UBL-SR-30 means a discount (allowance) has more than one reason text. Keep one short reason, such as "Early payment", and export again.

On this page

What it means

Each discount, marked in UBL by cbc:ChargeIndicator set to false, may carry its reason text (cbc:AllowanceChargeReason) only once. For a discount on the whole invoice this is the reason (BT-97). The reason code (BT-98) is a separate field and can sit next to the text.

Why it matters

EN 16931 allows at most one reason text in each discount block where cbc:ChargeIndicator is false.

How to fix it

Keep at most one reason text for each discount in your invoicing software. If you typed two descriptions, join them into one short text. In the XML, each cac:AllowanceCharge with cbc:ChargeIndicator false may contain only one cbc:AllowanceChargeReason; a code goes in cbc:AllowanceChargeReasonCode.

Once the file is corrected, check it again for free: Validate an invoice against EN 16931

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

The rule as published

Document level allowance reason shall occur maximum once

Where this rule applies

Rule set Version
EN 16931 (UBL) 1.3.17
EN 16931 (UBL credit note) 1.3.17
XRechnung 3.0 (UBL) 3.0.2
XRechnung 3.0 (UBL credit note) 3.0.2
Peppol BIS Billing 3.0 (invoice) 2026.5
Peppol BIS Billing 3.0 (credit note) 2026.5
SI-UBL 2.0 / NLCIUS (invoice) 2.0.3.13
SI-UBL 2.0 / NLCIUS (credit note) 2.0.3.13
France CTC (UBL invoice) 1.4.0-04
France CTC (UBL credit note) 1.4.0-04
CIUS-RO UBL Invoice 1.0.9 1.0.9
CIUS-RO UBL Credit Note 1.0.9 1.0.9
Rule text from phive-rules 4.6.4.

Check your file

Drop your e-invoice to see whether UBL-SR-30 still fails, and which other rules do.

Updated 6 November 2026