BR-CO – Conditions and calculations
BR-CO-22: document level charge (BG-21) without a reason
ErrorEN 16931 business rule (CEN)
The rule's own wording
[BR-CO-22]-Each Document level charge (BG-21) shall contain a Document level charge reason (BT-104) or a Document level charge reason code (BT-105), or both.Source: CEN EN 16931, version 1.3.16
Meaning of the rule
Your invoice charges an amount at invoice level, such as shipping costs, without saying what for: reason text and reason code are both missing. The norm requires at least one of the two, so that the recipient can understand the amount and assign it to a cost type. Without a reason the charge remains an unexplained claim and the invoice is rejected. A word such as shipping costs or a code from UNTDID 7161 is enough.
What usually goes wrong
- Shipping or packaging costs were taken over as an amount without a label.
- The reason stands in the line text, but the charge at invoice level.
- The software knows only an amount field for charges.
The fix in the XML
Add to the charge cbc:AllowanceChargeReason with a short text or cbc:AllowanceChargeReasonCode with a code from UNTDID 7161, for example FC for freight. In CII they are ram:Reason and ram:ReasonCode of the SpecifiedTradeAllowanceCharge with indicator true.
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:Amount currencyID="EUR">12.90</cbc:Amount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge><cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>FC</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Shipping costs</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">12.90</cbc:Amount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>Questions and answers
Can I bill shipping costs as a line instead?
Yes, as an invoice line of its own with quantity and price. Then the charge at invoice level disappears and BR-CO-22 with it.
Which code fits packaging?
ABK from UNTDID 7161 stands for packaging; FC for freight, ADR for other services. The list is part of the norm.
EN 16931 fields
- BG-21
- BT-104
- BT-105
See also
- BR-38
- BR-CO-06
- BR-36
Check your invoice
The EN 16931 validator reports this rule with the line number and location – right in your browser, without upload.
The rule in detail
- UBL · Context (XPath)
/ubl:Invoice/cac:AllowanceCharge[cbc:ChargeIndicator = true()] | /cn:CreditNote/cac:AllowanceCharge[cbc:ChargeIndicator = true()]- UBL · Schematron test
exists(cbc:AllowanceChargeReason) or exists(cbc:AllowanceChargeReasonCode)- CII · Context (XPath)
//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator='true']- CII · Schematron test
(../ram:Reason) or (../ram:ReasonCode)
Explanation written on 14 September 2026