Skip to main content
Blog
Guide

June 16, 2026

What Are CPV Codes? The EU Procurement Classification Explained

Maurice Funk
Diagram of the CPV code structure showing the eight main digits, check digit, and division hierarchy used in EU public procurement

A CPV code is a standardized number from the Common Procurement Vocabulary (CPV), the European Union's classification system that describes the subject of a public contract using a single, language-neutral identifier. Every contract notice published on TED (Tenders Electronic Daily) carries at least one CPV code, so a buyer in Lisbon and a supplier in Helsinki refer to the same category, "office furniture" or "road construction works", without translating a word. CPV codes are the backbone of how tenders are categorized, filtered, and found across Europe.

This guide explains what a CPV code is, how the code is structured, how to find and search for the right one, and where the system has real limits that every bidder should understand.

What is a CPV code?

A CPV code is an entry in the Common Procurement Vocabulary, a controlled list maintained by the European Commission and made mandatory across the EU. Its purpose is simple: to give every type of work, supply, and service a common reference number so that procurement data can be classified consistently regardless of the language the tender is written in.

Contracting authorities are required to assign one or more CPV codes when they publish a contract notice. The codes appear in the structured eForms notice format and feed directly into TED's search filters. For a supplier, the CPV code is the first signal of whether a tender is even worth opening: it tells you, at a glance, what category the contract belongs to.

The use of CPV is anchored in EU procurement law. Under Directive 2014/24/EU, the directive governing classic public-sector procurement, any reference to a classification in the context of a contract must use the CPV. That is why the system is not optional decoration but a legal fixture of every above-threshold European tender.

CPV code structure: the 8-digit format explained

A CPV code is built from nine digits in total: eight digits that identify the subject of the contract, plus one check digit that verifies the previous eight.

The eight main digits are hierarchical, meaning each position narrows the category further:

  • Digits 1-2 (division): the broadest grouping, for example 45 for construction work or 33 for medical equipment and pharmaceuticals.
  • Digit 3 (group): a subdivision within the division.
  • Digit 4 (class): a further narrowing.
  • Digit 5 (category): the specific category.
  • Digits 6-8 (subcategory): progressively more precise detail, with trailing zeros where no further detail applies.

The final digit, written after a hyphen, is the check digit. It is not a category at all; it is a mathematical control number used to catch typing errors. So a full code looks like 45233140-2, where 45233140 describes the subject and -2 validates it.

The deeper you go, the more specific the code. A division like 45 (construction work) says very little on its own. A code like 45233140-2 (road works) is far more useful for filtering. Alongside the main numeric codes, CPV also includes supplementary codes: an optional set of letter-and-number tags that add qualitative detail, such as a material or an intended use, when the main code alone is not descriptive enough.

CPV code structure at a glance

PositionLevelExample (from 45233140-2)What it means
Digits 1-2Division45Construction work
Digit 3Group452Works for complete or part construction and civil engineering work
Digit 4Class4523Construction work for pipelines, communication and power lines, highways, roads
Digit 5Category45233Construction, foundation and surface works for highways, roads
Digits 6-8Subcategory45233140Road works
After hyphenCheck digit-2Validates the eight preceding digits

CPV code list: how the vocabulary is organized

The full CPV is a single, official list of several thousand codes, organized into the divisions identified by the first two digits. The main divisions span the entire range of what the public sector buys, from raw materials and manufactured products to professional services and construction. A few illustrative divisions:

  • 03 Agricultural, farming, fishing, forestry and related products
  • 30 Office and computing machinery, equipment and supplies
  • 33 Medical equipments, pharmaceuticals and personal care products
  • 45 Construction work
  • 48 Software package and information systems
  • 71 Architectural, construction, engineering and inspection services
  • 79 Business services: law, marketing, consulting, recruitment, printing and security

The authoritative version of the list is published and maintained by the EU and used directly inside TED. Because the vocabulary is fixed and shared across all member states, the same 48 code means "software package and information systems" whether the notice was filed in Germany, Poland, or Portugal. That language-neutrality is the entire point: it lets a single search profile work across the whole single market.

How to find a CPV code

There are two situations where you need a CPV code, and they call for different approaches.

If you are a bidder trying to identify which codes describe your business, start from the division most relevant to what you sell, then drill down through the hierarchy until the subcategory matches your actual offering. Most companies map to a handful of codes across one or two divisions rather than a single one. The official CPV browser on the EU's procurement platforms lets you search by keyword and navigate the tree.

