WCapsuleM8

Purchase Order Tracker

Free

Track purchase orders from raising to invoice: committed spend by cost centre, overdue deliveries, goods received but not invoiced, and a three-way match that catches duplicate and inflated supplier invoices. Runs entirely in your browser — nothing is uploaded.

Version 1.0.0 · Updated Aug 5, 2026

Overview

CM8-77 is a purchase order register that follows an order line from the moment it is raised to the moment the invoice is matched and the line is closed. It answers the three questions that usually get answered too late: how much have we committed and not yet received, which deliveries have slipped, and does the supplier's invoice agree with what actually arrived. Committed spend is the part that catches people out. A signed purchase order is money already promised. It does not show in a bank balance and it does not show in a profit figure until the invoice lands, so a business can be comfortably in budget and heavily over-committed on the same day. This register makes that gap visible while you can still do something about it.

How to use Purchase Order Tracker

The complete in-tool guidance, reproduced here so you can read it before you download.

What this tool does

CM8-77 is a purchase order register that follows an order line from the moment it is raised to the moment the invoice is matched and the line is closed. It answers the three questions that usually get answered too late: how much have we committed and not yet received, which deliveries have slipped, and does the supplier's invoice agree with what actually arrived.

Committed spend is the part that catches people out. A signed purchase order is money already promised. It does not show in a bank balance and it does not show in a profit figure until the invoice lands, so a business can be comfortably in budget and heavily over-committed on the same day. This register makes that gap visible while you can still do something about it.

Everything runs inside this one file. There is no account, no upload and no network request of any kind, so supplier names, prices and terms never leave the computer you are using.

One row per order line

A purchase order with four different items on it is four rows here, each with the same PO number. That is deliberate. Receipts, invoices and delays happen at line level: half an order arrives, one line gets short-shipped, one line gets invoiced twice. A register that holds a whole order in a single row cannot see any of that.

The headline tile therefore counts order lines, and states separately how many distinct purchase order numbers those lines represent. If you quote a number of orders to somebody, quote the second figure.

Enter the unit price net of tax and keep every line in one currency. The currency setting formats the figures; it does not convert anything.

Committed spend

Outstanding commitment is the value of what you have ordered and not yet received. It is the number to take to a budget meeting alongside actual spend, because together they tell you what the budget will look like once the deliveries land.

Cancelled lines are excluded from every total: a cancelled order is not a commitment. The line keeps its own order value in the register so the history is intact, but it contributes nothing to the tiles, the charts or the tables.

Draft lines are included, and the outstanding commitment tile says how many there are. A draft is a commitment you are about to make rather than one you have made, so if you need an issued-only figure, filter the register to exclude drafts before reading the tiles — every figure in this tool responds to the filters.

The formulas

All of them, stated in full, so anyone can check the arithmetic:

Order value = quantity ordered × unit price

Received value = quantity received × unit price

Outstanding commitment = the greater of zero and (order value − received value)

Receipt completeness % = quantity received ÷ quantity ordered × 100

Match tolerance (in units) = quantity ordered × tolerance % ÷ 100

Value received not invoiced = sum over lines of (quantity received − quantity invoiced, floored at zero) × unit price

Days late is measured against the expected delivery date. While a line is still open it is measured to today and grows each day. Once the line is settled — received in full, or marked closed — it is measured to the date received and stops moving, so the delivery record it leaves behind is permanent.

Days late = days from expected delivery date to (date received, if the line is settled) or to today, if greater than zero

A line that arrived early or on time shows nothing in the days-late column rather than a negative number, because a negative lateness reads as a mistake at a glance and averages badly.

Over-receipt is never netted off

If a supplier sends more than you ordered, the received value on that line exceeds the order value. The arithmetic would make the outstanding commitment negative, and a negative commitment on one line would quietly reduce the total across every other line — hiding a real commitment behind a data error.

So outstanding commitment is floored at zero, line by line, and the over-receipt is reported instead: the receipt percentage turns red, the line appears in the exceptions table with the surplus quantity and its value, and the outstanding commitment tile says how many lines are affected.

One consequence is worth knowing about. Because of that floor, total outstanding commitment will not always equal total ordered value minus total received value — it will be higher, by exactly the value of the over-receipts. That is the intended behaviour, and the gap is a measure of how much unauthorised stock has arrived. Deal with each over-receipt properly: either raise a variation to the order so the paperwork matches what is on the shelf, or send the surplus back.

The three-way match

The three-way match is the single control that stops a business paying for things it did not order and did not receive. It compares three independent documents before an invoice is passed for payment:

  • The purchase order — what you asked for, at what price, authorised by somebody with the authority to spend.
  • The goods received note — what actually arrived, counted by somebody at the door who has no reason to inflate it.
  • The supplier's invoice — what you are being asked to pay.

Pay only what all three agree on. The control works because the three records are created by different people at different times for different reasons, so a single mistake or a single dishonest act cannot move all three together.

It is the control that catches the two most common ways money leaks out of a purchase ledger. The first is the duplicate invoice: the same invoice arrives twice, or arrives once by post and once by email, or the supplier re-issues it with a new number after a chase. Without a match, both get paid, because each looks perfectly reasonable on its own. With a match, the second one has no unreceipted goods left to match against and it stops. This is why the tool refuses to accept an invoiced quantity without an invoice reference — the reference is what lets you see the same invoice twice.

