Odoo 20 Inventory: Simpler Stock Tracking, Explained

Every warehouse team knows the two failure modes of stock tracking: too much process, so staff work around the system, and too little, so nobody trusts the numbers. Odoo 20’s Inventory changes lean hard on the first problem. The headline is not a new module or a new screen — it is a series of small simplifications: reordering rules that suggest their own minimum and maximum levels, a replenishment dashboard with one order button instead of two, returns without the old wizard, and a stock report that can show you inventory as it stood at a precise moment in the past. None of these will make a keynote slide. Together, they remove a lot of the daily friction that makes people keep shadow spreadsheets.

This article explains what actually changed in Odoo 20 Inventory, how the simplified pieces fit together, and what to check before you rely on them.

What “simpler stock tracking” means in Odoo 20

Odoo’s own release notes describe the Inventory work in 20 as a set of streamlining changes rather than a redesign. The ones that matter day to day:

  • Suggested stock levels on reordering rules, calculated from demand history, desired days of coverage, and order frequency.
  • A single Order button in the replenishment dashboard, replacing the separate “Order” and “Order to max” buttons.
  • Simplified returns — the return wizard has been removed and the process streamlined.
  • Inventory at a past date in the stock report, with a date picker that preserves your filters and allows a precise timestamp.
  • A lighter inventory option for eCommerce: a single on-hand quantity per product, with no Inventory app and no required transfers.

The pattern is consistent: fewer decisions at the moment of work, more of the arithmetic done by the system, and fewer multi-step dialogs between the operator and the result.

Reordering rules that suggest their own numbers

The most consequential change is also the quietest. In Odoo 20, the minimum and maximum stock levels on a reordering rule are suggested by the system, based on three inputs the release notes name explicitly: the product’s demand history, the minimum days of coverage you want, and how often you order.

To appreciate why that matters, recall how a reordering rule works. As the 20.0 documentation puts it, each rule keeps forecasted stock above a threshold without exceeding an upper limit: you set a Min quantity — when the forecast falls below it, replenishment is triggered — and a Max quantity, the level stock is replenished up to. With the Buy route, a triggered rule creates a request for quotation; with the Manufacture route, it creates a manufacturing order. Rules can fire automatically when the forecast dips below the minimum, or sit on the replenishment dashboard as manual “needs” for a human to review and order.

Setting good Min and Max values has always been the hard part. Set them from gut feel and you either stock out on your best sellers or tie up cash in slow movers. In practice, many businesses set them once at implementation and never revisit them — which means the rules quietly drift out of sync with real demand. Suggestions grounded in demand history do not eliminate judgement, but they change the job from “invent two numbers per product” to “review two numbers per product,” which is a job people actually do.

A sensible way to adopt the feature:

  1. Start with your highest-volume products, where demand history is meaningful.
  2. Accept the suggested levels as a draft, then sanity-check them against lead times — a minimum that ignores a three-week supplier lead time is still wrong, however it was calculated.
  3. Keep fast movers on automatic triggers and leave slow or erratic movers on manual rules, so a person reviews them in the replenishment report before money is committed.
  4. Revisit the suggestions after a season. Demand history improves with every month of clean data.

One Order button, and smarter advance ordering

The replenishment dashboard used to offer two actions — “Order” and “Order to max” — whose difference confused exactly the people the dashboard is meant to help. Odoo 20 consolidates them into a single Order button. The behaviour when you order ahead is also spelled out: if you select products without the “To reorder” filter — that is, products that do not yet need replenishment — the order quantity is calculated as the maximum quantity minus the forecasted quantity. In other words, ordering early tops the product up to its max rather than duplicating what a later trigger would order anyway.

It is a small change, but replenishment is a daily habit, and daily habits are where small confusions compound into either duplicate purchase orders or missed ones.

Seeing stock as it was, not just as it is

Two reporting changes make stock easier to audit and argue about. First, the stock report now has a date picker for inventory at a past date: you can consult an overview of inventory at a precise timestamp, and the view preserves any filters you had applied. Anyone who has tried to reconcile a month-end count against a system that only shows today’s quantities will recognise the value — the question “what did we have on the 31st?” finally has a direct answer.

Second, a stock aging report is now accessible from the Moves Analysis pivot view, giving you a route to see how long stock has been sitting. Aging is the report that turns “we have plenty” into “we have plenty, and a third of it has not moved in months” — the starting point for clearance decisions and for honest conversations about those gut-feel maximums.

Allocation and traceability, tidied up

Simplification in 20 is not only about removing things; some flows simply got shorter. The allocation flow has been improved so you can allocate directly from the forecast report, and the allocation report itself has a new design. The Traceability Report now displays upstream and downstream lot and serial numbers in a single report, with final lot locations highlighted and intermediary locations dimmed — so a recall or a customer question takes one report instead of a chain of clicks through transfers.

On the receiving dock, the vendor purchase reference now appears on receipt transfers, so operators can identify the vendor from the incoming transfer without opening the related purchase order. And when something goes wrong, a new Valuation Adjustments menu (available in debug mode) lists product cost adjustments and their impact on inventory valuation in one place; with perpetual accounting, the corresponding journal entries are created automatically.

Returns without the wizard

Returns are the flow everyone dreads and nobody rehearses. Odoo 20 removes the return wizard and simplifies the returns process overall. The release notes do not dress this up with new terminology — the change is procedural: fewer steps between deciding to send goods back (or take them back) and having the stock movement recorded correctly. If your team has a laminated workaround sheet for returns, Odoo 20 is the moment to test whether you still need it.

The lightest option: simplified inventory for eCommerce

The most radical simplification is optional and aimed at online sellers. In Odoo 20, eCommerce can work with simplified inventory management without installing the Inventory app at all: a single on-hand quantity is displayed per product, and there are no required transfers. For a small web shop that ships from one room and counts stock by looking at the shelf, this removes an entire layer of warehouse machinery — locations, operation types, transfers — that was never earning its keep.

The trade-off is equally clear: the moment you need multiple locations, lot tracking, or structured picking, you want the real Inventory app. Simplified inventory is a starting ramp, not a destination, and Odoo 20 sensibly treats it that way.

Simpler on top, still powerful underneath

None of the depth was removed to pay for this. Odoo 20 still adds capability where warehouses need it: location-specific push routes (route A if goods arrive at one input location, route B at another), landed costs applied to individual products of a transfer rather than only across the whole receipt, and customer lead times that can differ per company in a multi-company setup. The direction of the release is not “less inventory system” — it is “less inventory system in your way when your operation is simple, with the advanced machinery still present when it is not.”

For existing users, the practical order of adoption is: turn on suggested levels for a pilot group of products, retrain the replenishment habit around the single Order button, test the new returns flow in a sandbox, and use the past-date stock report at your next month-end close. Simpler stock tracking only counts if the numbers stay trustworthy — and in Odoo 20, the simplifications are designed to make the trustworthy path the easy one.

Further reading

Leave a Comment