# BR-CO-06 Document charge reason and code must agree

The document level charge reason code (BT-105) and the document level charge reason (BT-104) shall indicate the same type of charge.

## Problem Description

> **ERROR**: EN 16931 calculation and consistency rule (BR-CO)

## Context and Significance

EN 16931 defines this rule, but its meaning cannot be checked by machine. The EN 16931 validation artefacts for UBL and CII that the KoSIT validator uses contain only a placeholder check for BR-CO-06 that always passes, so BR-CO-06 never appears in a validation report. The requirement still applies to the data: the buyer books the charge by its code (BT-105) and reads the text (BT-104). A contradictory pair, such as code FC (Freight service) with the text "Early payment discount", leads to manual review or a disputed surcharge.

## Solution

Make the free-text reason (BT-104) and the reason code (BT-105) describe the same charge, for example code FC (Freight service) with the text "Freight charge". Choose the UNCL 7161 code first and use a text that matches its meaning.

- [Validate XML](/en/xrechnung-validator?source=resource&rule=BR-CO-06)
- [Convert invoice](/en/pdf-to-xrechnung?source=resource&rule=BR-CO-06)

## Valid Examples

- BT-105 = FC (Freight service) with BT-104 = "Freight charge"

## Invalid Examples

- BT-105 = FC (Freight service) with BT-104 = "Early payment discount"

## Code Examples

### Valid XML
```
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>FC</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Freight charge</cbc:AllowanceChargeReason>
  <cbc:Amount currencyID="EUR">15.00</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>
```

### Invalid XML
```
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>FC</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Early payment discount</cbc:AllowanceChargeReason>
  <cbc:Amount currencyID="EUR">15.00</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>
```

## Affected Fields

- [BT-104 Document level charge reason](/resources/xrechnung/bt-104-document-level-charge-reason)
- [BT-105 Document level charge reason code](/resources/xrechnung/bt-105-document-level-charge-reason-code)

## Related Rules

- [BR-CO-05](/resources/kosit-validator-errors/br-co-05-allowance-reason-code-match)
- [BR-CO-22](/resources/kosit-validator-errors/br-co-22-document-charge-reason-required)

## Validation Tools

- [Official KoSIT Validator](https://github.com/itplr-kosit/validator): Run the official KoSIT validator with the XRechnung configuration to check EN 16931 and XRechnung rules.
- [Convert PDF to XRechnung](/pdf-to-xrechnung): Find validation errors during conversion and review each correction.

## Related Resources

- [Official Specification](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/)
- [Test Suite](https://github.com/itplr-kosit/xrechnung-testsuite)
- [All validation errors](/resources/kosit-validator-errors): Overview of the EN 16931, XRechnung and Peppol validation rules explained here.
