BR-CO – Conditions and calculations
BR-CO-08: line charge reason and reason code do not match
ErrorEN 16931 business rule (CEN)
Official message
[BR-CO-08]-Invoice line charge reason code (BT-145) and Invoice line charge reason (BT-144) shall indicate the same type of charge reason.Source: CEN EN 16931, version 1.3.16
What the message means
A charge in an invoice line, for example for special packaging or express delivery, may carry its reason as text and as a code from UNTDID 7161. Both details must mean the same kind of charge. Because no validator can judge the meaning of a free text, the rule is not checked technically and appears in no validation report. It addresses the issuer: the recipient reads text and code, and a contradiction between them costs trust and time.
Common causes
- The charge code is taken from one preset for all lines.
- An allowance code from UNTDID 5189 was used for a charge.
- The text describes the item, not the reason for the charge.
How to fix it
Set per line charge the fitting code from UNTDID 7161, for example ABK for packaging, and a matching text, or only one of the two. In UBL they stand in cac:InvoiceLine/cac:AllowanceCharge with ChargeIndicator true.
<cac:InvoiceLine>
<cbc:ID>2</cbc:ID>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Special packaging</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">8.00</cbc:Amount>
</cac:AllowanceCharge>
</cac:InvoiceLine><cac:InvoiceLine>
<cbc:ID>2</cbc:ID>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>ABK</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Special packaging</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">8.00</cbc:Amount>
</cac:AllowanceCharge>
</cac:InvoiceLine>Frequently asked
Why do allowances and charges have different code lists?
Allowances use UNTDID 5189, charges UNTDID 7161, because the kinds of deductions and surcharges in trade differ; the BR-CL rules check the right list in each case.
Can I state the same charge at document level instead of per line?
Yes, when it does not belong to a single line. At document level BR-CO-06 then applies: “Document level charge reason code (BT-105) and Document level charge reason (BT-104) shall indicate the same type of charge.”
Fields concerned
- BT-144
- BT-145
- BG-28
Related rules
Check your invoice
The EN 16931 validator reports this rule with the line number and location – right in your browser, without upload.
Technical details
- UBL · Context (XPath)
//cac:InvoiceLine/cac:AllowanceCharge[cbc:ChargeIndicator = true()] | //cac:CreditNoteLine/cac:AllowanceCharge[cbc:ChargeIndicator = true()]- UBL · Schematron test
true()- CII · Context (XPath)
//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator = 'true']- CII · Schematron test
true()
Explanation written on 14 September 2026