Odoo Inventory, explained for SMEs evaluating ERP stock and warehouse management
Odoo Inventory is the stock and warehouse application inside the Odoo suite — covering receipts, internal transfers, deliveries, routes, putaway, replenishment, and real-time valuation. This guide walks through the module's structure, daily operations, and how it maps to the Microsoft Dynamics 365 inventory equivalent when you are comparing platforms.
What Odoo Inventory actually is
Odoo Inventory is the inventory and warehouse management application within Odoo. It covers stock moves, lead times, and automated replenishment, and it functions both as an inventory application and a warehouse management system in a single app.
The defining design choice is the double-entry stock model. Every operation in Odoo Inventory is a stock move between two locations — there is no separate stock input, output, or transformation document. Stock is always traceable and nothing disappears, because every change in on-hand quantity is a debit from one location and a credit to another.
For an SME migrating from spreadsheets or a basic POS, this matters: you get enterprise-style traceability without configuring separate input/output/transit journals. For teams coming from Dynamics 365, it is closer to how Business Central models item ledger entries than how the SCM Warehouse Management module models directed work.
Warehouses, locations, quants, and stock moves
Odoo Inventory structures the stock domain around four nested concepts:
Warehouses handle the broader organization and distribution of stock across different physical sites. Warehouses and their child locations are configured under Inventory app > Configuration > Warehouses. Each warehouse carries default incoming, outgoing, and stock locations.
Locations represent specific physical or logical storage areas within a warehouse — or partner and customer sites. To view stock at a single location, go to Inventory app > Configuration > Locations, select the location, and use the Products smart button.
Storage Locations must be enabled under Configuration > Settings to model granular bin-level locations within a warehouse. The Multi-Step Routes feature must also be enabled to unlock routes and putaway rules.
Stock Quants are the on-hand quantities per product, lot, package, and location — the double-entry ledger. Stock Moves are the atomic operation: every receipt, transfer, and delivery is a move between two locations, so traceability is inherent rather than bolted on.
- Warehouse — the physical site plus default in/out/stock locations.
- Location — configurable child of a warehouse, enabled via the Storage Locations setting.
- Stock Quant — on-hand quantity per product/lot/package/location.
- Stock Move — the atomic operation; receipts, transfers, and deliveries are all moves.
Daily operations: receipts, transfers, deliveries
Daily operations in Odoo Inventory are grouped into three document types surfaced on the Inventory app dashboard: Receipts (incoming stock, typically purchase-order driven), Internal Transfers (moves between locations or warehouses), and Deliveries (outgoing stock, typically sales-order driven).
Each warehouse supports configurable multi-step workflows for both receiving and shipping. One-step routes move goods directly between source and destination. Two-step receipts route incoming goods through an input location before stock, and two-step deliveries pick then ship — separating receiving and quality from put-away or shipping. Three-step receipts add an explicit quality step between input and storage, and three-step deliveries add a pack step between pick and ship.
These flows are configurable per warehouse under Inventory > Configuration > Warehouses, which means a single Odoo database can run a lean one-step flow for a small distribution site alongside a three-step quality-gated flow for a regulated warehouse — without custom code.
| Flow | Receipt steps | Delivery steps | Best for |
|---|---|---|---|
| One-step | Receive to stock | Ship from stock | Simple sites, low-volume receiving |
| Two-step | Input → stock | Pick → ship | Quality check before put-away or dispatch |
| Three-step | Input → quality → stock | Pick → pack → ship | Regulated goods, audit-heavy operations |
Routes, putaway rules, and replenishment
Routing and replenishment in Odoo Inventory are layered, and this is where the module earns its warehouse-management credentials.
Routes are pre-configured per warehouse and govern how stock moves through locations — buy, make, Make To Order (MTO), and manufacture. Routes are composed of push and pull rules, and are edited under Inventory > Configuration > Warehouses on the warehouse form.
Putaway rules automatically direct products to specific storage locations on receipt. They require the Multi-Step Routes feature and are configured under Inventory > Configuration > Putaway Rules. Functionally they are the Odoo equivalent of directed put-away logic in a dedicated WMS.
Odoo provides three replenishment mechanisms, selectable per product: reordering rules (min/max), the Make To Order (MTO) route, and the Master Production Schedule for manufacturing. Inter-warehouse replenishment lets one warehouse resupply another using reordering rules combined with the 'X: Supply Product from Y' route on the product form.
- Reordering rules — min/max triggers that generate draft purchase or manufacturing orders.
- MTO route — order-triggered replenishment that pulls stock through the supply chain.
- Master Production Schedule — manufacturing-facing demand planning.
- Inter-warehouse resupply — one warehouse feeds another via the 'Supply Product from' route.
Valuation, landed costs, and reporting
Stock valuation in Odoo 19 was redesigned, so the behavior teams upgrading should expect is materially different from earlier releases. The Odoo 19 valuation cheat sheet is explicit: before Odoo 19, the Perpetual accounting method was implemented by posting real-time accounting entries at each stock movement, which created a lot of journal entries. Odoo 19 replaces that with two accounting methods — Periodic (at closing) and Perpetual (at invoicing) — and no longer posts a journal entry on every individual stock move. Under Perpetual (at invoicing), vendor bills are posted as assets (stock valuation) and cost of goods sold is recognized when goods are sold.
This is an important correction to the legacy mental model many teams carry. If you read older Odoo tutorials, they describe 'automated inventory valuation creates real-time journal entries on every stock move' — that was the pre-19 behavior. On a current Odoo 19 database, do not expect per-move journal entries; expect valuation to settle at invoicing/closing under the new accounting-method toggle.
Landed Costs allocates additional costs — freight, insurance, customs duties — to product valuation. It is enabled under Inventory > Configuration > Settings in the Valuation section, and is especially relevant for import-heavy distributors who need true landed cost of goods rather than vendor-invoice-only valuation.
Stock and on-hand inventory are viewed under Inventory > Reporting > Stock. The Inventory Valuation documentation hub links to the Stock report, Locations report, Moves history report, Inventory dashboards, Landed costs, and Valuation by lots and serial numbers — so reporting is centralized rather than scattered across submenus.
The Dynamics 365 inventory equivalent
Because Flectic implements both Odoo and Microsoft Dynamics 365, the inventory mapping is a question we get on nearly every evaluation. The equivalent depends on which D365 tier you are comparing against.
On Dynamics 365 Business Central — the SME-tier ERP most directly comparable to Odoo for mid-market and wholesale — inventory is managed at the Item level, with Item Variants and Stock Keeping Units per Location, under the Inventory module. Warehouses are modeled as Locations, and stock is moved between them via Transfer Orders, with goods tracked as 'in transit' during the move. Business Central distinguishes basic Inventory (item ledger entries, simple receive and ship) from Warehouse Management (directed pick, put-away, and ship with bins and zones) — a similar split to Odoo's stock moves versus advanced routes and putaway.
On Dynamics 365 Supply Chain Management — the enterprise tier — the equivalent is split across two distinct modules that together cover what Odoo Inventory does in a single app. The Inventory management module covers inbound operations, quality assurance, inventory activities (counting, transfers, journals), and outbound operations. The Warehouse management module covers directed receiving, put-away, picking, packing, shipping, wave processing, and cycle counting, driven through the Warehouse Management mobile app.
The architectural observation — not a quality judgment — is that Odoo bundles inventory and warehouse management into one application, while D365 SCM splits the same scope across two coordinated modules. D365 SCM also offers capabilities Odoo does not natively match, including advanced Transportation Management, a standalone Landed Cost module, and Product Information Management as its own domain. Business Central's finance depth is enterprise-grade. Odoo's advantage is integrated app-suite modularity and faster SME setup, not superior warehousing depth.
| Odoo Inventory | Business Central | Supply Chain Management |
|---|---|---|
| Warehouse | Location | Site + Warehouse |
| Location | Location (basic) | Warehouse + Bin (WMS) |
| Stock Move | Item journal / transfer order | Inventory journal / WMS work |
| Putaway Rule | Directed put-away (WMS) | Location directives |
| Routes / MTO | Order planning | Coverage planning / coverage groups |
When each platform fits an SME
As a dual-platform implementation partner, Flectic does not default to one stack. The decision usually comes down to three factors: existing Microsoft licensing, the depth of finance-ops integration required, and how much of the broader app suite you want from a single vendor.
Odoo Inventory fits SMEs that want a single integrated suite — inventory alongside accounting, CRM, manufacturing, barcode, HR, and expenses — without licensing a separate WMS module. It is particularly strong when the goal is rapid rollout across multiple warehouses with consistent routing logic.
Business Central fits SMEs already invested in the Microsoft ecosystem, especially where deep Dynamics 365 finance integration, Power Platform extensibility, or regulatory depth in finance matter more than warehouse-management sophistication.
Supply Chain Management fits distribution or manufacturing organizations whose warehouse processes are complex enough to justify a directed WMS with mobile execution, wave processing, and advanced costing — and who have the enterprise budget and change-management capacity to match.
If you are evaluating either path, an ERP Readiness Call is the fastest way to map your warehouse flows to the right platform — and our AI-accelerated delivery model is designed to deliver up to 3x faster than a traditional ERP rollout.
Frequently asked questions
Is Odoo Inventory a warehouse management system or just stock tracking?
Both. Odoo Inventory functions as an inventory application and a warehouse management system in a single app. It covers stock moves, lead times, automated replenishment, routes, putaway rules, multi-step receipts and deliveries, and valuation — without requiring a separate WMS module.
How does Odoo Inventory keep stock traceable?
Odoo uses a double-entry stock model. Every operation is a stock move between two locations — there is no separate stock input, output, or transformation document. Every change in on-hand quantity is a debit from one location and a credit to another, so stock is always traceable and nothing disappears.
What is the Dynamics 365 equivalent of Odoo Inventory?
It depends on the tier. On Business Central, the equivalent is the Inventory module plus optional Warehouse Management, with warehouses modeled as Locations and stock moved via Transfer Orders. On Supply Chain Management, the equivalent is split across the Inventory management module and the Warehouse management module, which together cover what Odoo Inventory does in one app.
Does Odoo Inventory support real-time accounting valuation?
Odoo 19 changed how this works. Before Odoo 19, perpetual valuation posted a real-time journal entry at every stock move. Odoo 19 replaced that with two accounting methods — Periodic (at closing) and Perpetual (at invoicing) — and no longer posts a journal entry per stock move. Under Perpetual (at invoicing), vendor bills are posted as stock assets and cost of goods sold is recognized when goods are sold. Landed Costs can additionally allocate freight, insurance, and customs duties to product valuation.
Which replenishment methods does Odoo Inventory support?
Odoo provides three mechanisms: reordering rules (min/max), the Make To Order (MTO) route, and the Master Production Schedule for manufacturing. Inter-warehouse replenishment is also supported via the 'X: Supply Product from Y' route on the product form.
How many warehouse steps can Odoo Inventory handle for receiving and shipping?
Three. One-step routes receive directly to stock and ship directly from stock. Two-step routes route receipts through an input location before stock, and deliveries through a pick step before shipping. Three-step routes add a quality step for receipts (input → quality → stock) and a pack step for deliveries (pick → pack → ship). These are configurable per warehouse under Inventory > Configuration > Warehouses.
Map your warehouse flows to the right ERP
Flectic implements both Odoo Inventory and Microsoft Dynamics 365, so we will not force you toward one stack. Book an ERP Readiness Call and we will walk your receipts, transfers, deliveries, routes, and valuation requirements against both platforms — then deliver through an AI-accelerated model designed to deliver up to 3x faster than a traditional rollout.
Sources
- Odoo Inventory is the inventory and warehouse management application within Odoo, covering stock moves, lead times, and automated replenishment; it uses a double-entry stock model where every operation is a stock move between locations. — https://www.odoo.com/documentation/19.0/applications/inventory_and_mrp/inventory.html (verified Odoo 19 official documentation hub for the Inventory application)
- Warehouses handle organization and distribution of stock across physical sites; warehouses and child locations are configured under Inventory app > Configuration > Warehouses. — https://www.odoo.com/documentation/19.0/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management.html (verified Odoo 19 inventory management documentation)
- Locations represent specific physical or logical storage areas; Storage Locations and Multi-Step Routes must be enabled under Configuration > Settings to model bin-level locations and unlock routes and putaway rules. — https://www.odoo.com/documentation/19.0/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/use_locations.html (verified Odoo 19 use_locations documentation page)
- Daily operations are grouped into receipts (incoming), internal transfers, and deliveries (outgoing), accessible from the Inventory app dashboard. — https://www.odoo.com/documentation/19.0/applications/inventory_and_mrp/inventory/shipping_receiving.html (verified Odoo 19 shipping and receiving documentation hub)
- Odoo supports one-step, two-step, and three-step receipt and delivery workflows configurable per warehouse under Inventory > Configuration > Warehouses. — https://www.odoo.com/documentation/19.0/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/receipts_delivery_one_step.html (verified Odoo 19 one-step receipts and delivery documentation)
- Two-step receipts route products through an input area before stock; useful for incoming shipments requiring a putaway step. — https://www.odoo.com/documentation/19.0/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/receipts_delivery_two_steps.html (verified Odoo 19 two-step receipt and delivery documentation)
- Three-step receipts flow Input → Quality → Stock and are enabled by changing warehouse settings from the default one-step configuration. — https://www.odoo.com/documentation/19.0/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/receipts_three_steps.html (verified Odoo 19 three-step receipt documentation)
- Routes and push/pull rules are pre-configured per warehouse and govern how stock moves through locations (buy, make, MTO, manufacture). — https://www.odoo.com/documentation/19.0/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/use_routes.html (verified Odoo 19 routes documentation)
- Putaway rules automatically direct products to specific storage locations on receipt; they require Multi-Step Routes and are configured under Inventory > Configuration > Putaway Rules. — https://www.odoo.com/documentation/19.0/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.html (verified Odoo 19 putaway rules documentation)
- Odoo provides three replenishment mechanisms: reordering rules (min/max), Make To Order (MTO), and the Master Production Schedule; inter-warehouse resupply uses the 'Supply Product from' route. — https://www.odoo.com/documentation/19.0/applications/inventory_and_mrp/inventory/warehouses_storage/replenishment.html (verified Odoo 19 replenishment documentation hub)
- Landed Costs allocates freight, insurance, and customs duties to product valuation; enabled under Inventory > Configuration > Settings in the Valuation section. — https://www.odoo.com/documentation/19.0/applications/inventory_and_mrp/inventory/inventory_valuation/landed_costs.html (verified Odoo 19 landed costs documentation)
- Before Odoo 19, the Perpetual accounting method was implemented by posting real-time accounting entries at each stock movement, which created a lot of journal entries; Odoo 19 replaced this with Periodic (at closing) and Perpetual (at invoicing) accounting methods. — https://www.odoo.com/documentation/19.0/applications/inventory_and_mrp/inventory/inventory_valuation/cheat_sheet.html (verified Odoo 19 inventory valuation cheat sheet (authoritative on the pre-19 vs 19 change))
- Under Odoo 19 Perpetual (at invoicing), vendor bills are posted as assets (stock valuation) and cost of goods sold is reported when goods are sold; this is the best practice where real-time inventory value tracking is required. — https://www.odoo.com/documentation/19.0/applications/inventory_and_mrp/inventory/inventory_valuation/cheat_sheet.html (verified Odoo 19 valuation cheat sheet, Perpetual method description)
- The Odoo Inventory Valuation documentation hub links to the Stock report, Locations report, Moves history report, dashboards, Landed costs, and Valuation by lots/serial numbers. — https://www.odoo.com/documentation/19.0/applications/inventory_and_mrp/inventory/inventory_valuation.html (verified Odoo 19 inventory valuation documentation hub)
- Dynamics 365 Business Central manages inventory through Items and transfers inventory between locations using transfer orders, with items tracked as in transit during the move. — https://learn.microsoft.com/en-us/dynamics365/business-central/inventory-manage-inventory (verified Microsoft Learn — Business Central inventory documentation)
- The Dynamics 365 Supply Chain Management Inventory management module covers inbound operations, quality assurance, inventory activities, and outbound operations. — https://learn.microsoft.com/en-us/dynamics365/supply-chain/inventory/inventory-home-page (verified Microsoft Learn — D365 SCM Inventory management overview)
- The Dynamics 365 Supply Chain Management Warehouse management module handles warehouse setup, directed receiving/put-away/picking/packing/shipping, wave processing, and mobile device support via the Warehouse Management mobile app. — https://learn.microsoft.com/en-us/dynamics365/supply-chain/warehousing/warehouse-management-overview (verified Microsoft Learn — D365 SCM Warehouse management overview)