HADOOPT
TECHNOLOGIES
Schedule a Tech Consultation
Home
Services
Odoo ERP implementation Rollout, custom modules, migration and support. Web application development SaaS products, portals and internal platforms. Mobile application development Offline-first field apps and customer apps. AI development & automation LLM assistants, document processing, forecasting. Odoo version upgrades ↗ Move to a newer release, scoped and priced on its own site.
Products
OrgExp ↗ Budget, CAPEX and OPEX management.
Blog About Contact Schedule a Tech Consultation
Blog / Odoo 19: Complete Guide for Businesses
Odoo 19 7 min read

Inventory and warehouse management in Odoo 19

Warehouses, locations, 1/2/3-step receipts and deliveries, routes, reordering rules, lots and serials, and how Odoo 19 values stock.

· ERP practice 22 Sep 2026

Odoo 19 Inventory is a Community app that handles warehouses, locations, receipts, deliveries and replenishment; valuation comes from the WMS Accounting module that sits beside it. Start every warehouse at one-step receipts and deliveries, switch on Storage Locations and Lots & Serial Numbers only where you need them, and decide your cost method and valuation (periodic or perpetual) before the first receipt, because changing them later recomputes the cost of stock you already hold.

Warehouses, locations and the settings that switch them on

A new database has one warehouse with a five-character short name (WH by default) and a stock location under it. That short name prefixes every transfer reference, so WH/IN/00012 is a receipt and WH/OUT/00012 a delivery. Pick short names you can read on a printed slip: CBE and BLR work better than WH2.

Most of the structure is hidden until you turn it on under Inventory > Configuration > Settings, in the Warehouse block:

  • Storage Locations lets you create bins, racks and zones under the stock location and track quantities in each.
  • Multi-Step Routes enables two- and three-step flows, custom routes and putaway rules. Turning it on also turns on Storage Locations.

Locations are a tree, and only internal locations hold stock you own. Vendor, customer, inventory loss and production locations are virtual; stock moving into them leaves your books. Putaway rules (Configuration > Warehouse Management > Putaway Rules) send incoming products straight to a specific child location, and storage categories cap what a bin can hold.

One, two or three steps for receipts and deliveries

Each warehouse has an Incoming Shipments and an Outgoing Shipments setting. These are the exact options in 19.0:

DirectionOptionWhat happens
IncomingReceive and Store (1 step)Goods go straight into stock on the receipt.
IncomingReceive then Store (2 steps)Receipt into an input location, then an internal transfer to stock.
IncomingReceive, Quality Control, then Store (3 steps)Input, then a quality control location, then stock.
OutgoingDeliver (1 step)Delivery order ships from stock.
OutgoingPick then Deliver (2 steps)Pick to an output location, then deliver.
OutgoingPick, Pack, then Deliver (3 steps)Pick, pack in a packing zone, then deliver.

The default is one step both ways. We keep it there unless there is a physical reason not to: a separate dock and storage area, a packing bench, or goods that must wait for inspection. Every extra step is another document someone has to validate, and an unvalidated pick is a common reason a delivery shows "waiting" when the stock is sitting on the shelf.

Three-step receipts do not create inspection records by themselves. The checks come from the Quality app, covered in part 15.

Routes, reordering rules and replenishment

A route is a set of rules that says where stock comes from. The ones you will meet first are Buy (from Purchase), Manufacture (from Manufacturing), Replenish on Order (MTO) and Dropship. MTO and Dropship are switched on in the Logistics block of the settings. A product's routes, together with the warehouse steps above, decide what document Odoo creates when demand appears.

Reordering rules are the everyday tool. Each rule has a location, a Min and Max quantity and a Trigger of Auto or Manual. With Auto, the scheduler creates RFQs or manufacturing orders when forecast stock falls below the minimum. With Manual, the need only appears in Operations > Procurement > Replenishment for someone to order. The Advanced Scheduling setting adds a horizon in days so rules fire earlier.

We usually start new clients on Manual for the first few weeks. Buyers see what Odoo would have ordered, correct the min and max figures and vendor lead times, and only then flip the trustworthy products to Auto.

Reordering rules are only as good as the lead times behind them. Fix the vendor delay on the product first, then tune min and max.

Lots, serial numbers and removal strategies

Turn on Lots & Serial Numbers under Traceability, then set tracking per product: By Unique Serial Number, By Lots or By Quantity. Only products with Track Inventory ticked can be tracked. The Expiration Dates setting adds best-before, removal and alert dates to lots.

