The reorder point formula, explained with real store numbers
A plain-English walkthrough of reorder points, safety stock, and lead time — with worked examples for a Shopify store.
A reorder point is the stock level that tells you it's time to place a purchase order: reorder point = (average daily units sold × supplier lead time in days) + safety stock. Hit that number on hand, and an order placed today arrives roughly when you hit zero. Get it wrong in either direction and you either sell out mid-lead-time or tie up cash in stock you didn't need.
That formula sounds simple. It is. What's hard is feeding it honest numbers — and most Shopify stores don't, which is why their calculated reorder points keep failing even after they adopt one. This article gives you the formula, a fully worked example with every arithmetic step shown, a copy-paste spreadsheet row you can use as a calculator, and an honest section on why the calculation breaks in real stores.
The standard reorder point formula
Reorder point = (average daily units sold × lead time in days) + safety stock
Each piece:
- Average daily units sold — how many units of this SKU you sell per day, on average. Per SKU, not per store. A blended store-wide average is useless for buying decisions.
- Lead time in days — how long it actually takes from placing a PO to the units being sellable. Not the supplier's quoted number; the real one. (See supplier lead time for why those two differ.)
- Safety stock — a buffer in units that absorbs demand spikes and late deliveries. If your lead time and demand were perfectly predictable, this would be zero. They aren't.
The first term covers demand during the wait. The second term covers the surprises. If you skip safety stock entirely, your reorder point assumes the future will be exactly average — and any decent week of sales or one late container puts you out of stock.
The calculator, step by step
Here's the worked example we'll use throughout: a ceramic mug, SKU MUG-GRN-12, selling 6.2 units per day, from a supplier with a real 45-day lead time, carrying 7 days of safety stock.
Step 1 — Lead-time demand. Daily velocity × lead time:
6.2 × 45 = 279 units
That's what you'll sell between placing an order and receiving it.
Step 2 — Safety stock in units. 7 days of coverage at the same velocity:
6.2 × 7 = 43.4 → round to 44 units
(For a proper way to size this buffer — beyond "gut feel days" — see safety stock, which includes the standard-deviation formula.)
Step 3 — Add them.
279 + 44 = 323 units
Reorder point: 323 units on hand. The day MUG-GRN-12 drops to 322 sellable units, you place the PO. If you wait until "it looks low," you're betting the delivery beats the countdown — with a 45-day supplier, that bet loses regularly.
A daily-velocity variant (when you don't have variability data)
The standard formula wants a safety-stock figure in units, which implies you've done buffer math. If you haven't, there's a cruder variant that expresses everything in days:
Reorder point = daily velocity × (lead time days + buffer days)
Same example, buffer of 7 days:
6.2 × (45 + 7) = 6.2 × 52 = 322.4 → 322 units
One unit off from the standard formula's 323 — that's just rounding the buffer (43.4 vs 44), not a different answer. The variant is a shortcut, not a different theory. Use it when you want a defensible reorder point in five minutes across hundreds of SKUs; move to the standard-deviation safety stock formula when a SKU's demand swings wildly or its stockout cost is high. The shortcut's weakness: it treats a flat-selling staple and a spiky viral product identically, and for the spiky one, 7 buffer days can still be too thin.
Copy-paste spreadsheet formula
Set up one row per SKU:
| Cell | Column | Example value |
|---|---|---|
| B2 | Daily velocity (units/day) | 6.2 |
| C2 | Real lead time (days) | 45 |
| D2 | Safety stock (units) | 44 |
Reorder point formula for row 2:
=ROUND(B2*C2 + D2, 0)
Or, if you'd rather express the buffer in days (E2 = buffer days):
=ROUND(B2*(C2+E2), 0)
And if you keep a daily-demand standard deviation per SKU (F2), the statistically grounded version:
=ROUND(B2*C2 + 1.65*F2*SQRT(C2), 0)
where 1.65 targets a ~95% service level — i.e., you accept a stockout in roughly 1 of every 20 replenishment cycles. Raise it to 2.05 for ~98%, or drop it for cheap, easily substituted products.
Two practical rules for the spreadsheet: compute velocity from in-stock days only (more on that below), and round the final answer up to a whole case pack, because you don't order 323 mugs, you order 324 or 336.
Where each number lives in the Shopify admin
| Calculator input | Where to find it in Shopify |
|---|---|
| Units sold (velocity) | Admin → Analytics → Reports → Sales by product, filtered to your lookback window (90 days is a sane default); or the product page's Analytics view for per-SKU units over time. Both are documented in the Shopify Help Center (accessed Oct 2026). |
| Days you were actually in stock | Not natively summarized. Shopify's native reports don't include a stockout-day count per SKU (verified against the developer changelog through Oct 2026 — no such report shipped). You can reconstruct it from inventory history exports, or track it separately. |
| Real lead time | Your own PO records: order date → date units were sellable. Shopify's native purchase orders (Help Center, accessed Oct 2026) give you the timestamps; the PO Read API added on Sep 17, 2026 exposes them to apps (shopify.dev changelog). |
| Safety stock | Calculated, not stored anywhere native — see safety stock for formulas and where to park the result. |
| Daily demand std dev (optional) | Export daily units per SKU to a spreadsheet and use =STDEV.S(range) over in-stock days. |
Why your calculated reorder point keeps failing
The formula is arithmetic. The inputs are politics. Two failure modes account for almost every broken reorder point we've seen.
Failure 1: your demand data is poisoned by stockout days
Say MUG-GRN-12 was out of stock for 8 of the last 30 days. Shopify reports 155 units sold that month, and a naive velocity calc divides by 30: 155 ÷ 30 = 5.2 units/day. But the mug wasn't slowly selling — it was dark for 8 days. The honest denominator is the 22 days it was actually available: 155 ÷ 22 = 7.05 units/day.
Feed 5.2 into the formula and you get (5.2 × 45) + 44 = 278 instead of the correct ≈361 (7.05 × 45 = 317.25, plus 44). A ~23% undershoot, right at the moment when the SKU has already proven it can sell out. Worse, the stockout days drag the average down most exactly when demand was highest — stockouts cluster around peaks. This is the censored-demand problem: your sales history is missing its most informative days. We've written a full treatment of the correction in why sales velocity numbers lie during stockouts; the short version is to always divide by available days, never calendar days.
Failure 2: you used the quoted lead time
Suppliers quote 30 days. They deliver in 38 on average, and roughly one order in five takes 45+. A reorder point built on 30 lands you short by (38 − 30) × 6.2 ≈ 50 units on an average cycle, and ~93 units on a bad one. The fix isn't a bigger buffer bolted onto a fantasy number — it's measuring your real order-to-received times and plugging those in. The measurement method is in the supplier lead time guide.
The compounding effect
Each failure silently shrinks the reorder point, which delays the PO, which causes stockouts, which further poisons the velocity data the next calculation uses. That's why stores feel like they're "always chasing" inventory: the errors are self-reinforcing. Break the loop at both inputs — honest velocity, honest lead time — and the same simple formula starts working.
How to run this across a whole catalog without hating your life
One SKU in a spreadsheet is a five-minute job. Three hundred SKUs, each with its own velocity, lead-time reality, and variability, is where merchants typically give up and revert to gut feel. If you're at that stage: the spreadsheet above scales fine if you keep the inputs disciplined, and it's the same math a tool would do. Once the list exists, the last mile is mechanical — turning approved lines into purchase orders in Shopify natively, or with a tool that drafts them for you.
This is the one place we'll mention what we build: InventoryX's weekly Buying List computes the reorder point per SKU from in-stock-only velocity and your per-supplier lead times, and turns anything past its point into a line on a Monday list. But the formula in this article is all it does under the hood — you lose nothing by running it yourself, and you'll understand your own numbers better.
Frequently asked, answered straight
How often should you recalculate? Quarterly for stable SKUs, monthly for your fastest movers, and immediately after any supplier change — a new factory, route, or freight forwarder resets your lead-time history. A reorder point set in January and trusted in October is a stale input wearing a confident number.
Per product or per variant? Per variant whenever variants sell differently — sizes, colors, and flavors routinely diverge in demand within one product. A product-level reorder point sized on the blended average means your medium is dark for a week while your XXL pile grows. Only roll up to product level when variant demand is genuinely uniform.
What about SKUs with seasonal demand? A 90-day lookback in September quietly bakes summer's slowdown into your holiday reorder points. For seasonal SKUs, either widen the window to capture the same season last year (scaled to your growth) or recompute velocity from the most recent comparable period. The deeper version of this problem — ordering Q4 stock off Q3 averages — is covered in the BFCM planning guide.
Is the reorder point the same as the order quantity? No, and confusing them is common. The reorder point decides when to order; the order-up-to calculation decides how much. They share inputs (velocity, lead time, safety stock) but answer different questions — the quantity math adds your target cover on top, which is why a 323-unit trigger and a 328-unit order can coexist. The quantity side is worked through in how much inventory to order.
Next step
Take your five highest-velocity SKUs and compute their reorder points tonight — those five cause most of your stockout pain. For each, check two things before trusting the output: was the velocity divided by in-stock days, and is the lead time the real average rather than the quote? Then, to sanity-check the answer from a different angle, look at each SKU's days of cover: if a SKU's cover is already below its lead time, don't wait for the formula — order now.