
Most accounts payable teams find their duplicate payments after the fact: a vendor calls asking why they received two payments for the same invoice, or a bank reconciliation turns up a transaction nobody can explain. By then the money is already out the door, and recovering it means chasing a credit or refund from the same vendor relationship you're trying to keep.
IOFM estimates that without automation, somewhere between 0.1% and 1.5% of payments are duplicates. That sounds small until you run the math on a real invoice volume: a company processing 200,000 invoices a year at an average value of $5,000 is sitting on $1 million to $15 million in exposure if even the low end of that range slips through uncaught.
Duplicate payments rarely come from one obvious mistake. A few patterns show up again and again in AP teams.
None of these require anyone to do anything obviously wrong. They're the normal failure modes of a process that depends on exact matches across systems that don't always agree with each other.
Most ERP systems already have a duplicate check built in. It compares a new invoice against paid history on five fields: company, vendor number, invoice number, invoice date, and amount. If all five match exactly, it flags a duplicate.
That check works, as far as it goes, but "as far as it goes" turns out to be narrow. Change one field, a vendor number that's actually a duplicate vendor record, an invoice number with one different character, a date that's off by a day because of when it was keyed in, and the exact-match rule sees two unrelated invoices instead of one duplicate. This is the gap that manual review and IOFM's benchmark both point to: reviewers eyeballing invoice queues catch a minority of true duplicates, while systems built to compare across near matches catch nearly all of them.
An AI agent doing this work isn't running a single fixed rule. It compares a new invoice against payment history the way a sharp AP analyst would: same vendor, even under a different vendor code if the two records point to the same real supplier, a matching or very close amount, an invoice date inside a defined window, and an invoice number that's similar rather than identical.
That last part matters most. A vendor who resubmits an invoice under "INV-4471" when the original was "INV-04471" isn't creating a new bill. The agent needs to recognize that kind of near match without also flagging every unrelated invoice that happens to share a round dollar amount with something paid last month. Getting that balance right, catching real duplicates without burying AP in false positives, is most of the actual difficulty in this workflow.
Detection is only half the job. What happens next decides whether the flag actually prevents a loss or just adds noise to someone's inbox.
If the invoice hasn't been paid yet, the agent holds it and routes it to the AP team with the matching invoice attached, so a person can confirm and release or reject it in one look instead of reopening an investigation from scratch.
If the payment already went out, the workflow changes. The agent needs to initiate a reversal or a credit request with the vendor, track that request until it resolves, and record the outcome. This is where the process stops being a detection problem and becomes a recovery problem, and it's the part most duplicate-payment tools skip entirely.
Either way, the record that matters is the one that shows why a specific invoice was flagged: which prior invoice it matched against, on what basis, and what happened to the case afterward. A log that just says "flagged: yes" doesn't help a controller explaining a held payment to a vendor, or an auditor reviewing exception handling months later.
Zamp's AP agent runs against an Agent Operating Procedure that defines exactly how close a match has to be before it counts as suspicious: how many days apart two invoice dates can sit, how much a vendor name can differ, whether a dollar tolerance applies to amounts. An AP lead can adjust those tolerances directly as they learn more about their vendor base, without waiting on an engineering change.
Every flagged case, and every case the agent clears without flagging, carries a full record of what it compared and why it reached that conclusion. That record is what separates an agent you can audit from one you have to take on faith.
The agent also gets sharper over time. If a particular vendor is a repeat offender for slightly reworded resubmissions, or a specific vendor code turns out to be a known duplicate record, that pattern becomes part of what Zamp calls the Company Brain: the accumulated context an AI employee carries forward instead of treating every invoice as if it's the first one it has ever seen.
Duplicate payment detection is one piece of a larger AP operating model. For the full picture of how an AI employee runs accounts payable end to end, invoice capture through vendor payment, see Accounts Payable Automation: The Complete Guide. For how the same agent handles exceptions that aren't duplicates, mismatched amounts, missing purchase orders, unapproved vendors, see From Flag to Fix: How a Digital Employee Resolves AP Invoice Exceptions End-to-End.