Odoo 20 Inventory: New Features and Updates

Discover Odoo 20 Inventory improvements for replenishment, landed costs, stock valuation, warehouse operations, shipping integrations, and inventory reporting.

Managing inventory is more than just keeping products in stock. Businesses need to know when to order more products, how to ship goods, where products are stored, and how much their stock is worth.

Odoo 20 Inventory brings new features to make these tasks easier. Users can plan stock levels, track extra product costs, allocate stock using the forecast report, download ready-to-use CMR documents, and manage stock movements between company warehouses. Shipping is also easier with Sendcloud and the new ShipStation connector.

Odoo 20 also makes it easier to check past stock levels, review old stock, track product movements, and see changes in inventory value. Other updates include simpler returns and separate HS codes and packaging for product variants. Let's look at each feature and see how it helps with daily inventory tasks.

Note: This guide covers new Odoo 20 Inventory features and continuing improvements. Where a feature was introduced in an earlier Odoo version, we identify that distinction to help readers understand what has actually changed.

01

Suggested Stock Levels for Reordering Rules

You should not have to guess your Min and Max.

What is new

Odoo 20 can suggest the minimum and maximum stock levels for a reordering rule. The suggestion uses the demand history, the days of coverage you want, and how often you order.

When you open the replenishment information of a product, you will see a Min - Max Suggestion section. It shows the demand and the suggested quantities, together with how many days of stock each one covers.

Odoo 20 -- Replenishment information with the Min - Max Suggestion

What the Screen Shows

FieldWhat it shows
Based on: Last 7 daysThe past period used to work out the demand.
Factor: 100%The adjustment applied to the demand.
Demand: 5.57 Units/dayThe demand for the chosen period.
Min: 50 Units (9 days)The suggested minimum, with the days it covers.
Max: 134 Units (15 days)The suggested maximum, with the days it covers.
Replenishment Time: 8 daysThe replenishment time shown for the product.
Vendor Lead Time: 8 daysThe lead time of the supplier.

Why it helps

Less guessing

You start from a suggested Min and Max, not from a blank field.

Based on real demand

The suggestion follows what the product really sold.

Coverage in days

You see how long the stock should last.

Example: Odoo shows a demand of 5.57 units per day. It suggests a minimum of 50 units (9 days) and a maximum of 134 units (15 days). The team checks these numbers and uses them for the reordering rule.

How It Works

There are five stages, from demand to replenishment:

1

Demand history is read by Odoo.

2

Min - Max suggestion is shown for the product.

3

Review the suggested quantities.

4

The reordering rule is set with the values you keep.

5

Replenishment follows the rule.

Note: The values above are an example for one product. The Odoo 20 release notes name the factors used, but they do not give one fixed formula for every product. So the Min and Max should not be shown as the result of one universal calculation.

02

Landed Costs for Specific Products

A cost should only be added to the products it belongs to.

What is new

A landed cost line can now be applied to specific products of a transfer. Before, a cost was spread over every product in that transfer. The new Apply On field adds one step first: it chooses the products, and then the Split Method divides the cost between them.

Where Apply On Appears

The field shows in two places. On the landed cost product, it sets a default. Here, the product Elevator Installation has Is a Landed Cost ticked, Apply On set to All Products, and the Default Split Method set to By Quantity.

Odoo 20 -- Landed cost product (Is a Landed Cost, Apply On, Default Split Method)

On the landed cost record, each line in Additional Costs has its own Apply On column next to the Split Method. This is the part that is new in Odoo 20. A line can go to all products of the transfer, or only to the products chosen for that cost. It can replace the default of the product.

Odoo 20 -- Landed cost record with the Apply On column

What the Screen Shows

FieldWhat it shows
Landed Cost: LC/2026/0002The landed cost record made from the vendor bill.
Apply On (header): TransfersThe record is for stock transfers, not manufacturing orders.
Transfers: WH/IN/00015The incoming transfer this cost is linked to.
Vendor Bill: BILL/2026/10/0005The bill this landed cost came from.
Product: Elevator InstallationThe cost line taken from the bill.
Split Method: By QuantityHow the cost is divided between the chosen products.
Cost: $15,000.00The amount of this cost line.

Why it helps

No spread on other products

A cost does not touch items it has nothing to do with.

One choice per line

Different cost lines on one record can go to different products.

Defaults carry over

