---
title: "Inventory management in Odoo: from manual counts to a system that actually knows what you have"
description: "Warehouses, reorder rules, barcodes, cycle counts and valuation. How Odoo inventory works, what to configure on day one, and the mistakes that make balances wrong in week one."
lang: en
canonical: https://www.kerneltics.com/en/blog/odoo-inventory-management
source: https://www.kerneltics.com/en/blog/odoo-inventory-management
alternate_ar: https://www.kerneltics.com/blog/odoo-inventory-management
type: article
published: 2026-09-22T00:20:45.668Z
updated: 2026-09-22T00:20:45.672Z
author: "kerneltics"
tags: ["Odoo", "مخزون", "ERP", "مستودعات"]
---

# Inventory management in Odoo: from manual counts to a system that actually knows what you have

> Warehouses, reorder rules, barcodes, cycle counts and valuation. How Odoo inventory works, what to configure on day one, and the mistakes that make balances wrong in week one.

Odoo's inventory module is one of its strongest, and it is the reason many companies choose Odoo in the first place. Even so, we see companies that installed it and had wrong balances within the first month, because the module was configured on "default" without anyone understanding what default means for their business.

This post explains how Odoo inventory works in the language of a business owner rather than a developer, and what to configure from the start so the balance is right. If you are still asking "do I need an inventory system at all?", start with [an inventory system for a growing shop](https://www.kerneltics.com/blog/inventory-system-for-a-growing-shop).

## The core idea: everything is a move between two locations

Odoo does not think of stock as a number in a box. It thinks in moves: goods travel from one location to another. From the supplier to your warehouse, from the warehouse to the customer, from shelf to shelf, from stock to "loss". The balance anywhere is the sum of moves in minus moves out.

This means two important things:

1. **Every balance has a history.** You can see how it reached that number.
2. **There is no "adjust balance" without a reason.** Even a count correction is recorded as a move to a location called "inventory adjustment", and you can trace it.

Companies coming from spreadsheets find this odd at first, and then it becomes the thing they value most.

## Warehouses and locations

A **warehouse** is a physical place (the Riyadh branch, the Qassim warehouse). A **location** is a subdivision inside it (a shelf, a zone, a cold room). You can start with one warehouse and one location, and subdivide later when you need to know exactly where an item is.

**The common mistake:** creating many warehouses from the start "for organisation". Each warehouse brings rules, transfers and reports with it. Start with the fewest.

## Receipts and deliveries

Each warehouse has three basic operations: **receipt** (from a supplier), **delivery** (to a customer), **internal transfer**. Odoo can work in one step (goods go straight into stock) or two or three (receive, then inspect, then put away).

**Our advice:** one step at the start, unless you have genuine quality inspection or a large warehouse that needs a receiving area. Unnecessary steps get ignored by staff, and balances end up stuck in intermediate locations.

## Reorder rules

This is where "it ran out and nobody noticed" ends. For each product you set a minimum and a maximum. When the balance (or the forecast balance after pending orders) drops below the minimum, Odoo prepares a purchase order to the preferred supplier for the quantity that brings it up to the maximum.

**What to configure:** the supplier for each product, their price and lead time, and the thresholds based on sales rate and lead time. Start with the fastest-moving products, not the whole catalogue.

## Barcodes

Odoo has a barcode app that runs on a phone or a scanner: receive by scanning each item, deliver by scanning, count by scanning. Every product has a barcode (the one on the packaging or one you print). This is what makes balances genuinely correct, because staff scan instead of typing.

**The common mistake:** running the system without barcodes "temporarily". Temporary becomes permanent, and manual errors pile up.

## Cycle counting

You do not need to close the shop once a year. Odoo supports **cycle counts**: every day or week you count a small group of products (highest value or fastest moving first). Differences are recorded as moves to the adjustment location, and you see the pattern: which product disappears, and from which location.

## Variants, units and lots

- **Variants:** one product in sizes or colours. Odoo manages it as a parent product with variants, instead of twenty separate products.
- **Units of measure:** you buy a carton and sell a piece. Odoo converts automatically if the units are set from the start. This is one of the most common causes of wrong balances when set later.
- **Lots and serial numbers:** for products with expiry dates or serial numbers (medicines, devices, parts). You know which batch went to which customer.

## Valuation and accounting

Stock has a financial value, and Odoo can compute it in different ways (average cost, first in first out, standard cost) and post it to accounting automatically or manually. **This is an accounting decision** to make with your accountant before the first move is entered, because changing it later is painful.

## Integration with sales, purchasing and point of sale

The real power is that inventory does not work alone: a sales order reserves the quantity and creates a delivery, a purchase order creates a receipt, and point of sale reduces the balance live. The invoice is issued e-invoicing compliant, which we explained in [point of sale in Odoo and ZATCA e-invoicing](https://www.kerneltics.com/blog/odoo-pos-and-zatca).

## The mistakes that make balances wrong from the first week

1. **An opening balance from the spreadsheet** without a physical count.
2. **Units of measure** not set before the first purchase.
3. **Duplicate products** under different names migrated as they were.
4. **Extra receiving steps**, so goods got stuck in intermediate locations.
5. **No barcodes**, everything manual.
6. **Open permissions**: everyone can adjust balances, so nobody is responsible.

## The short version

Inventory in Odoo is moves between locations, which is what gives you a balance with a history. Configure from the start: one warehouse and one step, units of measure, barcodes, reorder rules for the fastest-moving products, and the valuation decision with your accountant. And start from an opening balance based on a physical count, not a file.

See [Odoo implementation with ZATCA](https://www.kerneltics.com/solutions/odoo-zatca) for what we do, or [book a free consultation](https://www.kerneltics.com/book) and we will look at your stock and tell you what it needs.
