8 min read
How duplicate invoice payments happen, and how to stop them
Paying the same invoice twice is embarrassing, expensive, and usually discovered by the vendor rather than by you. It is also almost never a single error — it needs two independent gaps to line up, which is good news, because closing either one breaks the chain.
Why it takes two gaps
An invoice arriving twice is harmless if something notices. A weak detection control is harmless if nothing arrives twice. A duplicate payment needs both at once — which is why it feels random, and why it clusters in busy months when both get sloppier together.
Causes, and the control for each
| Cause | Control that catches it | Who owns it |
|---|---|---|
| Same invoice by email and by post | Capture the invoice number and block repeats on the same vendor | Whoever configures AP |
| Vendor statement processed as a bill | Classify the document before extracting it | Whoever configures AP |
| Invoice number not captured at all | Make it a required field before a bill can post | Controller |
| Vendor exists twice in the file | Match new senders against existing vendors before creating one | Whoever maintains the vendor list |
| Credit memo recorded as a bill | Check the sign and the document type, not just the amount | AP clerk |
| Two people processing the same mailbox | One route in, one owner | Controller |
| Resubmitted invoice after a query | Mark the original as held rather than deleting it | AP clerk |
The statement problem
A vendor statement lists invoices you have usually already received. Processed as a bill, it creates one new liability for the total of several existing ones — and because that total matches no single invoice, the ordinary duplicate check never fires.
This is the sharpest edge in automated AP specifically. A system that reads documents accurately but does not work out what kind of document it is reading will transcribe a statement perfectly and post it as a bill. Accurate extraction makes this failure worse, not better, because the resulting bill looks correct in every field.
Finding the ones you have already paid
Run this backwards before changing anything forwards. It usually recovers some money, and it tells you which of the causes above is actually yours — which is more useful than guessing.
- 1Export twelve months of billsVendor, bill number, bill date, amount. In QuickBooks Online, Reports → Transaction List by Vendor, set the date range, and export to a spreadsheet.
- 2Sort by vendor, then amountDuplicates surface as adjacent rows with the same vendor and the same amount. Scan rather than filter at this stage — you are looking for a pattern, not a single row.
- 3Flag repeats within 90 daysSame vendor, same amount, within a quarter. Recurring charges of a fixed amount will show up here too, so expect false positives and keep them.
- 4Separate the recurring from the suspectA monthly fee of the same amount is not a duplicate. A pair eleven days apart on an irregular amount almost certainly is.
- 5Check the bill numbersIdentical numbers confirm it. Blank numbers on both tells you your capture is the gap, which is the more valuable finding.
- 6Check each suspect against the vendorA credit may already exist. Vendors are generally cooperative about this — they would rather resolve it than have you find it at audit.
Prevention checklist
Last updated 2026-10-21.