The second is the inflated invoice: sixty bearings are delivered and sixty-six are invoiced, or the agreed price quietly becomes a higher one. Nobody notices, because the delivery was correct and the invoice arrives weeks later on a different desk. The match compares the invoiced quantity against the received quantity and flags the difference as an exception, with the value of the overcharge next to it.

This tool performs the quantity half of that match on the numbers you type in. It labels each line:

  • Flag — Meaning — What to do
  • Match — Invoiced quantity agrees with received quantity inside tolerance — Pass for payment
  • Over-invoiced — Invoiced for more than was received — Hold the invoice and query it before payment
  • Awaiting invoice — Received more than has been invoiced — Nothing wrong — accrue it, and chase if it is old
  • — — Nothing received and nothing invoiced yet — Nothing to match

Sort the exceptions table by reading it top down: over-invoiced lines are listed first, then over-receipts, then the lines simply awaiting an invoice. The first group costs you money today.

Setting the tolerance

Exact matching is right for discrete items — you either received six laptops or you did not. It is wrong for anything measured, where a delivery of steel, cable or liquid will rarely land on the ordered figure exactly, and a zero tolerance would fill the exceptions table with noise that everybody learns to ignore.

The tolerance is a percentage of the quantity ordered, not of the quantity received. That matters: it means a line with nothing received and something invoiced has a fixed, meaningful tolerance to breach, rather than a tolerance of zero percent of zero. Two percent is a sensible starting point. Set it to zero if everything you buy is countable, and review any figure above five percent — a wide tolerance is the easiest way to make a control look like it is working while it quietly is not.

Delivery dates and the warning window

The expected delivery date should be the date the supplier confirmed, not the date you would like. A register full of hopeful dates produces an overdue list nobody trusts.

A line counts as overdue when it has an expected date in the past, has not been received in full, and is not cancelled or closed. The warning window adds the lines that are not overdue yet but fall due within the number of days you set, so the deliveries table is a call list rather than a post-mortem. Fourteen days suits most businesses; shorten it if your lead times are short, lengthen it if you buy long-lead items.

Received but not invoiced

Goods received and not yet invoiced are a liability you have already incurred. The tile values it, and the exceptions table lists the lines. At a month end this is the figure your accountant will want in order to accrue for the cost in the period the goods actually arrived, rather than the period the invoice happened to turn up.

It is also a warning sign when a line sits there for months. An old unbilled receipt usually means the invoice went somewhere it should not have, the receipt was recorded against the wrong order, or the goods were never really received — and all three are worth finding out before the year end.

Statuses

Status is a record of where the line has got to, and the tool checks it against the quantities so the two cannot drift apart. It will not let you record a receipt against an order still marked draft, sent or acknowledged, and it will not let you mark a line received with no quantity received. Those two errors are what make a register look tidy while telling you nothing.

Draft means raised but not issued. Sent means it has gone. Acknowledged means the supplier has confirmed it, which is the first point at which the expected date is worth anything. Part received, received and invoiced follow the goods and the paperwork. Closed means received, invoiced, matched and finished with, and it stops the days-late clock. Cancelled removes the line from every total.

Units, and why quantities are never added up

Every line carries a unit of measure, and no total anywhere in this tool adds quantities across lines. Adding 120 square metres of sheet to 90 metres of box section produces 210 of nothing. Quantities are only ever compared within a single line — ordered against received, received against invoiced — where the unit is the same by definition.

Everything that is totalled is money, because money adds up regardless of what was bought. That is why the tiles, the cost centre chart, the supplier chart and the table footers are all in currency, and the only quantities you will see in a summary are on a single line at a time.

What this tool will not do

It does not send a purchase order to anybody, and it does not receive anything from a supplier. It holds no approval workflow: the "approved by" field records a name, and nothing stops you typing one in. It does not post to a ledger, calculate tax, apply a discount structure, handle part-invoices at a different price to the order, convert currency, or track a supplier's credit note back against the line it corrects.

It also cannot tell you whether the quantity you typed as received is the quantity that actually arrived. The three-way match is only as good as the goods received note behind it, and a receipt recorded from the invoice rather than from a physical count defeats the entire control — that is worth saying out loud to whoever records receipts.

Printing and sharing

Print Report produces a report from whatever the current filter shows: header, the six headline figures, the four charts, the deliveries and exceptions tables, the full register and your closing notes. Print to PDF to circulate it.

The scope line under the title states the filter in force. Clear the filters before issuing anything described as the full commitment position — a status filter left on "sent" will understate committed spend and nothing on the page will look wrong.

Saving your work

Order lines, settings and the report header are written to this browser's local storage as you type, and the toolbar shows the time of the last save. That storage belongs to one browser on one computer: another browser, a private window, a second machine or a clean-up tool that clears site data will not have it.

Treat Export .json as the real save — one file containing everything, which Import .json restores anywhere. Export CSV gives you the register for spreadsheet work, including every derived figure and every filtered line, not only those drawn on screen. Reset asks twice, then erases everything this tool has stored. There is no undo.

Accuracy & disclaimer

This tool calculates from what you enter and nothing else. It cannot tell whether a price is the agreed price, whether a receipt was counted or copied, whether an invoice is genuine, or whether an order was authorised. Every figure it produces depends on all four.

It is a commitment register and an arithmetic aid — not an accounting system, not a control in its own right, and not a substitute for someone independent checking the invoices before they are paid. Reconcile against your finance system before relying on any figure here.