If you are a contracting authority assigning a code to a notice, the rule of thumb is to choose the most precise code available for the main subject of the contract, and to add further codes for any significant secondary elements. Picking a code that is too broad makes the tender harder for the right suppliers to find.

A practical tip for bidders: build your list of relevant CPV codes once, carefully, and reuse it. These codes become the foundation of your monitoring setup, the filter that decides which of the thousands of daily notices ever reach your desk. Getting them right is the difference between a clean inbox and either a flood of irrelevant notices or, worse, silence where opportunities should be.

CPV code search: matching codes to tenders

On TED, you can filter the entire EU tender feed by one or more CPV codes, which is the standard way professional bidders narrow a vast notice stream down to a relevant subset. National and regional portals across Europe offer the same filter, since they rely on the same vocabulary.

This is where the limits of code-only searching matter. CPV filtering is fast and consistent, but it depends entirely on two things being true: that the buyer assigned an accurate code, and that your relevant scope is captured by the codes you filtered on. Neither is guaranteed.

A few recurring problems:

  • A code that is too broad. A buyer may tag a complex contract with only a high-level division code, so the specific lot you could win is buried inside a notice that looks generic.
  • A code that is arguably wrong. Classification involves judgment, and authorities sometimes pick a neighbouring code, pushing a relevant tender outside your filter entirely.
  • The opportunity hiding in the full text. The single most important detail, a sub-lot, a specific product requirement, an eligibility nuance, often lives in the tender documents, not in the code. A pure CPV filter cannot see it.

In other words, CPV codes are an excellent first cut, not a complete answer. Relying on them alone means accepting that some relevant tenders will never surface, because the code never pointed at them in the first place.

Where Patterno fits

This is the gap Patterno is built to close. Patterno Hit uses CPV codes as one input among many, not as the only filter. Instead of matching on a code alone, it reads the full content of each notice and evaluates every tender individually against your profile, your products, your regions, your scope, so that a relevant contract is not missed just because a buyer chose a broad or imperfect code. The result is significantly more precise than a simple keyword or code-only search, across more than 4,500 European tender portals and platforms.

Once a relevant tender is on your desk, Patterno Bid helps your team read the full document pack and surface the requirements that decide whether to bid. The classification gets you in the door; understanding the detail wins the contract. The bid or no-bid decision always stays with you.

If your relevant tenders are spread across dozens of portals and CPV codes only get you part of the way, book a free intro call and we will walk through how Patterno covers your category.

Related articles

Frequently asked questions

What is a CPV code in simple terms?

A CPV code is a standardized number from the EU's Common Procurement Vocabulary that describes what a public contract is about, for example construction work, software, or consulting services. Because it is language-neutral, the same code means the same thing in every EU member state, which lets buyers and suppliers classify and find tenders consistently across borders.

How many digits is a CPV code?

A CPV code has nine digits in total: eight main digits that identify the subject of the contract in a hierarchy from division down to subcategory, plus one check digit written after a hyphen. The check digit is a control number that validates the preceding eight digits and does not itself describe a category. For example, 45233140-2 is the code for road works.

What does a CPV code example look like?

A typical CPV code looks like 30213100-6 for portable computers or 45233140-2 for road works. The first two digits give the broad division (30 for office and computing equipment, 45 for construction work), the following digits narrow the category step by step, and the digit after the hyphen is the check digit.

How do I find the right CPV code for my business?

Start from the division that best matches what you sell, then drill down through the hierarchy until the subcategory fits your actual offering. Most companies map to several codes across one or two divisions. The official CPV browser on the EU's procurement platforms lets you search by keyword or navigate the tree, and the resulting list becomes the filter for your tender monitoring.

Can I rely on CPV codes alone to find every relevant tender?

No. CPV filtering is fast and consistent, but it depends on the buyer assigning an accurate code, which is a matter of judgment and is sometimes too broad or simply wrong. Crucial details such as a specific lot or product requirement often live in the full tender text, not in the code. A code-only search is a strong first cut, but it cannot see opportunities the code never pointed at, which is why content-level evaluation of each notice catches what code filters miss.

Are CPV codes mandatory in EU tenders?

Yes. Under EU procurement law, including Directive 2014/24/EU, any classification of the subject matter of a public contract must use the Common Procurement Vocabulary. Contracting authorities assign one or more CPV codes when they publish a contract notice, and the codes appear in the structured eForms notice format used on TED and national portals.