An eight-digit procurement classification with four levels, no attributes and some awkward gaps. What UNSPSC is for and where it stops.
UNSPSC is an eight-digit code that says what a product or service is, arranged as a four-level hierarchy and maintained by the United Nations Development Programme. It is the classification your customers' procurement and finance systems ask for most often, and it is the one suppliers understand least well. Unlike ETIM or eCl@ss it carries no attributes, no units, no images and no fitment. It carries a single category, and it exists so that a buyer can see how much was spent on lithium batteries across four ERP systems and eleven countries.
That narrow purpose explains almost everything that frustrates suppliers about it. UNSPSC was built for spend analysis, not for merchandising, and a code that is perfectly adequate for reporting a purchase order can be useless for driving a faceted catalogue.
What UNSPSC stands for
United Nations Standard Products and Services Code. It began as a joint effort between the United Nations Development Programme and Dun and Bradstreet, was administered by GS1 US for many years, and returned to UNDP stewardship at the end of 2024. UNDP now publishes the code set and handles change requests.
Two practical consequences of that handover are worth knowing before you plan any work around it. First, the code set is published as a spreadsheet download from UNDP rather than through an API or a versioned data service. Second, there is no published release calendar. Older documentation and a lot of vendor blog content refer to an annual or twice-yearly cadence; UNDP does not publish one, so treat any date you are given for the next release as unconfirmed.
How a UNSPSC code is structured
Every code is eight digits read as four pairs, each pair a level of the hierarchy:
- Segment (digits 1 and 2). The broadest grouping, for example industrial manufacturing and processing machinery, or information technology broadcasting and telecommunications.
- Family (digits 3 and 4). A commonly recognised group of categories within the segment.
- Class (digits 5 and 6). A group of items sharing a common use or function.
- Commodity (digits 7 and 8). A single product or service.
Zeros mark an unpopulated level, so a code ending 0000 is a family-level code and a code ending 00 is a class-level code. There is also an optional fifth pair, a two-digit Business Function code, meant to distinguish rental from retail from wholesale for the same commodity. Almost nobody implements it. If a trading partner asks for a ten-digit UNSPSC, ask them to confirm they really want the business function segment, because most systems that accept ten digits simply ignore the last two.
Two worked examples
Docking stations, drilling down through the hierarchy:
- 43000000 Information technology broadcasting and telecommunications (segment)
- 43210000 Computer equipment and accessories (family)
- 43211600 Computer accessories (class)
- 43211602 Docking stations (commodity)
Lithium batteries:
- 26000000 Power generation and distribution machinery and accessories (segment)
- 26110000 Batteries and generators and kinetic power transmission (family)
- 26111700 Batteries and cells (class)
- 26111711 Lithium batteries (commodity)
Note what is absent from both. Nothing in 26111711 tells you the chemistry, the voltage, the capacity, the terminal type or the cell format. A buyer can report spend on lithium batteries. A buyer cannot filter for an 18650 cell at 3.7 volts. That is the dividing line between a procurement classification and a technical one.
What UNSPSC does not do
Suppliers get asked for UNSPSC codes and assume they are being asked for product data. They are not. Being specific about the gap saves a lot of wasted effort:
- No attributes. There is no attribute model, no feature list, no value list and no units of measure. ETIM and eCl@ss both attach typed features to a class; UNSPSC does not.
- No file format. UNSPSC is a code list, not an exchange format. It travels inside whatever you are already sending, a BMEcat file, a cXML punchout catalogue, an Ariba or Coupa upload template, a spreadsheet column.
- No validation beyond existence. A code is either in the published set or it is not. There is no rule engine that will tell you a docking station has been filed under batteries.
- No commercial or logistics data. No price, no lead time, no packaging, no identifiers. A UNSPSC code sits alongside a GTIN, it does not replace one.
Where UNSPSC codes come from and what they cost
The code set is available as a spreadsheet download from UNDP at no charge. That is genuinely unusual among classification standards and it is the strongest argument for using UNSPSC as a first classification layer: there is no membership, no subscription and no per-seat licence standing between you and the codes.
The caveat is that UNDP does not publish licence text alongside the download in the way GS1 or ETIM International publish terms. If your legal team needs written permission to redistribute the code set inside a product you sell, ask UNDP directly rather than assuming the absence of a fee means the absence of a condition.
The four problems practitioners hit with UNSPSC
It classifies by what a thing is, not how it is used
This is the single most misunderstood rule in UNSPSC, and it is the source of most disagreements between a supplier and a procurement team. The published guidance classifies an item by its own nature, not by the application it is bought for. A stainless steel bolt is a bolt whether it ends up in a food processing line or a wind turbine.
Spend analysts frequently want the opposite. They want to see spend by what it was used for, because that is how budgets are organised. So a category manager asks for a code that describes the use case, the supplier supplies a code that describes the object, and both parties think the other has made a mistake. Neither has. Agree which reading you are using before you map fifty thousand SKUs to it.
Depth is wildly uneven across segments
Electronics and IT are deep. Apparel is not. The whole of clothing sits in a single family, 53100000, with fewer than twenty classes beneath it, and those classes are split by who wears the garment rather than what the garment is. That means a fashion retailer trying to use UNSPSC for merchandising will find the entire assortment collapsing into a handful of codes, while an electronics distributor gets reasonable granularity.
The lesson is not that UNSPSC is bad, it is that UNSPSC depth is a function of what procurement historically needed to report on. Check the depth in your own segments before you commit to it as a taxonomy.
The published set contains duplicates
Codes 43221734 and 43221740 both carry the title "Satellite Communications Equipment". They are both live in the published set. There are other near-duplicates where two commodity codes describe overlapping things with slightly different wording.
The practical effect is that two suppliers can classify the same item correctly and differently, and the buyer's spend report splits into two lines. If you are the buyer, pick one code per category and publish your choice to suppliers. If you are the supplier, ask which of the duplicates your customer uses rather than choosing for them.
Version drift quietly breaks spend history
Codes are added, retitled and deprecated between versions. A category that was one commodity code in an older version may be three in a newer one. Nothing in the code itself tells you which version it came from, so a spend report that spans a version change compares unlike with unlike unless someone has deliberately mapped the old codes forward.
Two habits prevent this. Store the UNSPSC version alongside the code on every product record, the same way you would store an ETIM release alongside a class. And when you upgrade, keep the old code in a second field for at least one reporting cycle so like-for-like comparisons are still possible.
Truncation, and why everyone does it
Most real-world UNSPSC implementations do not use the commodity level. They classify to class level and pad with zeros, so 43211602 becomes 43211600. This is so common it is effectively institutionalised, and buyers' systems generally accept it.
It is a reasonable trade-off. Commodity-level classification of a large catalogue is expensive, the accuracy is hard to verify, and class level is enough for the spend reporting the code exists to support. But be explicit about it. A field that mixes six-digit-plus-zeros and full eight-digit codes will produce a spend report where the same category appears twice, once at class level and once at commodity level, and the numbers will not add up.
UNSPSC against ETIM, eCl@ss and GPC
These are not competitors so much as classifications built for different jobs, and a distributor selling into both procurement and trade channels will often carry more than one.
- UNSPSC. Procurement and spend analysis. Global, free, no attributes, uneven depth. Asked for by public sector buyers, large corporates, and procurement suites such as Ariba and Coupa.
- ETIM. Technical products, strongest in electrical, HVAC and building services, mostly European. Carries typed features, values and units, which is what makes filterable catalogues possible.
- eCl@ss. Industrial and engineering, also European, also attribute-bearing, with a strong presence in process industries and in German-speaking markets.
- GPC. GS1's Global Product Classification, used mainly in fast-moving consumer goods and inside GDSN data pools. Brick-level codes with attribute and value pairs.
The common mistake is picking one and hoping it serves every audience. A distributor supplying a UK local authority and a German wholesaler needs a UNSPSC code for the first and an ETIM class for the second, and neither derives cleanly from the other. Maintaining both classifications against the same product record is the practical answer, and it is the reason standards mapping software exists.
How to put UNSPSC codes on a catalogue
The work divides into four steps, and the first two are where projects go wrong.
- Get the version question settled. Download the current code set, record which version it is, and store that version on the product record next to the code. Decide now whether you classify to class or commodity level and write the decision down.
- Classify your own categories, not your products. If you have an internal product taxonomy, map your categories to UNSPSC once and inherit the code down to products. Mapping four hundred categories is a week of work. Mapping fifty thousand products one at a time is not.
- Handle the exceptions individually. Categories that are genuinely mixed, private label, kits and assortments will not inherit cleanly. Expect five to ten per cent of a catalogue to need a product-level decision.
- Validate against the published set on every export. The only automatic check available is whether the code exists, so run it. A code that has been deprecated between versions will pass a format check and fail at the buyer's end.
Where AI helps is in the second and third steps. Classifying a category from its name, its products' descriptions and a handful of sample specifications is a task a model does well, particularly when it is choosing from a fixed code list rather than generating free text. SKULaunch classifies products against UNSPSC, ETIM, eCl@ss and a customer's own taxonomy from the same source data, and pushes the results out through standards-based feeds alongside the attributes the receiving system needs. The classification still needs a human to review the edge cases, which is why the output is a suggestion with a confidence score rather than a silent overwrite.
Key takeaways
- UNSPSC is an eight-digit, four-level classification for procurement and spend analysis, maintained by UNDP and free to download.
- It carries a category and nothing else. No attributes, no units, no identifiers, no file format.
- The rule is classify by what a thing is, not what it is used for. Agree this with your trading partner before mapping.
- Depth varies enormously by segment. Check your own categories before adopting it as a taxonomy.
- Duplicates exist in the published set, so buyers should publish their preferred code and suppliers should ask.
- Store the version alongside the code, or your spend history will break at the next release.
- Class-level codes padded with zeros are normal and accepted. Mixing levels in one field is not.
- If you also sell into technical or European channels you will need ETIM or eCl@ss as well, maintained in parallel against the same product record.
See SKULaunch in action
Watch how we handle AI enrichment, supplier onboarding, and catalogue scale in a live 30-minute demo.
.avif)