InvoiceValidator.eu

BR-33

fatalEN 16931EN 16931 business ruleCIIUBLBG-20BT-97BT-98

Each Document level allowance (BG-20) shall have a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98).

Why it fails

A document level allowance (BG-20) has neither a reason text (BT-97) nor a reason code (BT-98).

How to fix it

Add a reason - free text BT-97 (UBL cbc:AllowanceChargeReason) is enough.

What the validator checks

CII — context $Document_level_allowances

(../ram:Reason) or (../ram:ReasonCode)

UBL — context cac:AllowanceCharge[cbc:ChargeIndicator = false()]

exists(cbc:AllowanceChargeReason) or exists(cbc:AllowanceChargeReasonCode)

Related rules

Part of BR — EN 16931 core business rules.

Check your own invoice against BR-33

…or paste the XML instead

Nothing is stored, and the whole invoice is checked, not just this rule. A PDF only works if it is Factur-X / ZUGFeRD — a PDF with the invoice XML inside it.