The Apply On and Split Method set on the product fill in new cost lines.

Better values

Each product gets a more exact stock value, with fewer manual journal fixes.

Example: The Elevator Installation cost of $15,000.00 is linked to transfer WH/IN/00015. With Apply On set to Selected Products, the cost stays with the product it was paid for.

Previous Approach vs. Apply On

Previous approachOdoo 20 replacementWhat changes
A cost split across every product of the transferApply On set to Selected ProductsThe cost stays with the right products.
Only the Split Method (quantity, cost, weight or volume) was setApply On first, then the Split MethodOne more control for each line.
Fixing wrong costs by handThe right products are chosen at the startFewer manual adjustments.

How It Works

There are five stages, from the product to the cost on the right items:

1

Mark the product as "Is a Landed Cost".

2

Add it to a purchase order line.

3

Tick the landed cost box on the vendor bill.

4

Odoo creates the landed cost record.

5

Apply On limits the cost to the chosen products.

Note: The screens show one example purchase: an Elevator Installation service of $15,000.00 on transfer WH/IN/00015. Apply On is set for each cost line, so the result depends on which products you choose for that cost.

03

Variant-Specific HS Codes

Two variants of one product can need two different customs codes.

What is new

You can set a Harmonized System (HS) code for each product variant. Before, one code was used for the whole product. This helps when variants of the same product have different customs classes.

Why it helps

Exact customs data

Each variant gets the code that fits it.

Better for export

Variants with different classes are handled correctly.

More flexibility

Materials or features can have their own codes.

Example: A company sells a T-Shirt in Cotton and Polyester. Both belong to one product, but they need different HS codes.

Product variantMaterialHS code
T-Shirt -- Cotton -- BlackCotton6109.10
T-Shirt -- Cotton -- WhiteCotton6109.10
T-Shirt -- Polyester -- BlackPolyester6109.90
T-Shirt -- Polyester -- WhitePolyester6109.90

Note: Variant-specific HS codes work in Odoo 20, but they are not new in Odoo 20. They were already available in Odoo 19.4 and continue in Odoo 20.

04

Simplified Returns

Returning a product should take fewer steps.

What is new

The return wizard is gone. Before, you had to open a wizard and check the products and quantities before the return was created. Now the return is more direct.

Why it helps

Fewer steps

There is no extra wizard to go through.

Faster work

The warehouse team handles returns quicker.

Easier to use

Daily returns follow a more direct path.

Example: A customer sends back a product from a finished delivery. The warehouse team starts the return from that transfer and continues with the return operation, with no wizard.

Previous Approach vs. Simplified Returns

Previous approachOdoo 20 replacementWhat changes
A return wizard to check products and quantitiesA direct return from the transferOne step less.
Extra screens for each returnThe return operation opens right awayFaster for the warehouse team.

Note: Simplified returns work in Odoo 20, but they are not new in Odoo 20. They were already added in Odoo 19.3 and continue in Odoo 20.

05

Allocation Report

Allocate stock right where you see the forecast.

What is new

The allocation flow is better. You can now allocate directly from the forecast report, and the allocation report has a new design.

Why it helps

Fewer clicks

Allocate from the same report where you read the forecast.

Clearer view

The new design is easier to read.

Faster planning

Less jumping between screens.

Example: A planner opens the forecast report of a product, sees the stock that is coming in, and allocates it to a waiting order from the same report.

06

CMR Document

Generate CMR Documents from Delivery Orders.

What is new

You can download a CMR (Convention on the Contract for the International Carriage of Goods by Road) from a delivery. The document is prefilled with the information of the transfer.

Why it helps

Less typing

The data comes from the transfer.

Fewer mistakes

No copying of addresses or goods by hand.

Ready to use

Download it and send it with the goods.

Example: The warehouse team prepares a delivery for a customer in another country and downloads the CMR, already filled in.

07

Company-Specific Customer Lead Times

Each company can promise its own delivery time.

What is new

The customer lead time of a product can now be different for each company.

Why it helps

Own lead time

Every company sets the time that fits its own work.

One product, many companies

No need to copy the product.

More exact dates

Delivery dates follow the company that sells.

Example: Two companies sell the same product. One has a nearby warehouse and promises 2 days, and the other promises 7 days.

08

Intercompany Flows

Companies of one group can work together smoothly.

What is new

Intercompany flows have been improved in four ways:

