Duplicate invoice detection is the process of identifying invoices that have already been paid or are already in the payment queue — before a second payment is released. Duplicate payments are one of the largest sources of recoverable cash leakage in accounts payable.
How duplicates happen
Duplicates are rarely identical copies. They are the same economic transaction submitted through different channels, with slightly different formatting, or at different times. Common scenarios:
| Scenario | How it enters the system | Why it's hard to catch |
|---|---|---|
| Email + portal | Vendor emails the invoice AND uploads it to the portal | Different file names, different receipt timestamps |
| Statement reminder | Vendor re-sends an unpaid invoice as part of a statement — AP processes it as new | Different cover letter, same underlying invoice |
| Invoice number variation | Vendor reissues with a new number (INV-1234 vs. INV-1234-R1) | Different invoice numbers bypass simple duplicate checks |
| Cross-entity submission | Same invoice sent to two subsidiaries — both process it | Different AP teams, different ERP company codes |
| Partial + full | Partial payment made, then full invoice resubmitted — both processed | Different amounts, same underlying obligation |
Detection methods
Simple duplicate detection checks invoice number + vendor + amount. This catches exact duplicates but misses the scenarios above. Effective detection requires multiple layers:
- Exact match — Same invoice number, vendor, and amount (catches ~40% of duplicates)
- Fuzzy invoice number — Normalise invoice numbers (strip leading zeros, ignore prefixes/suffixes) and compare
- Amount + date proximity — Same vendor, same amount, within 30 days — regardless of invoice number
- PO-level deduplication — Multiple invoices referencing the same PO line for the same quantity
- Cross-entity check — Same vendor, same amount, same date across all company codes
False positives
Not every match is a duplicate. Recurring invoices (monthly rent, subscriptions) will trigger amount + vendor matches every month. The detection system must distinguish:
- Recurring invoices with different invoice numbers and sequential dates — legitimate
- Same invoice number resubmitted within the same period — likely duplicate
- Same amount from same vendor in same week with different invoice numbers — needs investigation
Recovery
When a duplicate payment is confirmed, recovery options include:
- Credit on account — Vendor applies the overpayment to the next invoice
- Refund request — Vendor returns the duplicate payment via wire or cheque
- Offset — Deduct from the next payment run without vendor action
Recovery rates decline with age. Duplicates caught before payment have 100% recovery. Duplicates caught within 30 days recover ~85%. After 90 days, recovery drops below 50% as vendors dispute the claim or the credit expires.
How AI agents detect duplicates
The agent runs all five detection layers simultaneously on every incoming invoice. When a potential duplicate is flagged, the agent:
- Pulls both invoices side by side — comparing line items, dates, PO references, and amounts
- Checks payment status of the original — paid, in queue, or on hold
- Evaluates whether this is a recurring legitimate invoice or a true duplicate
- Proposes action: block payment, request vendor confirmation, or clear as legitimate
- Logs the decision with full reasoning for audit
Related
- Three-way match — the matching process that should catch duplicates at the PO level
- Invoice reconciliation service — includes duplicate detection as a standard control
- Vendor statement reconciliation — where duplicate payments surface as overpayments on the statement