Skip to content

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.

Before – invalid
<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>
After – corrected
<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

Check your invoice

The EN 16931 validator reports this rule with the line number and location – right in your browser, without upload.

Open the EN 16931 validator

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