A workbook named "inventory_final_v3.xlsx" sitting on a shared drive, and nobody dares touch it while someone else has it open. Managing your stock in a spreadsheet always ends up going sideways. A colleague forgets to update a quantity. Someone works from an old copy. The boss asks how many M8 screws are left in stock and nobody can answer with certainty. Result: stockouts, duplicate orders and customers waiting.
The problem isn't your team's lack of discipline. It's the tool. A spreadsheet was never designed to track stock movements in real time. Odoo Inventory was.
The double-entry principle: not just numbers in a cell
What sets Odoo apart from a spreadsheet or even many management software packages is its double-entry inventory system. The concept comes from accounting: every stock movement is recorded as a transfer from one location to another. We don't just say "there are 50 units." We say "50 units moved from receiving to shelf A3 on March 4 at 2 PM."
That changes everything. Every unit has a complete history. We know where it came from, where it went, when it moved. If there's an error, we can trace it back. In accounting, this principle has proven itself since the 13th century. Odoo applies it to your warehouse.
Warehouses, locations and zones
Odoo separates warehouses (your physical buildings) from locations (the zones inside them). A warehouse can have receiving, storage, shipping and quality control locations. Each location is a point in the chain where your products pass through.
For an SMB with a single warehouse, this already lets you know exactly where each product is. For those with multiple sites, multi-warehouse is included in Community: inter-warehouse transfers, per-site replenishment rules, all in a single database.
Routes and rules: automating your flows
Routes in Odoo define the path a product takes through your supply chain. You can configure "push" rules (when a product arrives at receiving, it's automatically transferred to storage) or "pull" rules (a customer order triggers a pick).
In practice, this means you can automate a good chunk of your logistics. A purchase order automatically creates a receipt. A sale triggers a delivery. A minimum threshold triggers a purchase. Fewer manual interventions, fewer oversights.
Reordering rules: stock that reorders itself
A reordering rule comes down to three numbers: a minimum quantity, a maximum quantity and a multiple. When a product's forecasted quantity drops below the minimum, Odoo tops the stock back up to the maximum, rounding to an order multiple if you've set one (nobody wants to order 17 boxes when the supplier ships them by the pallet of 12).
There are two ways to trigger the rule. In automatic mode, the purchase order or manufacturing order is created without anyone touching it. In manual mode, the product shows up on a replenishment dashboard and someone decides whether to order. That dashboard factors in lead times and the deadlines of orders already in flight, so it only surfaces a product when it's genuinely time to act.
The real gain isn't the automation. It's that the threshold becomes a business decision written down somewhere, rather than a number in the head of the person who has been placing the orders for twelve years. When that person takes two weeks off, the threshold stays.
Buy by the case, sell by the unit
Your supplier sells by the dozen, your customers buy single units, and your warehouse counts in units. That's a classic source of errors in a spreadsheet, because the conversion happens in someone's head at data entry time.
Odoo handles units of measure by category: each category has a reference unit, and the other units attach to it through a ratio. A product can therefore have a purchase unit that differs from its stock unit. An order for 2 dozens arrives at receiving as 24 units, with no manual arithmetic. The constraint worth remembering: conversion only works within a single category, which is exactly what stops anyone from accidentally converting kilos into boxes.
Lots, serial numbers and traceability
Community includes lot and serial number tracking. You can assign a lot number to a goods receipt and track it all the way to customer delivery. For businesses managing perishable products, warranted parts or regulated materials, this is essential.
Full traceability lets you trace back from an unhappy customer to the supplier's lot. In case of a product recall, you know exactly which customers received which lots.
Inventory adjustments and cycle counting
Physical inventory counts remain unavoidable. Odoo lets you make inventory adjustments to reconcile reality with the system. You can count all stock at once or do cycle counts: check a portion of stock each week rather than shutting everything down once a year.
Since version 18, it's possible to hide theoretical quantities during counting. The setting is named unambiguously in the Inventory configuration: "Show Quantity to Count". Unchecked, the team counts blind, without being influenced by what the system displays. Discrepancies are detected automatically when the count is applied.
You can also set an inventory frequency in days. Odoo then proposes a count date for each product or location concerned, and cycle counting stops depending on somebody's memory.
Stock valuation: what your accountant does with it
Stock is money sitting still on shelves, and that amount has to show up in your financial statements. Odoo offers three costing methods: standard price (set by hand on the product form), average cost, and first in first out, which uses the real purchase price of the oldest lot in stock.
Then comes the question your accountant actually cares about: when the journal entries get posted. With manual valuation, also called periodic, the accounting team posts the entries based on the physical inventory. With automated valuation, also called perpetual, Odoo creates the entries in real time every time goods enter or leave.
The second option removes the year-end scramble and gives you a stock value you can look up on any day of the month. In exchange, it demands that your counts stay serious all year long, because an uncorrected discrepancy lands straight on the balance sheet. This is a decision to make with your accountant before go-live, not six months later.
Integration with Sales and Purchases
This is where the Inventory module really shines: it doesn't live in a silo. When a salesperson confirms an order, the delivery order is created automatically. When stock hits a critical threshold, a supplier purchase order is drafted. The Purchases and Sales modules talk directly to Inventory.
No more back-and-forth between systems. No more "I checked the spreadsheet and there were 12 units left but actually no." Information flows in real time within a single system.
Barcodes stop at the USB scanner
Odoo Community lets you assign barcodes to products and locations. You can use a USB scanner connected to a workstation to scan products during receipts, transfers or inventory adjustments. GS1 nomenclature is supported.
However, the mobile barcode app (the one that turns a phone into a scanner with a touch interface optimized for the warehouse) is Enterprise-only. That's an important distinction for teams working on their feet in the warehouse with a phone in hand.
Community vs Enterprise: what changes
| Feature | Community (open-source) | Enterprise |
|---|---|---|
| Double entry and stock moves | Yes | Yes |
| Multi-warehouse and locations | Yes | Yes |
| Routes and rules (push/pull) | Yes | Yes |
| Reordering rules (min/max) | Yes | Yes |
| Units of measure and conversion | Yes | Yes |
| Lots and serial numbers | Yes | Yes |
| Inventory adjustments | Yes | Yes |
| Sales and Purchases integration | Yes | Yes |
| Barcodes (USB scanner) | Yes | Yes |
| Automatic stock valuation | Yes | Yes |
| Mobile barcode app | No | Yes |
| Integrated quality control | No | Yes |
| IoT (scales, printers, etc.) | No | Yes |
The takeaway: the core of the Inventory module is the same in both versions. Community covers complete stock management for the majority of SMBs. Enterprise adds productivity tools for high-volume warehouses: the mobile barcode app, automated quality control and IoT connectivity.
Excel vs Odoo Inventory: why the spreadsheet no longer cuts it
| Criteria | Excel / Google Sheets | Odoo Inventory |
|---|---|---|
| Real-time | No (manual updates) | Yes (every movement is recorded) |
| Traceability | Limited (version history) | Complete (lots, serials, movements) |
| Multi-user | Frequent conflicts | Native concurrent access |
| Sales/purchases integration | Manual copy-paste | Automatic |
| Replenishment thresholds | Fragile formulas | Automated rules |
| Unit conversion | Mental arithmetic at data entry | Ratios defined once per category |
| Accounting valuation | Computed separately, at year-end | Real-time entries when enabled |
| Barcodes | No | Yes |
| Reports | Build them yourself | Built-in and real-time |
| Software cost | Microsoft 365 subscription, or a Google account | Community: free, hosting extra |
Where it gets tricky
Here's what you need to know before diving in.
Odoo Community's interface is functional but less polished than Enterprise's. The dashboards are more basic. For a team discovering the software, the learning curve is real: you need to understand the concepts of locations, routes and stock movements.
Without the barcode mobile app, warehouse work happens from a web browser. That's workable on a tablet, but it isn't as fluid as a native app built for the floor. Community modules (via the OCA) exist to fill this gap, but they require integration work.
Quality control is not built into Community. If your process requires systematic checkpoints at every receipt, you'll need to either go with Enterprise or set up a parallel process.
Manufacturing isn't part of Inventory either: bills of materials and manufacturing orders live in a separate module. If your stock is mostly raw materials you transform, Inventory alone tells only half the story.
Finally, the initial setup is not trivial. Routes, replenishment rules, locations: all of this requires upfront planning. A well-configured system runs itself. A poorly configured one creates more problems than it solves.
Start small, skip the bloat
Everything above can read like a list of things to configure. That's the classic first-deployment mistake: switching on routes, unit categories, serial number traceability and perpetual valuation in the same week, then ending up with a system nobody dares to use.
Odoo requires none of that. A useful inventory comes down to four decisions.
- One warehouse, and locations that describe your actual zones. Not a theoretical tree.
- Lot or serial number tracking only on the products that require it: perishables, warranted parts, regulated materials. For the rest, the quantity is enough.
- Reordering rules on the handful of products whose stockout genuinely hurts, not on the whole catalogue.
- Manual valuation to begin with, until the counts become reliable. The move to automated valuation gets planned afterwards, with your accountant.
Custom routes, nested locations, putaway rules: those can wait. They are answers to volume problems, and a volume problem announces itself well in advance. Configuring ahead for hypothetical growth is exactly how you build the bloat you were trying to avoid.
The test fits in one sentence: if your team cannot explain a stock movement out loud, the system is already configured beyond what they need.
Configuration is exactly what we do. We deploy Odoo Community on a sovereign infrastructure in Quebec and make sure your inventory is set up for your reality, not for a generic use case.
What we deploy
At Blue Fox, we recommend Odoo Community as a starting point for SMB inventory management. It's open-source software, the code is open, your data belongs to you. We host in Quebec, in compliance with Law 25, and we maintain full control over the infrastructure.
Community covers the needs of the vast majority of Quebec SMBs when it comes to stock management. If one day your volumes justify the mobile barcode app or integrated quality control, migrating to Enterprise is possible without losing your data.
Our recommendation to get started:
- Map your current flows (receiving, storage, shipping)
- Configure locations according to your physical reality
- Settle the costing method and valuation mode with your accountant
- Activate routes and replenishment rules
- Train the team on stock movements and adjustments
- Gradually integrate with the Sales and Purchases modules
Your inventory deserves better than an Excel file shared on a Drive. Let's talk about your inventory.
Sources
- Official Odoo 18 documentation: Inventory app
- Odoo Inventory features page
- Odoo editions comparison (Community vs Enterprise)
- The double-entry system for stock management (Odoo blog)
- Odoo 18 documentation: warehouse management
- Odoo 18 documentation: reordering rules
- Odoo 18 documentation: units of measure
- Odoo 18 documentation: inventory valuation configuration
- Odoo 18 documentation: inventory adjustments and counts