Error codes

BR-04: Invoice type code (BT-3) is missing

Severity: fatal · Syntax: CII, UBL

Official message

An Invoice shall have an Invoice type code (BT-3).

What this means

BT-3 must be present. UBL: cbc:InvoiceTypeCode or cbc:CreditNoteTypeCode, non-empty after normalize-space. Which codes are allowed is checked by other rules (BR-CL-01, and for XRechnung also BR-DE-17).

Typical cause

The type is set in the user interface, but the code element was not exported.

How to fix it

Send a code, for example 380 for a commercial invoice. This rule checks presence, not the code list.

UBL

<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>

CII

<ram:TypeCode>380</ram:TypeCode>

Business term

BT-3

Related rules

Context and assertion

UBL /ubl:Invoice | /cn:CreditNote

CII /rsm:CrossIndustryInvoice

UBL

normalize-space(cbc:InvoiceTypeCode) != '' or normalize-space(cbc:CreditNoteTypeCode) !=''

CII

normalize-space(rsm:ExchangedDocument/ram:TypeCode) != ''

Check a file now, free of charge

curl -F "file=@rechnung.xml" https://checkxrechnung.com/v1/validate

Questions

What does BR-04 actually check?

BT-3 must be present. UBL: cbc:InvoiceTypeCode or cbc:CreditNoteTypeCode, non-empty after normalize-space. Which codes are allowed is checked by other rules (BR-CL-01, and for XRechnung also BR-DE-17).

How do I fix BR-04?

Send a code, for example 380 for a commercial invoice. This rule checks presence, not the code list.

If BR-04 passes, is the invoice legally compliant?

No. This page helps you read this one Schematron assertion. A pass is not a statement about tax law, portal acceptance, or bank overlays.