Rule BR-CO-04
Every invoice line needs a VAT category code
Each line on the invoice states which VAT category it falls under, so the VAT breakdown can be built from the lines rather than asserted separately.
Business term BT-151, Invoiced item VAT category code. Source: EN 16931. Our wording, not the normative text, which is published in the Peppol BIS Billing 3.0 rule list (EN 16931 rules) and was checked against it on 2026-08-16.
Why it fires on invoices that look fine
Almost nobody hits this rule because they forgot the field exists. They hit it because something between their system and the document dropped it, changed its shape, or filled it with a value that is right somewhere else. These are the causes worth checking first.
- The category lives at document level in the sending system because every line has always had the same treatment, so nothing writes it per line on export.
- A line was added by a route that bypasses the normal builder: a manual adjustment, a rounding line, a shipping charge appended late. Those lines carry an amount and nothing else.
- The field exists but is empty rather than absent, most often an empty string left by a mapping that found nothing to copy. Empty and missing fail the same way here.
- The invoice is a credit note built by copying and negating an invoice, and the copy took the amounts without the tax attributes.
What to change
- Set the category on every line, including shipping, discounts and rounding lines. A line with an amount and no category is the shape this rule exists to catch.
- If your system really does hold one treatment per document, copy it down to every line at export rather than leaving the field out. That is a two line change and it is correct.
- Treat an empty string as missing in your own validation before sending, because a viewer will show you nothing in both cases and you will look for the wrong bug.
- Once every line has a category, expect the per-category rate rules to fire next on any line where the rate and the category disagree.
The validator runs in your browser. Nothing is uploaded, and you can confirm that yourself with the network panel open.
Rules you are likely to hit next
A document that breaks BR-CO-04 usually breaks one of these too, because the same mapping gap tends to affect neighbouring fields.
Questions people actually ask
- What does BR-CO-04 mean?
- Each line on the invoice states which VAT category it falls under, so the VAT breakdown can be built from the lines rather than asserted separately.
- Which field does BR-CO-04 apply to?
- BT-151, Invoiced item VAT category code. That is the name the semantic model uses, which is what you search for in your own system's mapping when the identifier alone does not tell you which field to look at.
- Does our validator check BR-CO-04?
- Yes. Paste your invoice data into the free validator and it reports this rule with the value it actually saw, without the document leaving your browser.