AI Solutions Locations All Services Website Design Perth Landing Page Design SEO Perth Google Ads Perth Facebook Ads Perth Content & Video Shopify Perth AI Services Case Studies Free Strategy Call
Stock levels guide

How to Set Min/Max Levels and Reorder Points The reorder point formula, worked.

Min is the reorder point: average monthly net usage × lead time, plus safety stock. Max is min plus the order quantity. Example: a scraper blade using 12 a month net of returns, on a 2 month lead time, gets min 35 and max 66. Insurance spares are set on risk, usually min 1, max 1.

By , Perth · Updated
Warehouse bin of bearings with a handheld scanner
Built inside your systems
Built inside a tier 1 mining operator
99.8% match to the site expert
Your data stays in your systems
Free 15 minute call

What is the reorder point formula?

Reorder point = average usage per period × lead time in the same periods + safety stock. In most ERPs the reorder point is the min. When stock position falls to or below min, you order enough to bring it back up to max.

TermFormula
Lead time demandd × L
Safety stockZ × √(L × σd² + d² × σL²). See safety stock calculation
Min (reorder point)d × L + safety stock
Order quantityEconomic order quantity, rounded to pack size and minimum order. See economic order quantity
MaxMin + order quantity
Stock positionOn hand + on order − reserved for work orders
Quantity to orderMax − stock position, when stock position is at or below min

d is average net usage per period, L is lead time, σd and σL are their standard deviations and Z is set by the service level (1.645 for 95%).

How do you set min and max for one stock line, step by step?

Work out net usage, real lead time and safety stock, then add the order quantity on top. Here is a full example with made-up numbers for a conveyor belt scraper blade, unit cost $145.

  1. Get 12 months of usage, net of returns. Gross issues were 180 and returns were 36, so net usage is 144 a year. Monthly net usage: 13, 12, 14, 12, 10, 14, 11, 12, 15, 11, 9, 11.
  2. Average and spread. d = 144 ÷ 12 = 12 a month. σd = 1.76 a month, so σd² = 3.09.
  3. Real lead time from PO history. PO date to receipt date averages 2.0 months, with a standard deviation of 0.5 months.
  4. Lead time demand. 12 × 2.0 = 24 units.
  5. Safety stock at 95%. 2.0 × 3.09 = 6.18. 12² × 0.5² = 144 × 0.25 = 36. √(6.18 + 36) = √42.18 = 6.49. 1.645 × 6.49 = 10.68, round up to 11.
  6. Min. 24 + 11 = 35.
  7. Order quantity. EOQ with order cost $120 and holding rate 25% (H = $36.25): √(2 × 144 × 120 ÷ 36.25) = √953.4 = 30.9, so 31.
  8. Max. 35 + 31 = 66.
  9. Check against the current setting and get the stores lead and maintenance planner to agree it before loading.

In use: if on hand is 30, nothing is on order and 4 are reserved for a work order, stock position is 30 + 0 − 4 = 26. That is at or below 35, so order 66 − 26 = 40.

Why should you net returns off usage before setting min max?

Because returned parts were never consumed. Counting them as usage pushes min and max up on every line where maintenance draws parts and brings some back.

Same scraper blade, calculated on gross issues instead of net:

Input or resultNet of returnsGross issues
Annual usage144180
Average a month1215
Standard deviation a month1.762.26
Safety stock1114
Min3544
Order quantity3135
Max6679

That is 13 extra units at max, or $1,885 on one low value line. Repeat it across every line with regular returns and the store is carrying stock for usage that never happened.

It also affects trust. On an international tier 1 mining operator's stock level work, one rule change (netting returns off usage) took agreement on disputed items from 73% to 98.4%. Most of the arguments about "the system's numbers are wrong" were really about returns.

How do you set min max for lumpy, critical and rotable spares?

The standard formula only suits steady usage. Class every line first, then use the method that fits the class.

Line typeMethodExample result
Steady consumable or wear partReorder point formula plus EOQScraper blade above: min 35, max 66
Lumpy (rare issues, several at once)Model issue events and issue sizes separately, then set order quantity to at least the largest single issuePump part, 6 issues in 24 months of 1 to 4 units, 6 month lead time: min 10, max 14
Critical or insurance spareRisk decision by maintenance, reviewed yearlyMin 1, max 1
Rotable (repaired and reused)Pool size covering failures during one repair turnaround0.5 failures a month, 3 month repair turnaround: 1.5 units out on average, 4 units in the pool for about 98% cover
Planned shutdown onlyNo min. Buy against the shutdown work orderMin 0, max 0

