A line allowance states no reason
Each invoice line allowance (BG-27) must carry a reason in plain text (BT-139), a reason code (BT-140), 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-23]-Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), 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
Line allowances are often produced by a pricing engine that identifies them with an internal code, absent from the standard lists. The amount goes through, the identifier stays in the engine.
How to fix it
Map your internal code onto a UNCL 5189 entry, or failing that write the reason in plain text. The mapping is done once, in the pricing engine.
XML correction example
<ram:SpecifiedTradeAllowanceCharge> <ram:ActualAmount>5.00</ram:ActualAmount> </ram:SpecifiedTradeAllowanceCharge>
<ram:SpecifiedTradeAllowanceCharge> <ram:ActualAmount>5.00</ram:ActualAmount> <ram:Reason>Remise fidélité</ram:Reason> </ram:SpecifiedTradeAllowanceCharge>