Odoo Reordering Rules: How to Set Min and Max Stock Levels for Australian Wholesalers
Odoo reordering rules fire on the forecast at today plus lead time, not on-hand stock. Min is lead time demand plus safety stock; Max is Min plus one order.
By Josh Craig, Managing Director, Auboros ·
Odoo reordering rules hold forecasted stock between a minimum and a maximum per product and location. When the forecast on the forecasted date (today plus vendor lead time and days to purchase) drops below Min, Odoo creates a request for quotation or manufacturing order to reach Max. Set Min as demand during lead time plus safety stock, and Max as Min plus one order, as at 15 October 2026.
At a glance
- Who it is for: Australian wholesalers, distributors and importers on Odoo 17, 18, 19 or 20 who buy stock to a forecast, often from overseas suppliers with lead times of weeks rather than days
- Problem it solves: Reordering rules only work as well as the numbers in them; most stockouts we see on Odoo sites trace back to a Min that ignores lead time or a trigger nobody understood
- Platforms: Odoo Inventory with Purchase (Buy route) or Manufacturing (Manufacture route); Enterprise or Community
- Typical cost: Reordering rules are part of the Inventory app on any plan; odoo.com/pricing listed Standard at A$43 per user per month ex GST (A$34.40 for the first year) as at 5 October 2026, and configuring the rules sits inside an implementation, see Odoo implementation cost in Australia
- Typical timeline: One to two working days to set rules for a few hundred SKUs once demand and lead time data is clean; the data clean-up is usually the longer job
- Last verified: 15 October 2026 against the Odoo 19 and 20 reordering rules documentation and the Odoo 20 release notes as read on 30 September 2026
A reordering rule is one line: product, location, Min, Max, and optionally a trigger, a route, a vendor and a multiple. The screen is simple enough that most sites fill it in during go-live week and never look again. The arithmetic behind the two numbers is where the trouble is, and it is different for a Brisbane wholesaler waiting 45 days on a container than for the European retailer the tutorials are written about. This post covers how the rule fires, how to set Min and Max for Australian lead times, what Odoo 20 added, and the settings that go wrong.
What are Odoo reordering rules and how do they trigger?
Odoo’s documentation defines the rule as keeping forecasted stock above a minimum without exceeding a maximum. Three things in that sentence matter.
- It watches the forecast, not the shelf. The quantity compared against Min is the forecasted quantity on the forecasted date: on hand, plus incoming receipts, minus outgoing moves scheduled before that date. A product with 500 on hand and 480 on confirmed sales orders is forecast at 20.
- It replenishes by route. A product on the Buy route gets a request for quotation (RFQ) to the vendor at the top of its vendor pricelist. A product on the Manufacture route gets a manufacturing order (MO) against its bill of materials. If both routes are enabled and no preferred route is set on the rule, Odoo buys first, then manufactures.
- It fires on two events. With the default Auto trigger, the rule runs when the scheduler runs (once a day by default) or when a sales order confirmation pushes the forecast below Min. With the Manual trigger, nothing is created; the product appears on the replenishment report for a buyer to review and order.
To use a rule at all, the product has to be type Goods with Track Inventory ticked, and for the Buy route it needs the Purchase box ticked and at least one vendor with a price on the Purchase tab. We still find products on live sites with a rule and no vendor; the rule fires, Odoo cannot build an RFQ, and the stockout happens anyway.
How do you set the minimum in Odoo?
The minimum is a reorder point, and the generic formula is demand during lead time plus safety stock. The reason you need both parts in Odoo specifically comes from the forecast logic above.
Odoo’s forecast only subtracts demand that already exists as confirmed orders before the forecasted date. For a wholesaler whose customers order a few days ahead, almost none of the next 45 days of sales exist yet when the rule is evaluated. So if you set Min to zero plus a bit of buffer, the rule fires when the forecast reaches that buffer, the container is ordered, and the product sells out roughly a week later with 38 days still to run. The forecast was correct; the Min did not account for the sales that had not been placed yet.
Work it out per product in three steps.
- Average daily demand (d). Units shipped per calendar day over a period that reflects the coming one; 90 days is a common choice, with the same quarter last year as a cross-check for seasonal lines.
- Lead time in days (L). For a bought product, Odoo’s forecasted date uses the vendor lead time from the vendor pricelist plus the company-level days to purchase (lead times documentation). Use the same number in your formula so the rule and the schedule agree. In our importer projects, sea freight from Asia into Brisbane or Sydney typically lands at 40 to 60 calendar days from order confirmation to goods in stock once production, sailing and customs are included; measure yours from recent receipts rather than the supplier’s quoted figure.
- Safety stock. Cover for demand being lumpier than average or the ship being late. The statistical version is a service-level multiplier times the standard deviation of daily demand times the square root of lead time; at a 95% service level the multiplier is 1.645. If you do not have the standard deviation, a rule of thumb is a fixed number of days of average demand.
Worked example: a product sells 20 units a day with a standard deviation of 6, the supplier lead time is 45 days and days to purchase is 2, so L is 47. Demand during lead time is 940. Safety stock at 95% is 1.645 x 6 x the square root of 47, about 68. Min is 1,008. Our free reorder point, safety stock and EOQ calculator runs these formulas in your browser and gives you the figures to type into the rule.
One trap: do not also load the safety stock into the security lead time setting. Odoo’s sales security lead time moves scheduled dates earlier by a fixed number of days for every order; it is a scheduling buffer, not a quantity buffer, and using both doubles the cover and the capital tied up.
How do you set the maximum?
Max is Min plus the quantity you want to order each time. Odoo’s To Order quantity is whatever brings the forecast back up to Max, rounded up to the Multiple if one is set, so Max is really a statement about order size.
For an imported product the order size is usually dictated by the supplier or the freight, not by a formula: the minimum order quantity, a pallet layer, a carton count or the share of a container the line is allowed to take. Where none of those bind, the economic order quantity balances ordering cost against holding cost, and the calculator linked above includes it. In the worked example, ordering roughly two months of demand at a time gives an order quantity of 1,200, so Max is about 2,208.
Set the Multiple to the vendor’s packaging and Odoo rounds for you. The documentation’s example is a product sold in cases of six: with Min 10 and Max 40 and a forecast of 8, the 32 needed becomes 36, slightly above Max, and the report shows a warning that stock may exceed the maximum. That is the intended behaviour, not a fault. Multiples come from the packagings on the product’s vendor pricelist, so if the dropdown is empty, add the carton as a packaging first.
Which lead times does Odoo use for the forecasted date?
Odoo plans backwards from the delivery deadline using what its documentation calls just in time logic. The forecasted date is the earliest the product could arrive if you ordered right now: today plus vendor lead time plus days to purchase for a bought product, or manufacturing lead time plus days to prepare the MO for a made one. Demand scheduled after that date is not counted in the rule’s forecast, although it still shows in the forecasted report behind the chart icon.
That is why a sales order due in 60 days does not trigger a rule for a 47-day product today. Odoo will trigger it in 13 days, which is just in time and also leaves no margin. Two settings extend the window.
- Horizon days. A company-level setting (Inventory, Advanced Scheduling, Replenishment Horizon) that adds days to the forecasted date for manual rules, so demand further out appears on the replenishment report earlier. The documentation’s example moves a product from invisible to listed by raising the horizon from 20 to 30 days.
- Days to purchase and the purchase security lead time. Both sit in the same Advanced Scheduling section. Days to purchase is the time the vendor takes to confirm an RFQ and is added to the forecasted date; the Security Lead Time for Purchase schedules receipts earlier by a fixed number of days to cover supplier slippage. Keep both small and consistent; they are where the “we always order a week early” habit belongs.
For a wholesaler ordering by the container, we usually set the horizon to the longest supplier lead time plus a fortnight, so the buyer sees the whole consolidation picture when they open the report.
Auto or manual: which trigger should a wholesaler use?
Auto rules are fine for local suppliers with short lead times and no minimums: the RFQ appears, someone confirms it, done. For imported lines we almost always set Manual and run the replenishment report weekly instead, for three reasons.
- Consolidation. The report groups by vendor, so the buyer sees every line from one supplier that is due or nearly due and fills the container once. Auto rules would raise a separate RFQ for each line as it tripped.
- Judgement. The To Order quantity is editable on the report, and a line can be snoozed for a set period when a promotion ends or a customer forecast changes.
- Cash. A container is a large commitment, and an automatic RFQ is one approval away from becoming one. Having a person open the report is the approval.
The table below compares the replenishment mechanisms Odoo offers, so you can match each product group to one of them rather than putting every SKU on the same rule.
| Mechanism | What happens | Best fit | Watch-outs |
|---|---|---|---|
| Auto reordering rule | RFQ or MO created when the forecast drops below Min, at the scheduler run or on sales order confirmation | Fast-moving local lines with reliable suppliers | One RFQ per line; no consolidation; needs a vendor on the pricelist |
| Manual reordering rule plus replenishment report | Product listed with To Order quantity; buyer reviews and clicks Order | Imported lines, container consolidation, anything with an MOQ | Someone has to open the report; set horizon days or demand appears late |
| 0/0/1 rule | Min 0, Max 0, To Order 1: buys one unit each time a sale takes the forecast negative | Lines you never stock but sell occasionally | Stock is not reserved to the sale that caused it |
| Replenish on Order (MTO) route | A purchase or MO is created for and reserved to each confirmed sales order | Made-to-order and special-order products | Reserved stock cannot be used for another order; one PO per sale |
| Purchase Suggest | On an RFQ, Odoo proposes quantities from historical deliveries for a chosen number of days | Topping up a vendor order to a coverage period | Needs at least one validated delivery per product; based on history only |
| Odoo 20 suggested Min and Max | Odoo proposes Min and Max from demand history, desired days of coverage and order frequency | Setting rules for the first time across many SKUs | A starting point; check against MOQs and seasonality before accepting |
What changed for reordering rules in Odoo 20?
Two things, both from the release notes as read on 30 September 2026.
The bigger one is suggested stock levels. Odoo 20 proposes minimum and maximum quantities for a rule from demand history, the minimum days of coverage you want and how often you order. For a site with 2,000 SKUs that has been running on rules copied from the old system, that is a fast way to find the ones that are badly wrong, which is how we would use it: accept the suggestion where it agrees with the arithmetic above, and investigate where it does not.
The smaller one is the replenishment dashboard’s buttons. Order and Order to Max are now one Order button. When you select products that are not on the To Reorder filter, meaning you are ordering ahead, the quantity is Max minus forecast, which is what Order to Max did before. If your buyers were trained on the two-button screen, show them before the upgrade.
The Purchase app’s Suggest feature is in 19 and 20 and is worth knowing alongside the rules. On an RFQ, open the vendor’s catalogue, toggle Suggest, choose a Replenish for period and a Based on period (the last 7, 30, 90 or 365 days, or the same month or quarter last year, scaled by a percentage), and Odoo adds quantities equal to estimated demand minus available and incoming stock. It only counts validated deliveries and consumed components, so draft quotations do not inflate it. Our post on what changed in Odoo 20 inventory and manufacturing covers the rest of the release for warehouse teams.
“The rule that causes the most grief is a Min set from what was on the shelf the day someone typed it in. Set it from how much you sell while the container is on the water, add the buffer, and write down the date you did it so it gets reviewed.”
Josh Craig, Director, Auboros
Which settings go wrong most often?
Five we fix on existing sites more than any others.
- Min built from on-hand stock. The product had 300 on the shelf at go-live, so Min became 300. Lead time demand never entered it. Recalculate from d, L and safety stock.
- No vendor, or the wrong vendor first. Odoo uses the vendor at the top of the pricelist. After a supplier change the old one is often still first, and the RFQ goes to them.
- Multiple left at Units. Cartons of 24 ordered as 1,307 units, rejected by the supplier, re-keyed by hand. Add the packaging to the pricelist and set the Multiple.
- Scheduler timing. The default scheduler runs once a day, and the exact time matters when the buyer runs the report first thing. Confirm it runs before the review slot.
- Rules by product, not by location. A second warehouse added later with no rules of its own, or rules pointing at the wrong location, so one site reorders for both.
A reordering rule is also a good first job for an approval-gated AI agent: it reads the same forecast, drafts the purchase orders and leaves the decision with the buyer. Our post on the AI replenishment agent covers how that works in Odoo and MYOB Acumatica. Whichever way you run it, the rules above are the inputs, and the Odoo purchasing module takes over once the RFQ exists. We set these up as part of every ERP for wholesale distribution in Australia project, and review them at the 90-day check as an Odoo partner in Brisbane.
Goes well with
- Odoo purchasing module: purchase orders, RFQs and what you can automate
- Odoo 20 inventory and manufacturing: what changed for wholesalers and manufacturers
- MYOB Acumatica replenishment: reorder points and safety stock, the same arithmetic on the other platform
Stockouts on lines you thought had reordering rules?
We review Odoo replenishment setups for wholesalers and importers across Queensland and the rest of Australia, usually in a single session against your last 90 days of sales and receipts. Book a free consultation and bring the product list; we will show you which rules are doing their job and which ones were set from the shelf.
FAQ
Frequently asked questions
How do reordering rules work in Odoo?
Each rule watches one product in one location. When the forecasted quantity on the forecasted date (today plus vendor lead time and days to purchase) falls below the rule's Min, Odoo creates a request for quotation on the Buy route or a manufacturing order on the Manufacture route for enough to reach Max. Auto rules create the document at the daily scheduler run or on sales order confirmation; Manual rules list the product on the replenishment report for a buyer to order.
What should the minimum quantity be in an Odoo reordering rule?
Average daily demand multiplied by the lead time in days, plus safety stock. Odoo's forecast only subtracts orders that already exist, so sales that will arrive during a 45-day shipping window are not in it; the Min has to carry them. At a 95% service level, safety stock is 1.645 times the standard deviation of daily demand times the square root of lead time.
What is the difference between Min and Max in Odoo?
Min is the reorder point: the forecast level that triggers replenishment. Max is the level Odoo replenishes up to, so Max minus Min is your normal order quantity. If a Multiple is set from the vendor's packaging, Odoo rounds the order up to the next carton or pallet, which can leave stock slightly above Max.
Should I use automatic or manual reordering rules in Odoo?
Auto suits local suppliers with short lead times and no minimum order, because the RFQ just appears. Manual suits imported lines and anything you consolidate into a container, because the replenishment report groups demand by vendor, lets the buyer edit quantities and snooze lines, and keeps a person between the forecast and a large purchase commitment.
Does Odoo 20 suggest reordering rule quantities?
Yes. The Odoo 20 release notes describe suggested minimum and maximum stock levels for reordering rules based on demand history, the desired minimum days of coverage and order frequency. Treat the suggestion as a starting point and check it against supplier minimums and seasonality before accepting it. Odoo 20 also merges the Order and Order to Max buttons on the replenishment dashboard into one Order button.