The lumpy example comes from the safety stock guide, where four methods give reorder points from 5 to 10 for the same part. The rotable pool uses a Poisson model: with 1.5 failures expected per repair turnaround, 3 units cover about 93% of outcomes and 4 cover about 98%. More in critical and rotable spares.

What mistakes do mining sites make with min max levels?

The common ones are bad inputs and settings nobody has touched for years.

  1. Counting transfers as usage. If a central warehouse issued 60 units, but 20 were transfers to a satellite store, its usage is 40. Count usage where the part goes to a job.
  2. Ignoring the review period. If the reorder check only runs monthly, stock has to last lead time plus review period. For the scraper blade, protecting 3 months instead of 2 takes min from 35 to 48.
  3. Comparing on hand, not stock position. Ignoring stock on order causes double ordering. Ignoring reserved stock causes stockouts on the next job.
  4. Using the quoted lead time. Use PO date to receipt date from your own history, including freight and receipting at site.
  5. Stale settings. Levels set for a fleet or a production rate that has since changed. Re-run at least every quarter.
  6. Insurance spares on the formula. Zero usage gives a min of zero, and the spare is not reordered after it is used.
  7. Units of measure. Min set in each, order placed in boxes.
  8. Blanket changes. "Cut every max by 20%" removes stock from lines that were already short. Change line by line.

How do you calculate min max in Excel and load it into your ERP?

Calculate levels for every line in one sheet, compare them to current ERP settings, review the biggest changes with the people who run the store, then load them back.

  1. Build net monthly usage per stock code (issues minus returns, transfers excluded) in columns B to M.
  2. Add lead time and its standard deviation from PO history, and safety stock, as in the safety stock guide. Say d is in N, L in P and safety stock in S.
  3. Min in T2: =ROUNDUP(N2*P2+S2, 0).
  4. Order quantity in U2: =MAX(minimum order, CEILING.MATH(EOQ, pack size), 1) using your EOQ column.
  5. Max in V2: =T2+U2.
  6. Bring in current ERP min in W and max in X. Value of change in Y2: =(V2-X2)*unit cost.
  7. Override with the class rules: insurance lines to 1 and 1, shutdown lines to 0 and 0, rotables to pool size.
  8. Sort by the size of the change and review the top lines with the stores lead and maintenance planners.
  9. Load approved changes. Most ERPs hold a reorder point plus either a maximum stock level or a fixed reorder quantity. If yours uses reorder quantity, load the order quantity, not the max.

How does Source Digital automate min max levels for mining spares?

Source Digital builds a stock level engine inside your own data platform. It calculates min, max and order quantity for every line on rules agreed with your stores team, re-runs monthly, and gives a person a change list to approve. The AI never changes a level on its own.

  • Matches your experts: at an international tier 1 mining operator, the engine matched the site inventory expert's own spreadsheet 99.8% of the time. See the min max inventory engine case study.
  • Rules your stores team agrees with: returns netted, transfers excluded, lines classed before any formula is applied.
  • Every number links back to the usage, return and PO lines it came from.
  • Read-only and in your environment: it runs in your Azure, Databricks or Snowflake and reads your ERP data without changing it.
  • Questions in Teams: ask "why did the max on this line drop?" and get the answer with its source lines.

Getting started is a free 15 minute call with Tristan, or a quick enquiry. No obligation and no pitch. He asks what you run and what is costing you, then tells you straight whether there is something worth fixing. Work is charged at a consulting day rate. The price depends on your sites, systems and data, so you talk first, then Tristan sets out what he would build, how many days it takes and what it costs. See how the stock level engine works on the mining spares optimisation page.

Data safety

Built inside your environment, not ours

Your data never leaves your systems. We build inside the platform you already run, with the security, logins and audit trail your IT team already controls.

Runs in your own platform

Azure, Databricks, Snowflake or your own SQL server. Your security rules, your logins, your audit trail.

Read-only on your source data

We read from Pronto, SAP, Ellipse or your data warehouse. Nothing writes back into your ERP without approval.

Every number shows its working

Each figure links to the stock record, PO line or contract clause it came from, so anyone can check it in seconds.

A person approves every change

The maths is deterministic and the AI only explains it. Your team decides, and every decision is logged.

Our work

Built and running
in real operations

AI systems running right now inside an international tier 1 mining operator and Perth mining suppliers. Swipe or use the arrows.

Mining, Canada/Africa
Stock levels

A min/max engine matched to the site's own expert

