# BR-CO-4 Each invoice line must have a VAT category code

Every invoice line (BG-25) must carry an Invoiced item VAT category code (BT-151) so that each line can be assigned to a VAT breakdown.

## Problem Description

Every invoice line (BG-25) must carry an Invoiced item VAT category code (BT-151) so that each line can be assigned to a VAT breakdown.

> **ERROR**: XRechnung 3.0

## Context and Significance

Without a category code per line, the validator cannot reconcile line-level taxable amounts against the document-level VAT breakdown (BG-23). This is the foundation for all BR-S, BR-Z, BR-E and BR-AE checks.

## Solution

Add BT-151 (for example "S" for standard rate, "Z" for zero rate, "AE" for reverse charge) to every invoice line.

- validate
- convert

## Valid Examples

- Line 1 BT-151 = "S" with BT-152 = 19
- Line 2 BT-151 = "Z" (zero rated) with BT-152 = 0

## Invalid Examples

- Invoice line without any ClassifiedTaxCategory element
- Invoice line with empty BT-151

## Technical Details

### Affected Fields
BT-151 Invoiced item VAT category code

## Related Rules

- [BR-CO-3](/resources/kosit-validator-errors/br-co-3-vat-point-date-and-code-mutually-exclusive)
- [BR-S-1](/resources/kosit-validator-errors/br-s-1-standard-rated-line-requires-standard-rated-vat-breakdown)
- [BR-CO-17](/resources/kosit-validator-errors/br-co-17-vat-category-tax-amount-must-match-base-times-rate)

## Validation Tools

- [Official KoSIT Validator](https://erechnungsvalidator.service-bw.de/): Validate your XRechnung files against all BR-DE rules.
- [Convert PDF to XRechnung](/pdf-to-xrechnung): Automatic validation error fixes when converting.

## Related Resources

- [Official Specification](https://xeinkauf.de/xrechnung/)
- [Test Suite](https://github.com/itplr-kosit/xrechnung-testsuite)
- [Complete Error List](/resources/kosit-validator-errors): Overview of all German XRechnung validation rules.
