Three-way matching is the oldest control in payables, and still the one that catches the most money. Before a supplier bill is paid, three documents are put side by side: the purchase order (what you agreed to buy, at what price), the goods receipt (what actually arrived at the branch or the warehouse) and the bill (what the supplier is asking you to pay). When the three agree, the bill is ready. When they do not, someone has to find out why before the money leaves.
For a restaurant group or a retailer with several sites, the hard part is volume, not logic. Deliveries arrive short, prices move between the order and the invoice, one order is billed in three parts, and a supplier sends the same bill twice with a slightly different number. This guide sets out what can be checked mechanically, what should stop a bill, and what is a judgement only a person can make.
What is compared, line by line
The bill is matched line by line: to a line of the purchase order, and then to what was received against it.
- Quantity. The quantity billed, added to what earlier bills already billed on the same order line, should not exceed what was received. Several receipts against one order line are added together.
- Unit price. The billed price should not be above the order price. A price below the order is fine.
- Arithmetic. Lines, subtotal, discount, tax and total should add up. A difference of one minor unit (one halala, one fils) is rounding, not an error.
- The order itself. A cancelled order, or one that is already fully billed, should not take another bill.
- The supplier. The supplier on the bill should be the supplier on the order, identified by tax number first and by exact name second.
- The period. A bill dated inside a period you have already closed should not slip into it.
- Duplicates. The same supplier and the same invoice number, compared without spaces, dashes, prefixes or leading zeros, is the same bill.
Partial deliveries and split bills
Most mismatches are not errors. A supplier delivers sixty of a hundred cases this week and bills for sixty: that bill is correct and should pass. The same supplier billing a hundred against sixty received is the case to stop. A second bill on the same order line is fine as long as the two together stay within what was received. Getting this right is what keeps a matching process from drowning the team in false alarms.
Tolerances: decide them, write them down
A tolerance is a policy decision, not a technical one. Zero tolerance on price sends every rounding difference to a person; a wide tolerance lets real overcharges through. Whatever you choose, write it down, apply it the same way to every supplier, and review it when your volumes change. In RoleAxis today the supplier bill rules use:
- no tolerance on quantity billed above quantity received;
- a unit price more than 2 percent above the order price, and at least one minor unit above it, holds the bill;
- totals must agree to one minor unit;
- on a bill with no purchase order, a price well above the supplier's own recent price for the same item goes to a person.
Three outcomes, not two
A matching process that only says match or mismatch forces a guess whenever a bill is unusual. It is more honest to have a third answer: this needs a person. The RoleAxis rules sort a bill in your company's currency into one of these:
- Ready. The data is there and every check passed within policy. A draft can be prepared.
- Hold. A defined rule failed: billed above received, price above tolerance, totals that do not add up, a duplicate number, a closed period, a cancelled order, bank details that differ from the supplier's record.
- Needs review. The case is ambiguous and the system should not decide: a near-match on the supplier's name only, a tax number and a name that point at different suppliers, a first bill from a new supplier, a bill that names two orders, a freight line that is not on the order, a different unit of measure, a discount on the whole bill.
Two more outcomes keep the picture honest. Missing information means a required record or field is absent (an unknown supplier, no invoice number). Unsupported means the case is outside what the rules cover today: credit notes, and bills in a currency other than the company's, which are never converted.
What a person decides
No set of rules removes the need for judgement. In a well-run payables process, a person still decides:
- whether to accept a price change the buyer agreed by phone and never put on the order;
- whether a short delivery will be completed, credited or written off;
- how to treat freight, a discount on the whole bill, or a line in a different unit;
- whether a new supplier, or a supplier whose bank details have changed, is genuine. Confirm a bank change by calling a number you already hold, never by replying to the bill;
- when to release a hold, and when to pay.
Where RoleAxis fits
RoleAxis's Payables agent runs these checks on supplier bills once your workspace's finance setup and go-live check are complete. It reads the order, the receipts and the bill from your ERP, and every read is done again at the moment of approval, so a decision is never made on stale data. When a bill should stop, it drafts a hold with the difference and the records behind it; by default a named person approves the hold before anything is written. A hold marks the bill for review in your ERP. It does not block payment by itself, and the correction stays with your accountant.
The agent never pays a bill and never changes a supplier's bank details. How far it may go on its own is set per agent by your workspace admin; see Approval levels in RoleAxis, explained.