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
Guide: MRO procurement

The MRO Procurement Process on a Mine Site Ten steps, and where money leaks.

MRO procurement is how a site buys maintenance, repair and operations items: spares, consumables, tools and services. The process runs in ten steps, from need and requisition through sourcing, approval, purchase order, receipt, three way match, payment and review. Most leakage happens at two points: buying off contract and never checking the PO price against the contract rate.

By , Perth · Updated
Fitter at a mine workshop bench with new and worn parts
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 does MRO mean in mining procurement?

MRO stands for maintenance, repair and operations. It covers everything a site buys to keep plant and people running that is not a raw input to the product or a capital project.

On a mine that means spare parts for fixed and mobile plant, wear parts, filters, hoses, bearings, lubricants, PPE, tools, and the service contracts that go with them. MRO is usually a huge number of low value lines, a smaller number of expensive critical spares, and a long tail of one-off buys.

TermWhat it means
Stocked itemHeld in the warehouse with a min and max. Replenished automatically when stock drops to the min.
Direct charge (non stock)Bought for a specific work order and charged straight to it. Never sits on the shelf as inventory.
Purchase requisition (PR)The internal request to buy. Not a commitment to the supplier.
Purchase order (PO)The commitment to the supplier. Price, quantity, part, delivery and terms.
Contract rateThe price agreed in a supply agreement or panel for a given part and supplier.
Three way matchChecking the invoice against the PO and the goods receipt before paying.

The reason MRO gets its own process is volume. A site can raise thousands of PO lines a month, so the process has to work without a person reading every one.

What are the steps in the MRO procurement process?

There are ten steps. The first five decide whether you buy the right thing at the right price. The last five decide whether you pay for what you actually got.

  1. Identify the need. Either a maintenance work order calls for a part, or a stocked item drops to its min (reorder point) and the ERP raises a requirement.
  2. Raise the requisition. Use the catalogue part number, not a free text description. Free text is where duplicates and off contract buying start.
  3. Check stock first. Is it on the shelf here, at another site, or in a rotable pool? A transfer is cheaper than a new buy.
  4. Source it. If a contract or panel covers the item, the PO goes to that supplier at that rate. If not, request quotes (usually one to three, depending on value).
  5. Approve. Approval follows the delegation of authority by dollar value. Splitting a buy into smaller POs to dodge an approval level is a red flag.
  6. Raise the PO. The price on the PO should be the contract rate or the accepted quote. This is the step most sites never check.
  7. Expedite. Chase overdue lines, especially anything holding up a work order or a critical spare.
  8. Receive and inspect. Receipt the quantity that actually arrived, not the quantity ordered. Inspect against the part number.
  9. Match and pay. Three way match the invoice to the PO and the receipt. Hold anything outside tolerance.
  10. Review. Monthly, look at price variance against contract, off contract spend, stock levels against real usage, and lead times by supplier.

Where does money leak in MRO procurement?

Money leaks where nobody checks. The three way match at step 9 catches an invoice that does not match the PO. It does not catch a PO that was raised above the contract rate in the first place.

The common leak points are:

  • PO price above contract rate. The rate in the ERP is out of date, the buyer used the last price paid, or the supplier quoted list price and nobody compared it.
  • Off contract buying. A contract exists for the item but the PO went to another supplier, often because the part was described in free text and nobody matched it. See our guide on maverick spend and three way matching.
  • Emergency orders as the default. When stock levels are wrong, everything becomes urgent, and urgent buys skip sourcing.
  • Rebuying stock another site already holds. The same part under a different number at the next site over.
  • Stock levels that never move. A min and max set years ago keeps reordering parts nobody uses. That cash sits on the shelf.

How do you check PO prices against contract rates? A worked example

You join every PO line to the contract rate for the same part and supplier, then multiply the price difference by the quantity. Here is a worked example with made up numbers for one week of PO lines at one site.

ItemQtyPO priceContract rateDifferenceOverpaid
Filter element40$86.50$78.20$8.30$332.00
Wear liner6$1,240.00$1,240.00$0.00$0.00
Hydraulic hose assembly15$212.00$198.50$13.50$202.50
Bearing8$455.00$461.00minus $6.00$0.00 (below rate)
Gloves, box of 1230$62.00No contractn/aReview

Overpaid on these five lines: $332.00 + $202.50 = $534.50. The bearing came in $48.00 under the contract rate (8 x $6.00), which is worth knowing too, because it can mean the contract rate is stale. The gloves have no contract, so they go on the list of items to put on a panel.

The formula for each line is simple:

Overpaid = MAX(0, PO price − contract rate) x quantity

The hard part is not the maths. It is matching each PO line to the right contract rate when part numbers, supplier names and units of measure do not line up.

How do you do this check in Excel or your ERP?