Resupply by route.

Use routes to resupply one company from another.

Shared warehouses.

Deliver a sales order from the warehouse of another company, or use the pickup points of another company.

Right costs.

The valuation cost of transferred products is properly moved between companies.

Linked orders stay in sync.

Updates to linked sales and purchase orders, such as price or quantity, are sent to the other company.

Why it helps

One flow

Goods and costs move between companies in a clean way.

Better values

Each company has the right stock value.

Fewer manual updates

Changes reach the other company by themselves.

Example: Company A sells a product but ships it from the warehouse of Company B. The cost moves to Company A. Later the quantity on the sales order changes, and the linked purchase order is updated too.

09

Inventory at a Past Date

Look at your stock as it was, not only as it is.

What is new

The stock report has a new date picker. It gives an improved overview of the inventory at a past date. It keeps your filters and lets you choose a precise timestamp.

Why it helps

See the past

Check the stock on any day you need.

Filters stay

Your search does not reset when you change the date.

Exact time

Pick the hour and minute, not only the day.

Example: An accountant needs the stock at the end of the month. The date picker shows the stock at that exact time, with the same filters as before.

10

Location-Specific Push Routes

Let the place of arrival decide where the product goes next.

What is new

You can create push routes based on the specific destination of the product. For example, a product follows route A if you receive it in WH/Input/A, and route B if you receive it in WH/Input/B.

Why it helps

Smarter routing

The next move depends on the exact location.

Fewer manual moves

Odoo pushes the product the right way.

Fits your layout

Different input locations can have different paths.

Example: Goods received in WH/Input/A go to one storage area, and goods received in WH/Input/B go to another.

11

Preview Barcode Instructions in Operation Type

See what the operator will see before they scan.

What is new

You can preview the Barcode instructions shown to the operator. The preview follows the settings you chose, and you see it directly from the operation type.

Why it helps

Check your setup

See the result of your settings at once.

Fewer surprises

Operators get the instructions you expect.

No extra test

You do not need to try it on a device first.

Example: A manager changes the barcode settings of the Receipts operation type and opens the preview to see the instructions for the operator.

12

Product Packaging Barcodes

Packaging barcodes should be easy to find.

What is new

You can now access and manage product packaging barcodes more easily from the product form.

Why it helps

One place

Packaging and its barcode are on the product form.

Easy to find

No search in other menus.

Easy to manage

Change a barcode in the same screen.

Example: A user opens a product, goes to its packaging, and updates the barcode of a box of 12.

13

Product Replenishment

A Unified Replenishment Order Button.

What is new

In the replenishment dashboard, the "Order" and "Order to max" buttons are now one "Order" button.

When you reorder in advance, which means you select products without the "To reorder" filter, the order quantity is the maximum quantity minus the forecast quantity.

Previous Approach vs. One Order Button

Previous approachOdoo 20 replacementWhat changes
Two buttons: Order and Order to maxOne Order buttonSimpler dashboard.
You chose which button to useThe quantity is calculated for youLess to decide.

Why it helps

Simpler

One button to remember.

Clear rule

For advance orders, the quantity is max minus forecast.

Fewer mistakes

No wrong button choice.

Example: A planner selects a product without the "To reorder" filter. The maximum is 100 and the forecast is 40, so the order quantity is 60.

14

Inventory Valuation Adjustments

Inventory Valuation Adjustments and Auditability.

What is new

Product cost adjustments and their effect on inventory valuation are now listed in a new "Valuation Adjustments" menu. The menu is available in debug mode. With perpetual accounting, journal entries are created automatically.

Why it helps

Clear list

All cost adjustments are in one place.

Impact is visible

You see how each change affects the valuation.

Entries are automatic

With perpetual accounting, no manual journal entry.

Example: The cost of a product is changed. The finance team opens Valuation Adjustments and sees the adjustment and its effect on the stock value.

Note: The menu is only shown in debug mode.

15

Sendcloud: Pickup Points

Choose the pickup point in Odoo.

What is new

Pickup points offered by Sendcloud carriers can now be selected directly from a sales order or a transfer. They can also be corrected after an eCommerce order has been placed.

Why it helps

Select in Odoo

Choose the point on the order or the transfer.

Fix later

Correct a pickup point after the eCommerce order.

Fewer problems

The parcel goes to the right place.

