Min/Max Inventory System: How to Set Your Min and Max Levels

A min/max inventory system gives every product two numbers: a minimum that triggers a reorder, and a maximum that tells you how high to fill it back up. Hit the min, order enough to reach the max. That is the whole method, and it quietly runs a huge share of the warehouses you have ever bought from.
Here is how each number works, the formula behind them, a worked example you can copy, and how min/max stacks up against the other ways people decide when to restock.
What a min/max inventory system is
Most reorder methods answer only half the question. A plain reorder point tells you when to order but leaves the quantity up to you. A fixed batch tells you how much but not when. A min/max inventory system answers both at once.
- The minimum is your reorder trigger. When stock on hand drops to this level, you place an order. It is really just a reorder point wearing a different name.
- The maximum is your target ceiling. It is the level you refill up to, so it also sets a cap on how much you hold.
Because you order the difference between the max and what you have on hand, the order quantity flexes with demand. A slow week means a smaller top-up. A busy one means a bigger order. You are not stuck shipping the same batch size regardless of what actually sold.
The two numbers, and how to set each
Setting the minimum
Your minimum has one job: keep you in stock during the wait between placing an order and receiving it. That wait is your lead time, and it is where stockouts happen. So the minimum is your reorder point:
Minimum = (average daily usage x lead time in days) + safety stock
Safety stock is the cushion for the weeks demand runs hot or the supplier runs late. A simple starting point is your worst realistic lead time minus your average lead time, times daily usage.
Setting the maximum
The maximum decides how much cover you carry after a refill. Set it too low and you are placing orders constantly and paying shipping every time. Set it too high and you are sitting on cash and warehouse space you did not need to spend.
A clean way to set it is to add a review cycle on top of the lead time you already covered in the minimum:
Maximum = (average daily usage x (review period + lead time)) + safety stock
The review period is how long you want a single order to last before the next trigger. Two weeks of cover is a common default. Pick a longer cycle for cheap, small, fast-moving stock, and a shorter one for expensive or bulky items you do not want to hoard.
The min/max formula
When stock hits the minimum, the amount you order is simple:
Order quantity = maximum - stock on hand - stock already on order
The "stock already on order" part matters. If you have an inbound purchase order that has not landed yet, subtract it, or you will double-order and blow past your ceiling.
A worked example
Say you run an apparel shop and want to manage a size-M cotton tee.
- You sell about 40 units a day.
- Your supplier takes 7 days to deliver a restock.
- You keep 60 units of safety stock.
- You want each order to last a 14-day cycle.
Minimum first:
Minimum = (40 x 7) + 60
Minimum = 280 + 60
Minimum = 340 units
Now the maximum:
Maximum = (40 x (14 + 7)) + 60
Maximum = (40 x 21) + 60
Maximum = 840 + 60
Maximum = 900 units
So the moment that tee drops to 340 units, you order back up to 900. If you have 320 on hand when the trigger fires and nothing inbound, you order 580. If a 100-unit shipment is already on the way, you order 480 instead. The min keeps you covered through the 7-day lead time, and the max keeps roughly two weeks of selling in the building without turning your stockroom into a warehouse of unsold shirts.
Min/max vs other reorder methods
Min/max is not the only game in town. Here is how it compares to the two systems people most often confuse it with.
| Method | When you order | How much you order |
|---|---|---|
| Min/max | Stock falls to the min | Variable: max minus on hand |
| Fixed reorder quantity (EOQ) | Stock falls to a reorder point | Same batch every time |
| Periodic review (par level) | On a fixed schedule (say, every Monday) | Variable: par minus on hand |
Fixed-quantity ordering is predictable and pairs well with suppliers who give price breaks at set case sizes, but it ignores demand swings. Periodic review is easy to schedule but can let a fast seller run dry between review dates. Min/max sits in the middle: an event-based trigger like reorder point, plus a variable top-up like par level. That blend is why it holds up across mixed catalogs.
Where a single min/max breaks down
Two things quietly wreck a min/max system that started out fine.
- Products are not the same. A fast mover and a slow mover cannot share one min and max. Set them per SKU or you overstock one and stock out the other.
- Locations are not the same. If you hold stock in more than one warehouse, each site has its own usage and its own lead time. Each one needs its own min and max.
This is where spreadsheets fall apart. Two numbers per product is trivial for 10 SKUs in one room. It is a nightmare for 500 SKUs across three locations that all restock at different speeds and sell at different rates.
Set it up in five steps
- Pull real usage per SKU. Use actual sales history, not a gut estimate. A rolling 30 to 90 day average smooths out the noise.
- Get honest lead times per supplier. Ask for the worst case, not the brochure number.
- Calculate the minimum for each product and location using the reorder-point formula above.
- Calculate the maximum by adding your chosen review cycle on top.
- Automate the check so the system flags what to reorder the moment stock crosses a min, instead of you eyeballing a report.
Then revisit the numbers quarterly, or ahead of any season where demand shifts.
Where Inventoros fits
Once you are past a handful of SKUs, you should not be running min/max by hand. Inventoros stores a min and max per product per location, watches stock as it moves, and flags what to reorder before you hit zero. It is open source and self-hosted, so you own the data and can wire the reorder logic into your own tools through the REST and GraphQL API. Getting it running is covered in the documentation, with install paths for cPanel, a VPS, and Docker.
FAQ
What is the difference between min/max and reorder point? A reorder point is only the trigger, the "when." A min/max inventory system uses that same trigger as its minimum, then adds a maximum so it also answers the "how much." Reorder point plus a ceiling equals min/max.
How do I calculate the maximum stock level? Take your average daily usage and multiply it by your review period plus your lead time, then add safety stock. The review period is how long you want one order to last. Longer cycles raise the max and mean fewer orders; shorter cycles lower it and keep less cash tied up.
Should min and max be the same for every product? No. Each SKU has its own sales rate and each supplier its own lead time, so the numbers should differ per product and per location. Blanket levels are the fastest way to overstock your slow movers and run out of your best sellers.
How often should I review my min/max levels? For most catalogs, a quarterly review is enough. Recalculate sooner if usage or lead times shift noticeably, and always tune seasonal items before the season starts rather than reacting once it is underway.