# BT-158 Item Classification Identifier

A code that classifies the item by type or nature, for example a Harmonised System code. Each code needs a scheme identifier (BT-158-1), which must be a UNTDID 7143 code such as HS.

> BT-158 (Item classification identifier) tags the line item with a classification code such as HS, CPV or UNSPSC, together with the scheme it belongs to (BT-158-1), carried in cac:CommodityClassification within BG-31. Optional under EN 16931, but a scheme identifier is required whenever the code is present. Example: 30190000.
>
> BT-158 · EN 16931 / XRechnung 3.x

## BT Reference Card

Key EN 16931 and XRechnung facts for this business term.

- **BT code**: BT-158
- **Name**: Item Classification Identifier
- **Cardinality**: Optional (O)
- **Business group**: BG-31 ITEM INFORMATION
- **Data type**: Identifier
- **Example value**: 30190000
- **Common error**: BR-65: The Item classification identifier (BT-158) shall have a Scheme identifier. Supplying a CPV or UNSPSC code without its scheme attribute (BT-158-1, a UNTDID 7143 code checked by BR-CL-13) fails validation.

## Line items

The goods or services on each invoice line, including quantities, prices, and VAT.

- [Validate XML](/en/xrechnung-validator?source=resource&bt=BT-158)
- [Convert invoice](/en/pdf-to-xrechnung?source=resource&bt=BT-158)

## In plain language

A code that classifies the item by type or nature, for example a Harmonised System code. Each code needs a scheme identifier (BT-158-1), which must be a UNTDID 7143 code such as HS.

Classification codes group items by type, for example by customs tariff number or procurement category. Buyers use them for spend analysis, account assignment, and customs or statistical reporting.

## What you usually enter here

Commodity classification code

Typical valid values include: 8471300000

Defined by EN 16931 for invoice line item identification; mandatory item names and optional identifiers must follow the listed scheme and country code rules.

## Where the field sits

BT-158 belongs to the Lines part of the invoice. UBL 2.1 Syntax: Invoice › cac:InvoiceLine › cac:Item › cac:CommodityClassification › cbc:ItemClassificationCode. CII (UN/CEFACT) Syntax: rsm:CrossIndustryInvoice › rsm:SupplyChainTradeTransaction › ram:IncludedSupplyChainTradeLineItem › ram:SpecifiedTradeProduct › ram:DesignatedProductClassification › ram:ClassCode.

## What goes wrong often

Relevant rule codes: BR-65

## Valid Examples

- 8471300000

## Related Fields

- [BT-158-1 Item Classification Identifier Scheme Identifier](/resources/xrechnung/bt-158-1-item-classification-scheme-identifier)
- [BT-157 Item Standard Identifier](/resources/xrechnung/bt-157-item-standard-identifier)

## XML mapping and field facts

Open the technical reference if you need XML paths, validator rule codes, legal wording, or schema-specific mapping details.

### Field ID:
BT-158

### Data Type:
identifier

### Cardinality:
0..n

### Requirement:
Optional

## XML Implementation

### UBL 2.1 Syntax
```
/Invoice/cac:InvoiceLine/cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode
```

### CII (UN/CEFACT) Syntax
```
/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode
```

## Validation Rules

### BR-65
BR-65

## Check whether your XRechnung sets BT-158 correctly

Upload the XML file to the free validator. It applies the KoSIT rules for XRechnung 3.0 and names each finding with its rule ID, for this field for example BR-65. Creating a new invoice instead? The converter checks the invoice against the same rules and shows the findings before download.

- [Validate XML](/en/xrechnung-validator)
- [Convert invoice](/en/pdf-to-xrechnung)

Free, no account needed. XML file up to 2 MB.

## Official sources and tools

- [KoSIT Validator](https://erechnungsvalidator.service-bw.de/)
- [XRechnung Standard](https://xeinkauf.de/xrechnung/)
- [Test Suite](https://github.com/itplr-kosit/xrechnung-testsuite)
