# Catch duplicate or mismatched supplier invoices before you pay
By The Workshaped Lab · Tier: Quick win · Industry: Bookkeeping & Finance, Construction & Trades · Function: Finance & Billing · Mode: Human approval · Autonomy: Suggest · Prompt tested: 2026-10-14 (gpt-5-mini, synthetic sample, checked by hand)
Provenance: Idea, prompt tested on synthetic data. Tools: Bills list (CSV), Purchase orders (CSV), Any chatbot or a spreadsheet

Suppliers resend invoices, change the number slightly, or bill a different amount than the PO. Paying twice is common and slow to recover. This check runs before each payment run and lists anything that looks wrong.

## The problem
Duplicate payments come from resent invoices, invoices that arrive by email and post, and small changes in the invoice number (INV-1041 vs 1041). Mismatches against purchase orders slip through when nobody compares line by line before the payment run.

## Why it works
The checks themselves are simple rules: same supplier and amount within a few weeks, near-identical invoice numbers, total different from the PO. A spreadsheet or a short script does them reliably; a model is useful for explaining each flag in plain words and for reading invoice numbers written in odd formats. A person decides every flagged item.

## Who it's for
Owners, office managers and bookkeepers who approve a weekly or monthly payment run.

## Step by step
1. Export unpaid bills (supplier, invoice number, date, amount, PO) and the last 90 days of paid bills.
2. Normalise invoice numbers: strip spaces, dashes, leading zeros and prefixes like INV.
3. Flag: same supplier + same normalised number; same supplier + same amount within 30 days; amount differs from the PO by more than 1%; no PO where one is required.
4. List flagged bills with the reason and the matching earlier bill.
5. A person holds or approves each flagged bill before the payment run.

## Pitfalls to avoid
- Recurring bills (rent, subscriptions) look like duplicates: keep a short allow-list.
- Credit notes and partial invoices against one PO are legitimate: compare the running total, not each bill.
- Don't let a chatbot do the sums on a long list; use the spreadsheet for totals and the chatbot for the explanation.

## Free kickstart prompt (paste into Claude, ChatGPT or Grok)
```
Act as an accounts-payable checker. Below are (1) the bills I'm about to pay, (2) bills paid in the last 90 days and (3) open purchase orders.
Compare them and list every bill I should hold, with the reason:
- same supplier and same invoice number, after ignoring spaces, dashes, leading zeros and prefixes like "INV"
- same supplier and same amount within 30 days of another bill
- amount differs from its PO by more than 1%, or no PO where the others have one
Give a table: bill, supplier, amount, reason, matching earlier bill or PO, and "likely duplicate / check / probably fine".
Don't recalculate totals I didn't ask for; copy amounts exactly. Monthly subscriptions and rent will repeat; mark those "probably fine".

BILLS TO PAY:
[PASTE]
PAID IN LAST 90 DAYS:
[PASTE]
OPEN POs:
[PASTE]
```

Web: https://workshaped.ai/use-cases/duplicate-invoices/
