BR-CO-04

Every invoice line (BG-25) must carry a VAT category code (BT-151) — S for the standard rate, E for exempt, Z for zero-rated, AE for reverse charge, and so on.

Severity
Error
Applies to
CII, UBL
Rule set
v2026-01-31

Official rule text

Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151).

Why does BR-CO-04 happen?

The code sits in the header, where the tax breakdown is built anyway, and is forgotten at line level — particularly on invoices with a single rate, where repeating it looks redundant.

How do you fix BR-CO-04?

Set BT-151 on every line: cac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID in UBL, ram:ApplicableTradeTax/ram:CategoryCode at line level in CII. Every line must name it, even where the rate is the same throughout.

In the XML

A UBL fragment. The CII path is named above — same change, different element names.

Fails
<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Beratungsleistung</cbc:Name>
  </cac:Item>
</cac:InvoiceLine>
Fixed
<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Beratungsleistung</cbc:Name>
    <cac:ClassifiedTaxCategory>
      <cbc:ID>S</cbc:ID>
      <cbc:Percent>19</cbc:Percent>
      <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
    </cac:ClassifiedTaxCategory>
  </cac:Item>
</cac:InvoiceLine>

NormAPI provides technical validation, not tax or legal advice.