Odoo inventory management: how the Inventory app works and what to set up first
Odoo inventory management in plain terms: warehouses, barcodes, reorder rules, counts and valuation, what to set up first, and what Community leaves out.
Odoo inventory management is one of the strongest parts of Odoo, and it is the reason many companies choose Odoo in the first place. Even so, we see companies that installed the Inventory app and had wrong balances within the first month, because it 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, what to configure from the start so the balance is right, and the order to go live in. If you are still asking "do I need an inventory system at all?", start with an inventory system for a growing shop.
How Odoo inventory management works: 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:
- Every balance has a history. You can see how it reached that number.
- 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 main store, a branch, the back 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.
Putaway and removal: where goods go in, which goods go out
Once a warehouse has locations, two settings decide how goods move inside it.
Putaway rules answer "where does this go when it arrives?". A product or a whole category belongs on a certain shelf or in the cold room, and the receipt sends it there instead of leaving it by the door.
Removal strategies answer "which unit leaves first?". The default is first in, first out. For anything that expires (food, medicine, cosmetics) you want FEFO, first expiry first out: switch on lots with expiry dates, and Odoo reserves the batch that expires soonest and can alert you before a batch runs out of date. The strategy is set per product category or per location, so the dry shelves can run FIFO while the fridge runs FEFO.
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. A rule can also be set to trigger manually, so Odoo lists what to order and a buyer confirms it: a sensible way to run the first weeks, until you trust the numbers.
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.
Know this before you plan around it: Odoo's editions comparison lists the Barcode app under Enterprise only. In Community a product still carries its barcode and the Point of Sale till scans at checkout, but receiving, picking and counting by scan need Enterprise or a module from the Apps Store. If you go the module route, read how to check an Odoo module before you pay for it.
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: you set how often each location is counted, and every day or week a small group of products gets counted (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.
Keep the last step with one person: counters record what they found, and the inventory manager applies the difference. If everyone can apply adjustments, a wrong balance has no owner.
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, and who to call if a batch is recalled.
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.
The inventory reports you will actually open
Odoo has many inventory reports. An owner needs about five, and each answers one question:
- Stock on hand by warehouse or location: what do we have, and where?
- Moves history of a product: how did this number happen, when, and who moved it?
- Forecast of a product: what will we have after confirmed sales and incoming purchases?
- Replenishment: what is under its minimum now, and what does Odoo suggest ordering?
- Valuation: what is the stock worth? This one is for month end with your accountant.
Before you trust any of them, count a dozen products by hand and compare with the stock report.
Integration with sales, purchasing, point of sale and your online store
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 takes sold items out of the branch's stock. The invoice is issued e-invoicing compliant, which we explained in point of sale in Odoo and ZATCA e-invoicing.
An online store on Odoo's own Website app sells from the same stock. A store on another platform needs a connector that moves orders into Odoo and stock back to the store: check it is maintained for your Odoo version, or have one built for how you work. Either way the balance lives in one place, and everything else reads it.
Going live: the order that keeps the balance right
- Clean the product list. One record per real item, with its reference, barcode, category, purchase unit and sales unit. Merge duplicates now, not after the import.
- Decide valuation with your accountant and set it on the product categories.
- Set up warehouses and locations, the fewest that match how the place really works.
- Import the products without quantities. The spreadsheet's numbers are what you are replacing.
- Count on a cutoff day. After closing, or with receiving paused, count everything and enter what you counted as the opening balance.
- Switch on sales, purchases and the till the next morning, and for the first weeks compare a small daily count with the system.
- Add reorder rules once Odoo holds a few weeks of real sales, fast movers first, on manual trigger.
Steps 1 and 5 are the ones people are tempted to skip, and they decide whether the balance can be trusted. The wider patterns are in why Odoo implementations go wrong.
The mistakes that make balances wrong from the first week
- An opening balance from the spreadsheet without a physical count.
- Units of measure not set before the first purchase.
- Duplicate products under different names migrated as they were.
- Extra receiving steps, so goods got stuck in intermediate locations.
- No barcodes, everything manual.
- Open permissions: everyone can adjust balances, so nobody is responsible.
Questions owners ask about Odoo inventory
Is Odoo Inventory free, and is Community enough?
Odoo's editions page lists Inventory in both Community and Enterprise. Community is free and open source and covers everything above except the Barcode app; you still pay for hosting and for the setup. Enterprise is a per-user subscription, priced on Odoo's own pricing page. Check the comparison for the version you install, since features move between releases.
Our Odoo stock is already wrong. Do we start over?
Usually not. Review the setup (units, steps, permissions), do a physical count and record the differences as one dated adjustment, then fix whatever made the balances drift. Starting over is only worth it when the product data itself is a mess.
How long does it take to set up?
It depends less on Odoo than on your data: how many products you carry, how clean the list is, how many warehouses, and whether you need lots, expiry dates or barcodes. The configuration is the quick part; the product cleanup and the opening count take the time, so start those first.
Do warehouse staff need technical skills?
No. They receive, pick and count. One person needs to understand the setup properly: locations, routes, reorder rules and who may apply adjustments. That person matters more than the software.
Can one Odoo run several branches?
Yes. Each branch is a warehouse with its own stock, transfers between branches are recorded as moves, and each branch's till sells from its own warehouse, while you see all of them in one report.
The short version
Odoo inventory 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, FEFO where things expire, barcodes if you are on Enterprise, reorder rules for the fastest movers, and the valuation decision with your accountant. And start from an opening balance based on a physical count, not a file.
How we do it
Kerneltics sets up Odoo inventory in the go-live order above, with the opening count done alongside your team on the cutoff day, and connects the till and invoices to ZATCA e-invoicing in the same project. See Odoo implementation with ZATCA and our Odoo services, or book a free consultation and we will look at your stock and tell you what it needs.