What does BR-CL-19 mean?
If an allowance carries a reason code, that code must come from UNCL 5189 - the code list for allowance reasons.
Common causes of BR-CL-19
- Free text such as 'Discount' or 'Loyalty discount' sits in the ReasonCode instead of the Reason field.
- A charge code from UNCL 7161 was wrongly used for an allowance.
- An internal number (e.g. '01') was entered that does not exist in UNCL 5189.
How to fix BR-CL-19
- Find the faulty spot in the XML. Open the XML of the invoice and go to field BT-98 along this XPath:
//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator='false']/ram:ReasonCode - Apply the fix. Code the allowance reason (BT-98 on document level, BT-140 on invoice line level) with a code from UNCL 5189, e.g. '95' (discount), '100' (special rebate), '60' (manufacturer's rebate), '104' (standard rebate), '105' (annual bonus). Free text belongs in ram:Reason, not in ram:ReasonCode.
- Validate again. Save the file and validate it again to check that BR-CL-19 is no longer reported.
Code the allowance reason (BT-98 on document level, BT-140 on invoice line level) with a code from UNCL 5189, e.g. '95' (discount), '100' (special rebate), '60' (manufacturer's rebate), '104' (standard rebate), '105' (annual bonus). Free text belongs in ram:Reason, not in ram:ReasonCode.
//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator='false']/ram:ReasonCodeBefore / after: the XML example
This is the spot in question before and after the fix (Cross Industry Invoice, ZUGFeRD/Factur-X).
<ram:SpecifiedTradeAllowanceCharge>
<ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>
<ram:ActualAmount>10.00</ram:ActualAmount>
<ram:ReasonCode>RABATT</ram:ReasonCode>
<ram:Reason>Treuerabatt</ram:Reason>
</ram:SpecifiedTradeAllowanceCharge>
<ram:SpecifiedTradeAllowanceCharge>
<ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>
<ram:ActualAmount>10.00</ram:ActualAmount>
<ram:ReasonCode>95</ram:ReasonCode>
<ram:Reason>Treuerabatt</ram:Reason>
</ram:SpecifiedTradeAllowanceCharge>
Frequent questions about BR-CL-19
Do I have to give a reason as text next to the code?
Does the rule also apply to allowances on invoice line level?
Related error codes
Check BR-CL-19 automatically
Instead of digging through the XML by hand you can validate your ZUGFeRD or XRechnung file online – upload the PDF or the XML and you get every error with rule ID, affected field, fix and XPath, as a readable report or as JSON through the API.