Skip to main content
Product categories in Odoo Inventory let you organize your products into a structured, hierarchical system that drives costing, accounting, and logistics behavior. Categories follow a parent–child tree structure, meaning each category can belong to a parent and have multiple children beneath it. There are two methods for creating and managing categories: the Product Category Import Template, which is best for loading large numbers of categories at once, and the Odoo UI, which offers a visual, step-by-step experience suited for small adjustments.

Category Structure

Categories are organized in a tree-like hierarchy with unlimited nesting levels. A top-level (Level 1) category has no parent, while each child category references the category directly above it. This structure keeps your product catalog clean and makes it easy to apply shared settings — such as removal strategies or accounting properties — at a category level that cascades to its children. Here is an example of a three-level hierarchy:
Products
├── Hardware
│   ├── Monitors
│   ├── Computers
│   └── Accessories
├── Services
│   ├── Consultancy
│   └── Maintenance
└── Consumables
    ├── Office Supplies
    └── Cleaning Products
Odoo represents the full path to any category using the separator. For example, the Monitors category is displayed as:
Products → Hardware → Monitors
This full path is what you will see throughout Odoo’s UI when selecting or filtering by category.

Setup Methods

The Import Template method is recommended when you are performing an initial implementation or loading a large number of categories at once. It is faster and less error-prone than creating categories one by one through the UI.

Template Worksheets

The Product Category Import Template contains four worksheets — one for each hierarchy level. Each sheet must be completed before importing.
Sheet NamePurpose
Category Level 1Top-level parent categories
Category Level 2Children of Level 1 categories
Category Level 3Children of Level 2 categories
Category Level 4Children of Level 3 categories

Columns

Each worksheet uses the following columns:
  • Name – The category name as it will appear in Odoo.
  • Parent Category – The category directly above this one in the hierarchy. Not used on Level 1 sheets.
  • Force Removal Strategy – Optional. Defines how stock is removed from this category (e.g. FIFO, LIFO, FEFO).

Level 1 Example

Level 1 categories have no parent, so only the Name and optional Force Removal Strategy columns are needed.
NameForce Removal Strategy
ProductsFirst In First Out (FIFO)

Level 2 Example

Level 2 categories reference their Level 1 parent by name in the Parent Category column.
NameParent CategoryForce Removal Strategy
HardwareProductsFirst In First Out (FIFO)
ServicesProductsFirst In First Out (FIFO)
ConsumablesProductsFirst In First Out (FIFO)

Level 3 Example

Level 3 categories reference their parent using the full path in Level1 / Level2 format.
NameParent CategoryForce Removal Strategy
MonitorsProducts / HardwareFirst In First Out (FIFO)
ComputersProducts / HardwareFirst In First Out (FIFO)
AccessoriesProducts / HardwareFirst In First Out (FIFO)
ConsultancyProducts / ServicesFirst In First Out (FIFO)
MaintenanceProducts / ServicesFirst In First Out (FIFO)
Office SuppliesProducts / ConsumablesFirst In First Out (FIFO)
Cleaning ProductsProducts / ConsumablesFirst In First Out (FIFO)
For Level 3 and Level 4 categories, the Parent Category column must use the full path format: Level1 / Level2 (e.g. Products / Hardware). Using only the immediate parent name will cause an import error if that name is not unique across the template.
Prepare and review all four level sheets before importing any of them. Start from Level 1 and work downward — Odoo must be able to resolve each parent reference before a child category can be created.

Force Removal Strategy

The Force Removal Strategy field controls the order in which stock is picked or removed from inventory for categories that require it. Setting this at the category level applies the strategy to all products in that category unless overridden at the product or lot level.
StrategyFull NameHow It Works
FIFOFirst In First OutThe oldest stock (earliest receipt date) is removed first. This is the recommended default for most businesses.
LIFOLast In First OutThe newest stock (most recent receipt date) is removed first. Less common; may be restricted depending on your country’s accounting standards.
FEFOFirst Expiry First OutStock closest to its expiration date is removed first. Recommended for perishable goods, pharmaceuticals, and food products.
FEFO requires expiration date tracking to be enabled on your products. Navigate to Inventory → Configuration → Settings and enable Expiration Dates under the Traceability section before using this strategy.