Account
English

BR-TMP-CVD-01: The scheme for … "Item classification identifier" must be chosen from the code list…

XRechnung rule · Error · UBL / CII

StandardXRechnung 3.0.2 (KoSIT, German CIUS of EN 16931)SeverityError: the invoice is rejectedSyntaxUBL, CIIBusiness terms
  • BT-158 Item classification identifier
Applies toXRechnung in UBL or CII syntax, including ZUGFeRD / Factur-X PDFs with the XRECHNUNG profile. Invoices to German public authorities (federal, state and municipal) must pass it.

Official rule text

[BR-TMP-CVD-01] The scheme for … "Item classification identifier" (BT-158) must be chosen from the code list UNTDID 7143.

Official text (German): Das Bildungsschema für … "Item classification identifier" (BT-158) ist aus der Codeliste UNTDID 7143 zu wählen.

Why this error occurs

The value must come from a fixed code list and the value in your file is not on it. Common causes: a free-text value instead of a code ("Invoice" instead of 380), a code from an older list version, lower-case codes, or a code valid in another standard but not in this one.

How to fix it

Replace the value with a code from the list named in the rule text (UNTDID 1001 for document types, UNTDID 5305 for VAT categories, ISO 4217 for currencies, ISO 3166-1 for countries, UN/ECE Recommendation 20/21 for units, EAS for electronic addresses, ISO 6523 ICD for scheme identifiers). Codes are case-sensitive.

What the validator checks

Checked element (context):

UBL

(/ubl:Invoice[$isCVD]/cac:InvoiceLine | /cn:CreditNote[$isCVD]/cac:CreditNoteLine)/cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode

Test (XPath):

((not(contains(normalize-space(@listID), ' ')) and contains($UNTDID-7143-CVD-CODES, concat(' ', normalize-space(@listID), ' '))))

CII

/rsm:CrossIndustryInvoice[$isCVD]/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode

Test (XPath):

((not(contains(normalize-space(@listID), ' ')) and contains($UNTDID-7143-CVD-CODES, concat(' ', normalize-space(@listID), ' '))))

Check your invoice

Drop your XML or PDF on the validator and every failed rule is linked to its page here. Free, no account, the file is not stored.

Check your invoice →

Same check via API:

curl -F file=@invoice.xml https://einvoicechecker.com/v1/validate

Related rules

Frequently asked questions

What does BR-TMP-CVD-01 mean?

BR-TMP-CVD-01 is a xrechnung rule: The scheme for … "Item classification identifier" (BT-158) must be chosen from the code list UNTDID 7143.

Will my invoice be rejected because of BR-TMP-CVD-01?

Yes. BR-TMP-CVD-01 is flagged "fatal"; validators (KoSIT, Peppol access points, the German ZRE/OZG-RE portals) reject the invoice until it is fixed.

Which formats does BR-TMP-CVD-01 apply to?

XRechnung in UBL or CII syntax, including ZUGFeRD / Factur-X PDFs with the XRECHNUNG profile. Invoices to German public authorities (federal, state and municipal) must pass it. Syntax: UBL and CII.

Source: XRechnung 3.0.2, schematron 2.6.0 (KoSIT, September 2026). Catalogue generated from the official schematron on 2026-10-14.