The reorder point model.
Reorder point (ROP) is a single threshold per SKU. When on-hand drops to or below the ROP, you place an order for a fixed quantity called the economic order quantity (EOQ). The triggers are independent: ROP determines when to order, EOQ determines how much. Neither cares about how much stock you currently hold above the ROP.
Formula: ROP = (average daily demand × lead time in days) + safety stock. If you sell 10 units a day and your supplier takes 7 days, ROP = 70 + safety stock. EOQ is a separate calculation balancing ordering cost against carrying cost — for most growing businesses, EOQ is set pragmatically by carton size, MOQ from supplier, or shelf capacity, not by formula.
The min-max model.
Min-max defines two thresholds: a minimum (when to order) and a maximum (target stock level). When on-hand drops to min, you order enough to bring it back up to max. The order quantity therefore varies depending on actual on-hand at the moment of triggering — order quantity = max - current on-hand.
Formula: min = ROP (same as above). Max = min + EOQ-equivalent quantity, roughly equal to one or two replenishment cycles of demand. So if min is 70 and you order in 30-day cycles at 10 units a day, max might be 70 + 300 = 370. The order on triggering is whatever brings you back to 370.
- ROP + EOQ: fixed quantity each order, simpler for suppliers and warehousing
- Min-max: variable quantity each order, hits target stock more precisely
- Both use the same ROP/min math; difference is what they do at the trigger
Which policy fits which situation.
Use ROP + EOQ when: supplier requires fixed carton or pallet quantities, demand is reasonably stable, ordering cost is high (so you want to amortise it across a larger fixed order), or warehousing prefers consistent receiving sizes. This is the policy for most FMCG distributors and hardware wholesalers.
Use min-max when: demand variability is high so you cannot rely on a fixed quantity to last a fixed time, you want to maintain a tighter target stock, ordering cost is low (electronic ordering with a regular supplier), or you have storage limits that hard-cap how much you can hold at any time. This is common in fashion retail and pharmacy.
A worked example: hardware distributor.
A hardware distributor in Birmingham stocks an electric drill. Average daily demand is 8 units. Supplier lead time is 10 days. Demand standard deviation is 3 units/day. Service level target is 95% (z = 1.65). Safety stock = z × σ × √lead time = 1.65 × 3 × √10 = 15.6, round to 16. ROP = 8 × 10 + 16 = 96 units.
Under ROP + EOQ, EOQ is set at 200 units (a half-pallet from the supplier). Every time on-hand hits 96, you order 200. Stock cycles between 96 and roughly 296 (96 + 200 if the order arrives the day on-hand hits ROP). Under min-max, min is 96, max is set at 280. When on-hand hits 96, you order 280 - current. If current is exactly 96, you order 184. If a big sale dropped on-hand to 70 before you noticed, you order 210. Different ordering pattern, same baseline.
How safety stock changes everything.
Safety stock is the buffer for demand and lead time variability. Set it too low and you stock out during a normal demand spike. Set it too high and you carry working capital you do not need. The right level is a function of demand variability, lead time variability, and your service level target.
A 95% service level is standard for most businesses. Hit 99% and you double the safety stock for the last 4% of service. Drop to 90% and you cut safety stock 30% but stock out roughly twice as often. The right number depends on the cost of a stockout — a critical pharma item might justify 99%, a fashion item 90%.
Common mistakes with both policies.
Mistake 1: setting ROP from gut feel. "Order when we have a week of stock left" is not safety stock; it is hope. Use the formula even if your demand data is rough — a wrong number from a formula is usually closer than a guess.
Mistake 2: never updating ROP. Demand changes seasonally and over time. ROP should be reviewed quarterly minimum. A SKU that ramped from 5/day to 12/day still on its old ROP of 50 will stock out repeatedly. Mistake 3: treating ROP as the place to order to. ROP is when to order, not how much to order. The order quantity comes from EOQ (in ROP+EOQ) or from max-current (in min-max).
How nonari runs replenishment.
Nonari supports both policies per SKU per branch. Each BranchInventory record has a min, max, and an optional reorder quantity. If reorder quantity is set, the system uses ROP + fixed quantity. If reorder quantity is blank, it falls back to min-max and orders to max.
Nonari recalculates suggested ROP and safety stock weekly based on rolling demand, prompts you to review when the suggestion diverges meaningfully from the current setting, and produces a daily reorder list per branch by supplier. The buyer reviews and one-clicks to PO. The setup is once; the operation is fast.