Skip to content
MCPSTAMP
Payables checks and matching

Three-way match with AI

Paying for goods that never arrived is expensive. AP clerks and controllers check each invoice line against the purchase order and the goods receipt before payment. A server can do that check line by line.

Claude can compare documents you paste, but totals can hide line errors. The Three-Way Match server checks every SKU, price and quantity against the PO, accepted receipts and earlier invoices, and returns each exception with its source. It runs locally and doesn't read PDFs.

What you get

Invoice 55120, Mill & Co

Against PO-3381 and GRN-904. Status: exceptions

Report
SKU BEAN-ETH-5KGUnitsUSD
Billed20
Accepted on receipt16
Not supported, 4 x 86.004344.00
Hold344.00
Example from "Catch billing for rejected stock". Invented names, real math from the tools.

Free to start. Three Way Match Pro is $19 once. Free vs Pro

Without a tool, and with the tool

Without a tool

Claude can compare three documents you paste and point out differences. It can miss a mistake when two SKU errors cancel out and the totals agree, it doesn't know what was invoiced before, and it keeps no record of the check.

With Three Way Match and Goods Receipt

Three-Way Match compares each SKU, unit price and billed quantity with the PO, all accepted deliveries, and quantities already invoiced, and returns every exception with the source values. Goods Receipt stores POs and GRNs with damage and shortage. Three-Way Match runs locally. You give it structured data, not PDFs.

An example, from prompt to finished file

Example scenarios built on the real tools of Three Way Match and Goods Receipt. Names and amounts are invented.

Example · AP clerk at a food distributor

Three-way match with AI

Goods Receipt
You

Record PO-7781 for 200 cases of tinned tomatoes, then a goods receipt with 180 cases accepted and 4 damaged. List the discrepancies before I match the invoice.

  1. po_add Creates the purchase order with its line
  2. grn_add Records the receipt: 180 accepted, 4 damaged
  3. grn_discrepancy Lists the short and damaged lines
  4. three_way_match Checks the supplier invoice against the PO and accepted quantity
Result

A discrepancy list showing 20 cases short and 4 damaged, and a match report that flags any invoice line billed above the accepted quantity.

Example · Hannah Lee, AP clerk at a coffee roaster in Portland, Oregon

Catch billing for rejected stock

Three Way Match
You

Match invoice 55120 from Mill & Co against PO-3381 and receipt GRN-904. 20 bags of beans arrived but 4 were rejected as damaged.

  1. three_way_match Checks each SKU: ordered 20, accepted 16, invoiced 20
  2. report_page Shows the exception section with the PO, receipt and invoice lines
Result

Status: exceptions. SKU BEAN-ETH-5KG is billed for 20 units but only 16 were accepted, which is 4 bags at $86.00 = $344.00 not supported by the receipt.

About 20 min saved (estimate)

Example · Piotr Zielinski, purchasing manager at a furniture workshop in Lodz, Poland

Partial delivery, second invoice

Three Way Match
You

Second invoice on PO ZAM/2026/118 for oak boards. 300 boards were already billed. Check FV 77/10 against the PO and both deliveries.

  1. three_way_match Adds the 300 boards billed before and checks the new lines against ordered and accepted units
  2. report_export_csv Exports the evidence as CSV for the file
Result

Matched. 500 boards ordered, 500 accepted across two receipts, 300 billed before plus 200 now. The invoice total of 46,000.00 PLN equals its priced lines.

About 25 min saved (estimate)

Every example here works on the free tier. One $39 key removes the limits on all of them. Pricing

Common mistakes with this job

  • Matching on invoice total only, which hides offsetting line errors.
  • Forgetting earlier partial invoices on the same PO, so the quantity gets paid twice.
  • Booking damaged goods as received in full.

Connect in 1 minute

Three Way Match runs on your machine. One line with Node.js, or the .mcpb file for Claude Desktop.

Run it locally (Node.js 18+)

npx -y @theluckystrike/mcp-three-way-match

Free vs Pro for Three Way Match

Free ($0, no key)Pro ($19 once)
Full match and every exception, up to 500 PO and invoice lines and 100 receiptsNo cap on the number of saved reports. Input limits stay the same.
Pages and CSV export
3 saved reports
Where these limits come from

servers/three-way-match/src/store.ts:9, :59; servers/three-way-match/SPEC.md:30

Questions

Can I do this in Claude?
Claude can compare documents you paste, but totals can hide line errors. The Three-Way Match server checks every SKU, price and quantity against the PO, accepted receipts and earlier invoices, and returns each exception with its source. It runs locally and doesn't read PDFs.
Does it read PDFs or connect to my ERP?
No. You give it the PO, receipts and invoice as structured lines. Matching is exact by SKU and reference, with no fuzzy matching or tolerance.
Does it approve the invoice?
No. It reports matched, exceptions or invalid based on what you supplied. The payment decision stays with you.
What does Pro change?
Only the number of saved reports. Free keeps 3 at a time, and every check and export stays free.

Related jobs

Claude for accountants: all jobs

Three Way Match Pro: $19 once

Buy Pro