Example: An online customer orders with a pickup point. The team notices a wrong point and changes it on the transfer before shipping.

16

Sendcloud: Package Reference

Your own reference on the carrier label.

What is new

The package reference from Odoo is now sent to Sendcloud. It can be shown on the labels of carriers that support package references.

Why it helps

Easy matching

Link a parcel to your Odoo package fast.

Same reference

Odoo and Sendcloud use the same one.

Clear labels

The reference can appear on the label.

Example: A package has a reference in Odoo. The label from the carrier shows the same reference, so the team finds the package at once.

Note: The reference is only shown on labels of carriers that support package references.

17

ShipStation Shipping Connector

Ship with ShipStation without leaving Odoo.

What is new

An integration with the shipping and fulfillment platform ShipStation has been added. It lets you calculate shipping costs and get shipping labels and tracking numbers directly through Odoo.

Why it helps

One tool

Do shipping work in Odoo.

Costs on the order

Know the shipping cost early.

Labels and tracking

Get them without a second platform.

Example: The team validates a delivery, gets the label and the tracking number from ShipStation, and the customer receives the tracking number.

18

Inventory Aging Report

Identify Slow-Moving and Aging Inventory.

What is new

You can open a stock aging report from the "Moves Analysis" pivot view.

Why it helps

See old stock

Find products that stay a long time.

Pivot view

Group and filter the data your way.

Act sooner

Plan sales or orders based on age.

Example: A manager opens the aging report to find products that have been in the warehouse for a long time and plans a discount.

19

Vendor Purchase Reference

Know the vendor of a receipt at a glance.

What is new

The vendor purchase reference now appears on receipt transfers.

Why it helps

Better traceability

The reference is on the receipt.

Quick check

Operators see the vendor from the incoming transfer.

No extra step

No need to open the purchase order.

Example: A truck arrives. The operator opens the receipt, reads the vendor purchase reference, and knows which vendor sent the goods.

Odoo 20 receipt transfer showing the vendor purchase reference.
20

ZPL Location Barcodes

Print location labels on your label printer.

What is new

Location barcode labels are now available in ZPL format.

Why it helps

Printer ready

ZPL is used by many label printers.

Easy printing

Make labels for your locations.

Clear scanning

Labels help operators find locations by barcode.

Example: The team prints barcode labels for all shelf locations in ZPL format and sticks them on the racks.

Odoo 20 Inventory helps you plan, move and track your stock with less work. Suggested stock levels and the simpler replenishment dashboard give you a good start for ordering. Landed costs for specific products and valuation adjustments keep your costs clear. Intercompany flows, push routes, the CMR document and the Sendcloud and ShipStation connections make moving goods easier. Past-date inventory, the aging report and the traceability report give you better answers from your data.

Frequently Asked Questions

No. Odoo suggests the values. You review them and set the reordering rule.

No. The release notes name the factors, such as demand history, days of coverage and order frequency, but not one formula for all products.

No. Apply On chooses the products first. Then the Split Method divides the cost between them.

On the landed cost product, in the Vendor Bills section of the Purchase tab. Each cost line can change it.

There is one Order button. When you reorder in advance, without the "To reorder" filter, the quantity is the maximum minus the forecast.

In the new Valuation Adjustments menu, which is available in debug mode.

No. HS codes by variant were added in Odoo 19.4 and simplified returns in Odoo 19.3. Both continue in Odoo 20.

Optimize Your Inventory with Odoo

Discover how customized Odoo solutions can improve inventory accuracy, streamline warehouse workflows, and simplify replenishment and stock valuation.

Contact Our Odoo Experts

Get GritXi's Expertise

Sign in to leave a comment
Oct 16, 2026

Odoo 20 Point of Sale: New Features and Updates

Odoo 20 Point of Sale introduces improvements across retail checkout, restaurant self-ordering, payment handling, inventory visibility, accounting, and receipt printing. This guide explores the POS up...
Oct 16, 2026

Odoo 20 Rental: New Features and Updates

Effective rental management requires more than simply recording bookings. Rental teams need flexible orders, accurate pricing, and clear availability rules to keep products booked, picked up, and retu...
Oct 16, 2026

Odoo 20 Phone: New Features and Updates

This post walks through the 7 key featuresin the Odoo 20 Phone (VOIP) application. Each one comes with a feature overview, an operational path and a screenshot placeholder. Artcle Overview 1. Audio Se...