Duplicate payment detection: how to find and stop them before they happen
Quick summary
- Duplicate payments typically run 0.1-0.5% of total accounts payable spend at companies relying on manual review. On $5M in annual vendor spend, that’s $5,000-$25,000 a year, paid out and then chased down after the fact.
- The most common cause isn’t fraud. It’s the same invoice entering the system twice through different channels: once from an emailed PDF, once from a mailed paper copy, once from a vendor portal re-upload.
- Recovery rates on duplicate payments already sent average well under 100%. Some vendors apply the overpayment as a credit on the next invoice instead of refunding it, and some simply don’t respond to recovery requests.
- Automated duplicate detection compares vendor name, invoice number, amount, and invoice date across all submitted invoices, not just the ones in the current batch, which is what manual review misses.
Duplicate payments are one of the few AP errors where prevention is meaningfully cheaper than recovery. Once the money is out the door, getting it back depends on the vendor’s willingness to cooperate, and that’s a coin flip on a good day.
Why duplicates happen
The instinct is to assume duplicate payments are a data entry mistake, someone fat-fingering the same invoice into the system twice. That happens, but it’s not the main driver.
The more common pattern is the same invoice arriving through multiple channels and getting processed as if each arrival were a new bill. A vendor emails an invoice PDF. The AP clerk enters it. Two weeks later, because the payment hasn’t shown up yet, the vendor mails a paper copy of the same invoice as a follow-up. It gets scanned and entered as a new bill, because nobody cross-checked it against what was already in the system.
Multi-location businesses see a related version: the same invoice gets submitted to two different offices or departments, and each processes it independently because neither has visibility into what the other already paid.
A third pattern shows up with recurring vendors on similar-but-not-identical invoice numbers. A vendor’s billing system generates an invoice number like INV-4471, and a correction or reissue comes through as INV-4471-R or INV-4471A. If your matching logic checks for exact invoice number matches only, these look like two different bills.
What manual review misses
The reason duplicate payments slip through manual review isn’t carelessness. It’s that manual review checks the invoice in front of you against what looks similar in the current batch, not against the full history of everything ever paid to that vendor.
An AP clerk processing 40 invoices in a batch is reasonably good at catching an exact duplicate within that batch. What they can’t reasonably do is hold in memory (or manually cross-reference) every invoice paid to that vendor over the past six months, checking whether this new one is a near-match to something already settled weeks ago.
That’s exactly the kind of check that’s trivial for software and genuinely hard for a person. Automated duplicate detection runs every new invoice against the full payment history for that vendor, flagging matches on invoice number, close variations of invoice number, amount, and date proximity, not just what’s in today’s stack.
Running a retroactive check
Before setting up ongoing automated detection, it’s worth running a one-time retroactive check on the past 12-24 months of AP data. This is the “year-end audit” version of duplicate detection, and it routinely finds more than people expect, since it’s checking the full history at once rather than catching things in real time.
The check itself is straightforward even without specialized software: export your AP payment history and sort by vendor name, then by amount. Payments to the same vendor for the exact same amount within a short window (say, 30 days) are your first suspect list. From there, check invoice numbers and dates on those specific pairs.
This retroactive sweep typically finds 4-5 times more duplicates than day-to-day manual processing catches, simply because it’s looking across the entire dataset at once instead of one batch at a time. Companies that have never run this check are often surprised by the total.
Recovering money already paid
If a retroactive check turns up a genuine duplicate, recovery is not guaranteed and it’s slower than most finance teams expect.
The first step is contacting the vendor directly, with both invoices and payment confirmations attached, and requesting either a refund or a credit against the next invoice. Most legitimate vendors will cooperate once the duplicate is clearly documented, but “will cooperate” doesn’t mean “will act quickly.” Refund processing on the vendor’s side often takes 30-60 days, sometimes longer if it has to go through their own AP or AR reconciliation.
Some vendors, particularly smaller ones without dedicated AR staff, will offer a credit on the next invoice instead of a cash refund. This works fine if you have ongoing business with them, less fine if the relationship is ending.
A meaningful share of duplicate payments are never fully recovered, either because the vendor is unresponsive, the amount is small enough that nobody prioritizes chasing it, or the vendor genuinely can’t locate the overpayment on their end. This is the real argument for prevention over recovery: the expected value of catching a duplicate before payment is close to 100% of the amount, while the expected value of recovering it afterward is meaningfully less.
Setting up prevention
Most AP automation platforms include duplicate detection as a standard feature, not an add-on, which makes this one of the easier wins in a broader AP automation rollout.
The detection logic generally checks four fields together: vendor name (or vendor ID, which is more reliable than name matching), invoice number (including fuzzy matching for near-identical numbers), amount, and invoice date within a window. A match on all four, or a close match on three with an exact match on amount, gets flagged for review before payment, not after.
BILL, Tipalti, Stampli, and AvidXchange all include this as part of standard invoice processing. The check runs automatically on every invoice submitted, comparing against the vendor’s full payment history rather than just the current approval batch, which is the part manual review structurally can’t replicate. For a broader comparison of platforms with this feature, see our best AP automation software roundup.
Frequently asked questions
How far back should a retroactive duplicate check go? Twelve months is a reasonable minimum, since it covers a full annual cycle including any seasonal vendors. Twenty-four months catches more but takes proportionally longer to review. If this is the first time running the check, start with 12 months and expand if the findings suggest it’s worth the additional effort.
What’s a normal duplicate payment rate? Companies relying entirely on manual AP review typically see 0.1-0.5% of total spend lost to duplicates. Companies with automated matching in place see this closer to 0.01-0.05%, since the software catches near-duplicates that manual review structurally misses.
Do duplicate payments count as fraud? Almost never, in the criminal sense. The overwhelming majority are process errors, the same invoice entering the system through two channels, not intentional double-billing by the vendor or intentional double-payment by staff. That said, a small number of vendors do knowingly resubmit invoices that were already paid, hoping the payer won’t catch it. Tracking your duplicate rate by vendor over time will surface any vendor where this becomes a repeated pattern.
Should we ask vendors to include a unique reference number to prevent this on their end? It helps, but it’s not a complete solution, since it only prevents the vendor from generating true duplicates on their side. It does nothing about the more common cause: the same legitimate invoice arriving through two different channels (email and mail, or two different departments) and getting entered twice on your end. Prevention needs to happen in your own matching logic, not just rely on vendor discipline.