Skip to content

How to Create Bill of Materials (BOM) in Odoo 19

DeployMonkey Team · March 24, 2026 12 min read

What Is a Bill of Materials?

A Bill of Materials (BOM) defines the raw materials, components, and quantities needed to manufacture a product. In Odoo 19, BOMs drive manufacturing orders, cost calculations, and material planning.

Prerequisites

  • Manufacturing app installed (Apps → Manufacturing)
  • Products created — both the finished product and component products
  • Product Type set to Storable Product for items you track in inventory

Create a Basic BOM

  1. Go to Manufacturing → Products → Bills of Materials
  2. Click New
  3. Set:
    • Product: The finished product
    • Product Variant: (optional) specific variant
    • BOM Type: Manufacture this product
    • Quantity: How many units this BOM produces (default 1)

Add Components

In the Components tab, add each raw material:

ComponentQuantityUoM
Wood Panel4Units
Screws16Units
Wood Glue0.5Liters
Varnish0.3Liters

BOM Types

1. Manufacture This Product

Standard BOM. Creates manufacturing orders when you produce this product.

2. Kit / Phantom BOM

The product is not actually manufactured — it is automatically "exploded" into its components during sales or delivery. Use for product bundles or kits.

BOM Type: Kit
Product: "Starter Pack"
Components:
  - Laptop × 1
  - Mouse × 1
  - Keyboard × 1
  - Bag × 1

# When sold, delivery order shows 4 separate items

3. Subcontracting (Enterprise)

The product is manufactured by an external subcontractor. When you create a purchase order to the subcontractor, Odoo sends components and receives finished goods.

Multi-Level BOMs

A component can have its own BOM (sub-assembly). Odoo handles this automatically:

Finished Product: Table
├── Table Top (has its own BOM)
│   ├── Wood Panel × 1
│   └── Varnish × 0.2L
├── Table Leg × 4 (has its own BOM)
│   ├── Steel Rod × 1
│   └── Rubber Foot × 1
└── Screws × 8

When you manufacture the Table, Odoo creates manufacturing orders for sub-assemblies automatically (if configured with routes).

BOM with Variants

Create one BOM that works for multiple product variants:

  1. On the BOM, leave Product Variant empty (applies to all variants)
  2. In the components tab, click Apply on Variants
  3. For each component, specify which variant(s) it applies to
BOM: T-Shirt (all sizes)
Components:
  - Fabric (S): 1.2m — variant: Small
  - Fabric (M): 1.5m — variant: Medium
  - Fabric (L): 1.8m — variant: Large
  - Thread: 10m — all variants
  - Label: 1 — all variants

Operations (Work Centers)

Add manufacturing steps in the Operations tab:

  1. Click Add a line
  2. Select the Work Center (e.g., "Cutting Station", "Assembly Line")
  3. Set Duration (expected time in minutes)
  4. Set Sequence for operation order

This enables the Shop Floor module (Odoo 19) for real-time production tracking.

BOM Cost Analysis

Go to Manufacturing → Reporting → BOM Structure & Cost. This shows:

  • Total component cost
  • Labor cost (from work center hourly rates)
  • Margin analysis vs selling price
  • Multi-level cost breakdown

Best Practices

  • Use consistent UoM — Don't mix meters and centimeters
  • Set component costs — BOM cost analysis is only accurate if component costs are set
  • Use sub-assemblies for reusable components shared across multiple finished products
  • Archive old BOMs instead of deleting — keeps manufacturing history