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.