Removal strategies decide which stock is picked first. Odoo 19 ships First In First Out (FIFO), Last In First Out (LIFO), Closest Location and Least Packages, plus First Expiry First Out (FEFO) with Expiration Dates. Set them on the product category or location. Note that the removal strategy governs which physical units leave; it is not the cost method, which is a separate choice below.

For Indian businesses moving goods between GST registrations or to customers without an invoice, the Indian - E-waybill Stock module creates e-way bills directly from transfers. GST setup itself is part 22.

How Odoo 19 values inventory

Valuation changed noticeably in 19.0. There are two separate settings, both set per company and overridable per product category:

  • Cost Method: Standard Price, First In First Out (FIFO) or Average Cost (AVCO). The company default is Standard Price.
  • Valuation: Periodic (at closing) or Perpetual (at invoicing). The company default is Periodic.

With periodic valuation, vendor bills post to expense and stock value is brought onto the balance sheet by a closing entry. The Inventory Valuation report (its menu is Enterprise) has a Generate Entry button for this, and the company's Inventory Period can be Manual, Daily or Monthly to post it automatically. With perpetual valuation, the vendor bill line posts to the stock valuation account and the customer invoice posts cost of goods sold against it; stock moves only create entries when they touch a location with its own valuation account, such as inventory loss or production.

In Enterprise the company defaults live in Accounting > Configuration > Settings > Inventory Valuation, with the stock journal and valuation account. On the product category form, the Inventory Valuation group holds the category overrides. A product can also be valued per lot or serial with Valuation by Lot/Serial.

What to configure first and what can wait

  1. Warehouse names and short codes, one step in and out.
  2. Product categories with cost method, valuation and accounts.
  3. Products with Track Inventory, units of measure, vendor and lead time.
  4. Opening stock through a physical inventory count, dated at go-live.
  5. Reordering rules on Manual; review the Replenishment screen weekly.
  6. Later: storage locations, multi-step routes, lots, barcode scanning.
Inventory > Configuration > Settings
Inventory > Configuration > Warehouse Management > Warehouses
Inventory > Operations > Procurement > Replenishment
Inventory > Operations > Adjustments > Physical Inventory
Accounting > Review > Inventory > Inventory Valuation
Where the pieces live in Odoo 19 (the last menu is Enterprise)

Inventory, routes, lots and the valuation engine are all Community; the Barcode app, the valuation settings screen and the valuation report are Enterprise. Next in the series is purchase and vendor management, which is where most replenishment ends up. If you want a second pair of eyes on your location and valuation design, we can review it before you load stock.

Questions we get asked

Is Odoo 19 Inventory free in Community edition?

Yes. The Inventory app, WMS Accounting (valuation), routes, reordering rules, lots and serial numbers, putaway rules and the e-way bill stock module for India are all LGPL Community modules. The Barcode app, the Enterprise Inventory Valuation report and the accounting settings screen for valuation defaults are Enterprise-only. Community users set cost method and valuation on product categories instead.

What is the difference between periodic and perpetual valuation in Odoo 19?

Periodic (at closing) posts vendor bills to expense and adjusts stock value with a closing entry, generated manually or daily or monthly. Perpetual (at invoicing) posts vendor bills directly to the stock valuation account and books cost of goods sold when the customer invoice is posted. Periodic is the company default in 19.0; both can be overridden per product category.

Should I use 1-step, 2-step or 3-step receipts in Odoo?

Use one step unless your building forces otherwise. Two steps suit a separate receiving dock and storage area; three steps suit goods that must be inspected before storage. Each step adds a document to validate, so extra steps slow the team down if the physical process does not match. You can change the setting on the warehouse later without reinstalling anything.

Can I change the costing method after go-live in Odoo 19?

Yes, on the product category, but Odoo then recomputes the unit cost of every product in that category from its stock history, so the value of stock already on hand changes. Your accountant will need to reconcile that. It is much cleaner to choose between Standard, AVCO and FIFO before the first receipt, and to test any mid-year change on a copy of the database first.

← Previous Odoo 19 Subscriptions: recurring plans, renewals and MRR Next → Purchase and vendor management in Odoo 19
Keep reading
Odoo 19 Getting started with Odoo 19: what changed and where to begin 6 min read Odoo 19 Installing Odoo 19 from source, Docker or packages 7 min read Odoo 19 Odoo 19 hosting: Odoo Online vs Odoo.sh vs on-premise 6 min read