Business data · Free browser workbench

Three-Way Invoice Matching Tool

Compare what was ordered, received and invoiced. Find mismatches in three CSV files without connecting an accounting system.

No file uploadNo accountCSV / JSON report export

Supply purchase orders, goods receipts and supplier invoice lines using the headers shown in the workspace. Enter the allowed per-unit price difference in the same reporting currency. The tool reviews records; it does not approve or pay invoices.

Use the toolSee the worked example and limits

Your files stay inside this browser workspace. Network connections from the workspace are disabled. The page sends only fixed usage labels, never file contents or results. Loading workspace…

What three-way matching means here

The checker matches a purchase-order identifier and SKU across three tables. Purchase orders define ordered quantity and agreed unit price. Goods receipts record quantities actually received. Invoice lines identify the invoice, purchase order, SKU, billed quantity and billed unit price. The program accumulates received and invoiced quantities for each PO/SKU pair before evaluating invoice-line status. This catches over-invoicing spread across several invoice records instead of considering every invoice in isolation.

Reproduce the built-in mismatch

The example purchase order requests 10 units of SKU A1 at 8 each and 4 units of B2 at 15 each. Only 9 A1 units have been received, but the supplier bills 10. A1 is therefore marked OVER_INVOICED. B2 has 4 ordered, 4 received and 4 billed at the agreed price, so it passes. The total invoiced amount is 10 × 8 + 4 × 15 = 140. Press Load example to inspect both rows, then change the receipt for A1 to 10 and rerun to see how the status changes.

How exception statuses are selected

UNKNOWN_PO means an invoice references an unrecognized PO/SKU pair. PRICE_VARIANCE means its unit price differs from the order by more than the configured tolerance. OVER_RECEIVED means receipts exceed the ordered quantity. OVER_INVOICED means cumulative invoiced quantity exceeds received quantity. A purchase-order line with no associated invoice is marked MISSING_INVOICE unless an over-receipt condition takes priority. The current report chooses one principal status per line in the implemented order; it is not an exhaustive list of all simultaneous exceptions.

Prepare identifiers before importing

Keep PO identifiers and SKUs consistent across the three files. Repeated PO/SKU definitions are rejected because the tool cannot infer which order line was intended. An ambiguous repeated invoice/PO/SKU combination is also rejected; distinguish invoice lines in your upstream export before using this bounded format. A receipt referring to an unknown order is an input error rather than an invented match. The program does not use fuzzy matching, supplier-name similarity or AI to reconcile inconsistent identifiers.

Limits of the review

Use one reporting currency consistently. Tax, currency conversion, invoice document parsing, supplier identity verification and accounting-system posting are outside scope. The unit-price tolerance is an absolute amount per unit, not a percentage. Each CSV is limited to 6 MiB and 25,000 data rows, and the preview shows at most 500 results. Download the full computed CSV or JSON report for a documented follow-up. A passing line does not authorize payment or establish that the goods or invoice are genuine.

A private workspace rather than a hosted ledger

The records stay in the browser workspace, which cannot make network requests. There is no account, live ERP integration, saved server ledger or payment function. Save a portable workspace file to retain your inputs; the website does not store a recovery copy. The page may report fixed usage labels, such as whether the fictional sample ran successfully, but it does not send invoice values, PO identifiers, filenames or report contents. Treat exported reports as confidential business records.