Recommends minimum and maximum stock levels across tens of thousands of items, proven against the inventory expert's own spreadsheet.

99.8%
match to the expert
Read the case study
Mining, Canada/Africa
AI agent

A commercial assistant that answers in Teams

Procurement and commercial staff ask in Microsoft Teams and get verified answers from millions of purchasing, receipt and stock rows.

~1 min
to a verified answer
Read the case study
Mining, Canada/Africa
Price book

A price book built from the client's own contracts

Benchmark rates for services and equipment hire, so quotes are judged against what was agreed and what was last paid.

Every rate
cites its contract
Read the case study
Mining, Canada/Africa
Tender scoring

A tender scorer that cites its evidence

Deterministic pricing plus AI scoring with page referenced evidence, calibrated against a real evaluation panel.

Panel
matched on a live bid
Read the case study
Mining, Canada/Africa
Parts matching

Cross-site parts matching that refuses to guess

Matches the same part across two sites' catalogues using evidence tiers, so stock can be shared instead of re-bought.

2 sites
one view of stock
Read the case study
Mining, Canada/Africa
Data quality

The AI project that audited the data first

Verifying every column surfaced data problems the client didn't know it had, before they could reach an answer.

Every
column verified
Read the case study
Mining, Canada/Africa
Method

Every mistake becomes a permanent test

Users catch it, we trace it, the rule lands and the case is frozen. The method behind every build above.

511
automated checks
Read the case study
Mining, Canada/Africa
Automation

Report delivery with no files carried by hand

Engine outputs delivered from the data platform into SharePoint and announced in Teams, with a return leg for reviewer edits.

0
files carried by hand
Read the case study
Get started

A 15 minute call.
No pitch.

Talk it through with me directly. Here is how it works.

  1. Tell me what you run. Your sites, your systems and what is costing you time or money right now.
  2. I tell you straight. Whether there is something worth fixing, how I would build it and roughly what it would cost.
  3. Scope and price. If it's worth doing, I set out what I'd build, how many days it takes and what it costs at my consulting day rate. If it isn't, I'll say so.
Tristan Sunde
Tristan Sunde
Founder, Source Digital, Perth
0452 246 854 · sales@source-digital.com.au

Send a quick enquiry

Takes 20 seconds. I reply personally, usually the same day.

Your details go to Tristan only. No mailing lists.

FAQ

Common questions

Reorder point equals average usage per period multiplied by lead time in the same periods, plus safety stock. For a part using 12 a month on a 2 month lead time with 11 units of safety stock, the reorder point is 12 × 2 + 11 = 35. In most ERPs the reorder point is the min level.

Max equals min plus the order quantity. The order quantity is usually the economic order quantity, rounded up to the pack size or minimum order. In a worked example, a min of 35 plus an order quantity of 31 gives a max of 66. When stock position drops to min, order enough to get back to max.

On hand is what is physically on the shelf. Stock position is on hand plus stock already on order, minus stock reserved for work orders. Compare stock position to min, not on hand. Using on hand causes double orders when stock is already on the way, and stockouts when reserved parts are taken by the next job.

Set them by a risk decision, usually min 1 and max 1, and keep them out of the automatic formula. With no usage history, the formula gives a min of zero, so after the spare is used it never gets reordered. Maintenance should own the decision, with a yearly review of whether each one is still needed.

Re-run the calculation at least quarterly, and monthly if usage or lead times move a lot. Levels set for an old fleet or production rate drift out of line quietly. Review the biggest changes by value with the stores lead and maintenance planners, and change levels line by line rather than with blanket cuts.

Returns that are counted as usage inflate average usage and its variation, which raises safety stock, min, order quantity and max. In a worked example, using gross issues instead of net took the max from 66 to 79. At an international tier 1 mining operator, netting returns took agreement on disputed items from 73% to 98.4%.

Source Digital builds a stock level engine inside the client's own data platform with read-only access. It classes each line, applies agreed rules for returns and transfers, calculates min and max, and produces a change list a person approves. It matched an international tier 1 mining operator's inventory expert 99.8% of the time.

Tristan Sunde, founder of Source Digital
Written by Tristan Sunde
Founder and lead developer, Source Digital, Perth WA

Tristan builds AI and data tools for mining supply chains, including a stock level engine, purchase order checks, a contract price book and a commercial assistant in Microsoft Teams for an international tier 1 mining operator. Every page on this site is written from work he has built and tested. More about Tristan.

Find the cash sitting
in your stores.

A 15 minute call. No pitch deck. If there's nothing worth fixing, I'll tell you.