# BR-CO-24

> Each Invoice line charge (BG-28) shall contain an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145), or both.

Checked against Peppol BIS Billing 3.0 2026.5

Canonical: https://einvoicecheck.eu/rules/br-co-24

## Official rule text

Each Invoice line charge (BG-28) shall contain an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145), or both.

## Why did my invoice fail BR-CO-24?

Each invoice line charge (BG-28) must contain a charge reason as free text (BT-144) or a coded reason (BT-145), or both. Any surcharge on a specific line must be explained so the buyer can see what the added amount covers.

## Common causes

- Line-level cac:AllowanceCharge (ChargeIndicator=true) with an amount but no AllowanceChargeReason and no AllowanceChargeReasonCode.
- Charge reason only stored internally and not written to the UBL element.
- Reason code element rendered but empty.
- Line surcharge produced from a rule engine with amount only.

## How do I fix it?

```
On the line charge add a reason, e.g. <cac:AllowanceCharge><cbc:ChargeIndicator>true</cbc:ChargeIndicator><cbc:AllowanceChargeReason>Small order fee</cbc:AllowanceChargeReason>...</cac:AllowanceCharge>.
```
