What is KOSIT Validation?
The Coordination Office for IT Standards (KOSIT) provides the official validator for XRechnung documents. This validator checks every submitted e-invoice in two steps: first against the UBL 2.1 XML schema (syntactic well-formedness), then against an extensive set of Schematron rules that implement the business rules of EN 16931 plus the German extension rules (BR-DE-*).
Schematron rules are classified by severity: fatal errors (FATAL/Critical) prevent acceptance of the invoice, warnings (WARNING) flag deviations that many systems also treat as blocking. The most common error sources are miscalculated totals, missing mandatory fields per the German extension specification, invalid code values, and format violations in Leitweg-ID or date fields.
This reference covers all essential error codes — from structural XML errors through core EN 16931 rules (BR-1, BR-6, BR-CO-*) to German extension rules (BR-DE-1 through BR-DE-29) and VAT-specific rules (BR-S-*, BR-E-*, BR-Z-*, BR-AE-*).
Severity Levels
The invoice is rejected. The error must be fixed before resubmitting.
WarningNot technically blocking per spec, but many receiving systems also treat warnings as a rejection cause.
Error Database
Select an error code for detailed remediation instructions.
Seller VAT ID Missing (BT-31)
The seller's VAT identification number (Umsatzsteuer-Identifikationsnummer) must be provided in Business Term BT-31. This is mandatory for all German invoices above the small business threshold (Kleinunternehmerregelung). Without it, the receiving PEPPOL/ZRE system will reject the document.
Buyer Reference Missing (BT-10)
A buyer reference (Leitweg-ID) is required in BT-10 for all invoices sent to German public sector entities. This is the routing identifier used by the ZRE/OZG-RE portals to route the invoice to the correct administrative unit. Without it, the invoice cannot be delivered.
Seller Contact Telephone Missing (BT-42)
The seller's contact telephone number (BT-42) should be provided. While a Warning in XRechnung Core, many federal and state receiving systems treat this as a blocking error in their local configuration.
Seller Contact Email Missing (BT-43)
The seller's contact email (BT-43) should be provided for correspondence purposes. Automated workflows at the receiver may use this address to send rejection or query notices.
Seller Contact Name Missing (BT-41)
The seller's contact person name (BT-41) is expected in German invoices. Most receiving portals display this name in their processing queue so that government clerks can reach the correct person.
Leitweg-ID Format Invalid (BT-10)
The Leitweg-ID in BT-10 is present but does not match the required format. A valid Leitweg-ID consists of three hyphen-separated segments: a leading code (e.g. '04011000'), a ten-digit identifier, and a two-digit check segment (e.g. '06'). Invalid formats cause routing failures at ZRE/OZG-RE.
Invoice Type Code Invalid (BT-3)
The invoice type code in BT-3 must be one of the values permitted for XRechnung: 380 (Commercial Invoice), 381 (Credit Note), 384 (Corrected Invoice), 389 (Self-billed Invoice), 875 (Partial Construction Invoice), 876 (Partial Final Construction Invoice), or 877 (Final Construction Invoice). Other UNTDID 1001 codes are not accepted.
Payment Means Code Invalid (BT-81)
The payment means type code in BT-81 must be one of the UNCL4461 codes allowed by XRechnung: 10 (Cash), 20 (Cheque), 30 (Credit Transfer / SEPA), 42 (Payment to bank account), 48 (Bank card), 49 (Direct Debit), 57 (Standing agreement), 58 (SEPA Credit Transfer), or 59 (SEPA Direct Debit). Codes outside this set are rejected.
Seller Address Street Missing (BT-35)
The seller's street address (BT-35, cbc:StreetName) is mandatory for XRechnung invoices. EN 16931 marks it as optional, but the German extension requires it for tax compliance and GoBD archiving purposes.
Seller Address City Missing (BT-37)
The city name (BT-37, cbc:CityName) in the seller's postal address is required by the German XRechnung specification. It is used for tax jurisdiction verification.
Buyer Address Street Missing (BT-50)
The buyer's street address (BT-50) is mandatory in XRechnung. The German extension requires a complete postal address for the buyer (Accounting Customer Party) to enable correct financial accounting and vendor management on the buyer's side.
Sum of Line Net Amounts Mismatch (BT-106)
The sum of all InvoiceLine net amounts (BT-131) must equal the Invoice total net amount (BT-106). This arithmetic validation ensures data consistency across all line items and the document totals section. Even a 1-cent rounding difference will cause rejection.
VAT Total Calculation Error (BT-110)
The invoice total VAT amount (BT-110) must equal the sum of all VAT category tax amounts (BT-117). Each VAT breakdown group must have an internally consistent taxable amount, rate, and resulting tax amount. Rounding must be applied per category, not to the sum.
Grand Total Calculation Error (BT-112)
The invoice total amount with VAT (BT-112, cbc:TaxInclusiveAmount) must equal the Invoice total without VAT (BT-109) plus the total VAT amount (BT-110). This cross-check ensures that the gross payable amount is arithmetically consistent with its components.
Payable Amount Calculation Error (BT-115)
The amount due for payment (BT-115, cbc:PayableAmount) must equal the invoice total with VAT (BT-112) minus the paid amount (BT-113) plus any rounding adjustment (BT-114). A mismatch here often indicates a prepayment or rounding value has been included in the total but not correctly reflected in the payable amount.
Invoice Number Missing (BT-1)
Every EN 16931 invoice must carry a unique invoice identifier (BT-1) in cbc:ID. This is the invoice number as it appears on the paper equivalent. It must be unique within the seller's context and may not be empty or whitespace-only.
Invoice Issue Date Missing (BT-2)
The invoice issue date (BT-2, cbc:IssueDate) is mandatory. It must be formatted as YYYY-MM-DD per ISO 8601. A missing or incorrectly formatted date prevents the receiving system from determining the tax point date and payment due date.
Seller Name Missing (BT-27)
The seller's legal name (BT-27) must be present in cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:RegistrationName. This is the full registered company name, not a trading name or abbreviation.
Buyer Name Missing (BT-44)
The buyer's legal name (BT-44, cbc:RegistrationName under the AccountingCustomerParty) is mandatory. Without the buyer's name, the invoice cannot be matched to the correct procurement record at the receiving authority.
Seller Postal Address Country Missing (BT-40)
The seller must include a country code (BT-40) in their postal address. The code must be a valid ISO 3166-1 alpha-2 value (e.g. 'DE' for Germany). This field determines the tax jurisdiction and is required for all cross-border VAT checks.
Invoice Line Amount Missing (BT-131)
Every invoice line (InvoiceLine) must have a net amount (BT-131) in cbc:LineExtensionAmount. This amount equals quantity × unit price, adjusted for any line-level allowances or charges. A missing or zero value without justification triggers this error.
Standard VAT: Taxable Amount Missing (BT-116)
When a VAT category S (Standard Rate) is used, the taxable amount (BT-116, cbc:TaxableAmount) must be present and greater than zero in the VAT Breakdown group (BG-23). This is the aggregate net value of all invoice lines subject to standard rate VAT.
Standard VAT: Tax Amount Missing (BT-117)
When VAT category S is used, the corresponding tax amount (BT-117, cbc:TaxAmount) must be present. The value must equal the taxable amount multiplied by the VAT rate percentage divided by 100, rounded to 2 decimal places.
Standard VAT: Rate Percent Missing (BT-119)
When a line or document uses VAT category S, the VAT rate percentage (BT-119, cbc:Percent) must be specified in the TaxCategory element. German standard rate is 19%; reduced rate is 7%. Omitting the percentage makes automatic tax calculation impossible.
Zero-Rated VAT: Taxable Amount Missing (BT-116/Z)
When VAT category Z (Zero-Rated) is used, a taxable amount must still be provided in the TaxSubtotal. The tax amount must be 0.00 and the percentage must be 0. This category applies to goods exported outside the EU and certain intra-community supplies.
Exempt VAT: Exemption Reason Missing (BT-120/BT-121)
When VAT category E (Exempt from VAT) is used, the invoice must include either an exemption reason text (BT-120) or an exemption reason code (BT-121) in the TaxCategory. Without this, auditors cannot verify the legal basis for not charging VAT.
Reverse Charge: VAT Amount Must Be Zero
When VAT category AE (Reverse Charge) is used, the tax amount (BT-117) in the TaxSubtotal must be 0.00. In a reverse charge scenario the buyer, not the seller, accounts for the VAT. Entering a non-zero tax amount contradicts the reverse charge mechanism and triggers this error.
XML Not Well-Formed
The submitted file cannot be parsed as XML. Common causes are: unclosed tags, missing root element, invalid characters (e.g. unescaped & or <), invalid encoding declaration, or a BOM (Byte Order Mark) in a non-UTF-8 encoding. The KOSIT validator rejects the document before any Schematron rules are checked.
Wrong XML Namespace or Root Element
The root element or its namespace declaration does not match the expected UBL 2.1 Invoice or CreditNote namespace. XRechnung uses UBL 2.1: the namespace for invoices is 'urn:oasis:names:specification:ubl:schema:xsd:Invoice-2'. ZUGFeRD/Factur-X uses a different namespace (Cross Industry Invoice).
Mandatory Element Cardinality Violated
One or more mandatory elements required by the UBL 2.1 XSD schema are either missing or appear more than once when the cardinality is [1..1]. This error fires before Schematron rules and typically indicates a structural generation bug in invoicing software.
IGST: Taxable Amount Missing
When VAT category IG (IGST – Integrated Goods and Services Tax for transactions involving India) is used, the taxable amount must be provided. This rule applies to international invoices where Indian GST rules apply.
Outside Scope: Taxable Amount Missing
When VAT category O (Services Outside Scope of VAT) is used, a taxable amount must still be declared in the TaxSubtotal. Category O is used for services that fall entirely outside the VAT system (e.g. certain financial services). The tax amount must be 0.00.
Invoice Line Identifier Missing (BT-126)
Each invoice line must have a unique line identifier (BT-126, cbc:ID). Line IDs are typically sequential integers starting from 1. They are used by receiving ERP systems to reference individual positions in payment and accounting workflows.
Invoice Line Item Name Missing (BT-153)
Every invoice line must include an item name (BT-153, cbc:Name under cac:Item). This is the description of the goods or services invoiced. Without it, the receiving system cannot generate human-readable invoice documents or match positions to purchase orders.
Additional Supporting Document Reference Missing URL or Description
When an Additional Supporting Document (BG-24) is referenced, it must have either an External Document URI (BT-124) or an Attached Document description (BT-123). An empty reference block with no identifiable content triggers this error and can cause the receiver's system to fail processing the attachment.
Seller Tax Registration Number Missing (BT-32)
When BT-31 (VAT ID) is not provided (e.g. for small businesses using Kleinunternehmerregelung), the seller must provide their local tax number (Steuernummer) in BT-32. Both BT-31 and BT-32 cannot be empty simultaneously for German invoices.
Currency Code Invalid or Missing (BT-5)
The document currency code (BT-5, cbc:DocumentCurrencyCode) must be a valid ISO 4217 alphabetic code. For German domestic invoices this is almost always 'EUR'. The currency code must be consistent with all amount currencyID attributes throughout the document.
Done debugging XML?
Our Smart Repair engine automatically detects these errors, fixes them in milliseconds, and issues a GoBD-compliant audit trail.
Launch Application