An allowance states no reason
Each document level allowance (BG-20) must carry a reason in plain text (BT-97), a reason code (BT-98), or both.
Only the issuer holds this value: Factlint reports it and never fabricates it. Test your invoice to find out whether it is affected.
The message your validator prints
Copied verbatim from the sealed artefact: this is the exact sentence the check prints when this rule fails.
[BR-CO-21]-Each Document level allowance (BG-20) shall contain a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98), or both.
Quoted from schematron-cen 1.3.16, licensed under EUPL-1.2.
Common searches around this code
These phrases mirror what an integrator searches for: code, syntax, rule, business field and correction.
Test your file with this error in mind
Upload the invoice involved: the report will say whether this code appears, where it appears in the document, and whether Factlint can only report it or also fix it.
To automate this check in an ERP flow, call the validation API and link every returned code to its public page.
Why this error happens
An allowance without a reason is common on invoices coming out of a commercial negotiation, where the amount is keyed straight into the footer. The standard asks for no detailed justification — it asks that a reader be able to tell what it is.
How to fix it
Add either one. The UNCL 5189 code is enough and travels better than free text; the text stays useful when no code in the list describes the case.
XML correction example
<ram:SpecifiedTradeAllowanceCharge> <ram:ActualAmount>30.00</ram:ActualAmount> </ram:SpecifiedTradeAllowanceCharge>
<ram:SpecifiedTradeAllowanceCharge> <ram:ActualAmount>30.00</ram:ActualAmount> <ram:ReasonCode>95</ram:ReasonCode> </ram:SpecifiedTradeAllowanceCharge>