What does BR-CL-20 mean?
If a charge carries a reason code, that code must come from UNCL 7161 - the code list for charge reasons.
Common causes of BR-CL-20
- Free text such as 'Shipping' or 'Packaging' sits in the ReasonCode instead of the Reason field.
- An allowance code from UNCL 5189 was wrongly used for a charge.
- 'INS' or another code outside UNCL 7161 was used.
How to fix BR-CL-20
- Find the faulty spot in the XML. Open the XML of the invoice and go to field BT-105 along this XPath:
//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator='true']/ram:ReasonCode - Apply the fix. Code the charge reason (BT-105 on document level, BT-145 on invoice line level) with a code from UNCL 7161, e.g. 'FC' (freight cost), 'PC' (packing), 'AA' (advertising), 'AAA' (telecommunication), 'ABK' (miscellaneous). Free text belongs in ram:Reason, not in ram:ReasonCode.
- Validate again. Save the file and validate it again to check that BR-CL-20 is no longer reported.
Code the charge reason (BT-105 on document level, BT-145 on invoice line level) with a code from UNCL 7161, e.g. 'FC' (freight cost), 'PC' (packing), 'AA' (advertising), 'AAA' (telecommunication), 'ABK' (miscellaneous). Free text belongs in ram:Reason, not in ram:ReasonCode.
//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator='true']/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>true</udt:Indicator></ram:ChargeIndicator>
<ram:ActualAmount>15.00</ram:ActualAmount>
<ram:ReasonCode>VERSAND</ram:ReasonCode>
<ram:Reason>Versandkosten</ram:Reason>
</ram:SpecifiedTradeAllowanceCharge>
<ram:SpecifiedTradeAllowanceCharge>
<ram:ChargeIndicator><udt:Indicator>true</udt:Indicator></ram:ChargeIndicator>
<ram:ActualAmount>15.00</ram:ActualAmount>
<ram:ReasonCode>FC</ram:ReasonCode>
<ram:Reason>Versandkosten</ram:Reason>
</ram:SpecifiedTradeAllowanceCharge>
Frequent questions about BR-CL-20
How do UNCL 7161 and UNCL 5189 differ?
What if no matching code exists?
Related error codes
Check BR-CL-20 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.