Why doesn't three way match catch contract overpricing?
Three way match checks that the PO, the goods receipt and the invoice agree with each other. If the PO price was wrong to start with, all three agree on the wrong price and the invoice is paid.
| Question | Three way match | PO vs contract check |
|---|---|---|
| Did we receive what we ordered? | Yes | Not its job |
| Does the invoice match the PO? | Yes | Not its job |
| Is the PO price the agreed contract rate? | No | Yes |
| Was the rate still in date when the PO was raised? | No | Yes |
| Is the unit of measure the same as the contract? | No | Yes |
The two work together. More on the gap in the guide to maverick spend and three way match.
How does the PO vs contract checker work, step by step?
It builds one price book from your contracts, then checks every PO line against it with fixed rules. A person decides what to do with each flag.
- Build the price book. Every contract rate is loaded with supplier, item, unit of measure and effective from and to dates. See the contract price book.
- Define spend properly. Only approved PO lines count. Quotes and unapproved orders are excluded.
- Match each PO line. Each line is matched to the contract rate in force on the day the PO was raised.
- Calculate the variance. PO price minus contract rate, times quantity, in dollars and as a percentage.
- Flag and explain. Each flag shows the PO line, the contract row and the reason, in plain English.
- Approve or reject. A buyer accepts the price, fixes the PO, or takes it up with the supplier.
- Run daily or before approval. New POs are checked as they are raised, not months later in an audit.
What gets flagged?
| Flag | What it means | Common cause |
|---|---|---|
| Above contract rate | PO unit price is higher than the agreed rate | Supplier list price used instead of contract price |
| Expired rate | The contract rate had ended before the PO was raised | Contract not renewed or not loaded |
| Unit of measure mismatch | PO is per each, contract is per box, or the reverse | Item set up differently in the PO and the contract |
| Off-contract supplier | A contracted item bought from a supplier with no contract | Urgent buy, or the buyer did not know the contract existed |
| No rate found | The item has no contract rate at all | A candidate for the next tender, not an error |
What does a flagged PO line look like?
Every flag comes with the numbers and the source lines. Here is a worked example with made-up figures.
| Field | Value |
|---|---|
| PO line | 20 wear liners at $1,180.00 each, raised 14 May |
| Contract rate | $1,095.00 each, effective from 1 March |
| Variance per unit | $1,180.00 minus $1,095.00 = $85.00 |
| Variance on the line | $85.00 × 20 = $1,700.00 |
| Variance as a percentage | $85.00 ÷ $1,095.00 = 7.8% above contract |
The buyer sees this before approval, with one click back to the PO line and the contract row. Caught at approval, the $1,700 is a cost avoided. Caught months later, it is a credit you have to chase.
Why does the spend number need fixing first?
Because a wrong spend total makes every comparison wrong. Inside an international tier 1 mining operator, a whole class of wrong spend numbers turned up: quotes and unapproved orders were being counted as spend. One rule fixed it.
That is why the data gets audited before anything is flagged. See the contract price book and AI data audit case studies.
Does this work for suppliers too?
Yes, from the other side. Quote Desk checks every PO a customer sends against the quote you sent, for price, quantity, part and terms, before anything ships. A PO raised at a lower price, on an expired quote or for the wrong part number gets fixed before the invoice is short paid. See Quote Desk for mining suppliers.
Who uses the checker day to day?
Buyers use it at approval, supply chain managers use it to manage suppliers, and commercial leaders ask it questions in Microsoft Teams.
- Buyers and approvers see flags on new PO lines before they approve, with the contract row one click away.
- Supply chain and procurement managers get a monthly list of suppliers billing above rate, expired contracts still in use, and items bought without a contract.
- Commercial leaders ask the assistant in Microsoft Teams things like "which suppliers were above contract rate last quarter" and get an answer with the lines behind it. Inside an international tier 1 mining operator, that assistant answers from millions of purchasing, receipt, payment and stock rows in about a minute. See the Teams commercial assistant case study.
What does it cost?
Work is charged at a consulting day rate, for both sides. The price depends on your sites, systems and data, so Tristan talks to you first, then sets out what he'd build, how many days it takes and what it costs, before any work starts.
| Miners and contractors | Mining services suppliers | |
|---|---|---|
| How it starts | Free 15 minute call, then a clear scope and price | Free 15 minute call, then a clear scope and price |
| What gets built | PO vs contract checker, price book, stock level engine and Teams assistant | Quote Desk, including the PO vs quote check |
| How it's priced | Consulting day rate, agreed after a 15 minute call | Consulting day rate, agreed after a 15 minute call |
The number of days depends on how many sites, which systems, how clean the data is and which tools you need. See how an engagement runs on the AI for mining supply chain page.
What do you need to provide, and how is the data kept safe?
Miners provide 12 months of PO lines with approval status, and contract rates with effective dates and units of measure. Suppliers provide recent quotes and the POs that came back against them.
For miners, the checker runs inside your own Azure, Databricks or Snowflake. For suppliers, it runs in your Microsoft 365 or Google account plus an Australian-hosted database you own. Access to source data is read-only, the maths is fixed rules, and the AI only explains the flags. It never approves or rejects a PO.