You can run a first pass in Excel in an afternoon if you can get two exports: PO lines and contract rates.

  1. Export PO lines for the last 12 months: PO number, line, date, supplier, part number, description, quantity, unit of measure, unit price, status.
  2. Drop anything that is not real spend. Quotes, cancelled lines and unapproved orders should not be counted. An international tier 1 mining operator we worked with had exactly this problem: quotes and unapproved orders were being counted as spend, and one rule fixed a whole class of wrong numbers.
  3. Export contract rates: supplier, part number, rate, unit of measure, valid from, valid to.
  4. Build a key in both tables: supplier plus part number, for example =[@Supplier]&"|"&[@PartNo].
  5. Look up the rate with =XLOOKUP([@Key], Rates[Key], Rates[Rate], "No contract"). Check the PO date falls inside the rate's valid dates.
  6. Calculate overpaid per line with =IF(ISNUMBER([@Rate]), MAX(0, [@Price]-[@Rate])*[@Qty], 0).
  7. Pivot by supplier and category and sort by overpaid, largest first.

Expect this to work for maybe the cleanest part of your data. Units of measure (each versus box of 10), superseded part numbers and supplier name variations will break a lot of the lookups. That is normal, and it is the reason most sites run this check once and never again.

What are the most common MRO procurement mistakes?

The biggest mistake is treating the three way match as proof you paid the right price. It only proves you paid what the PO said.

  • Free text requisitions. They bypass the catalogue, the contract and the stock check in one go.
  • Contract rates not loaded or expired in the ERP. The contract exists on paper but the system never sees it.
  • Escalation clauses applied by the supplier, not checked by you. Rises should match the contract formula and timing.
  • Receipting the ordered quantity by default. If 48 arrive and 50 are receipted, the match passes and you pay for two parts you never got.
  • Counting quotes or unapproved orders as spend. It inflates every spend report and hides the real picture.
  • Measuring compliance by supplier, not by item. Buying from a contracted supplier at list price still counts as on contract in most reports.
  • Never revisiting stock levels. Old min and max settings drive a lot of unnecessary orders. Our guide on how to set min max levels covers the fix.

How does Source Digital automate MRO procurement checks?

We build the checks inside your own environment (your Azure, Databricks or Snowflake), with read only access to your ERP data. Every number links back to the PO line, receipt or contract it came from. A person approves every action. The AI never decides.

  • PO vs contract checker. Every PO line is compared to the contract rate before it is paid, including units of measure, validity dates and superseded parts. See PO and contract rate checking.
  • Contract price book. Built from your own contract history, so each price is judged against what was agreed and what was last paid. See the contract price book case study.
  • Stock level engine. Sets min and max from real usage. At an international tier 1 mining operator it matched the site inventory expert's own spreadsheet 99.8% of the time.
  • An assistant in Microsoft Teams. Ask "what did we pay for this part last quarter and what is the contract rate?" and get an answer from millions of rows in about a minute. See the Teams commercial agent.

The maths is deterministic. The AI explains the results; it does not make up the numbers.

The first step is a free 15 minute call with Tristan, or send a quick enquiry if you would rather write. 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. An engagement runs like this:

  1. A free 15 minute call. What you run, and what is costing you.
  2. A look at a sample export of your data, only if it is useful. Read only.
  3. A clear scope and price, based on the days the work needs.
  4. The build inside your systems.
  5. Run, check and support.

See AI for mining supply chains for more.

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

MRO procurement is the buying of maintenance, repair and operations items: spare parts, wear parts, consumables, PPE, tools and related services. It excludes raw materials and capital projects. On a mine site it is high volume and low value per line, with a small number of expensive critical spares, so the process has to control price and compliance without a person checking every single line.

A purchase requisition is an internal request to buy something. It commits nothing to a supplier. A purchase order is the formal commitment to the supplier, stating the part, quantity, price, delivery and terms. Once a supplier accepts a PO it is a contract, which is why the PO price is the point where checking against the agreed contract rate matters most.

Only partly. A three way match checks that the invoice agrees with the purchase order and the goods receipt. If the PO was raised above the contract rate, the invoice will match the PO and pass. To stop overpaying you also need to check each PO price against the contract rate, which most ERP setups do not do automatically.

It depends on the site's procurement policy and the value of the purchase. Items covered by a contract or panel should go to the contracted supplier at the agreed rate with no quotes needed. Uncontracted items usually need one to three quotes, with the number rising with value. Your delegation of authority and procurement policy set the exact thresholds.

The usual causes are free text requisitions that never get matched to a catalogue part, contract rates that are missing or expired in the ERP, urgent orders that skip sourcing, and buyers who do not know a contract covers the item. Measuring by item rather than by supplier name shows where it really happens, because contracted suppliers can still charge off contract prices.

Export 12 months of PO lines and contract rates, remove quotes, cancelled and unapproved lines, then match each PO line to the contract rate for the same supplier, part number and date. Overpaid per line equals the price above the contract rate times quantity. Report the share of spend on contract at rate, above rate, and off contract.

Book a free 15 minute call with Tristan or send a quick enquiry. There is 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. If it is, he sets out a clear scope and price for a build inside your own systems, based on his consulting day rate and the days the work needs.

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.