Which control stops duplicate payment?

Duplicate payment survives three-way matching because matching checks a PO and receipt, not payment history across vendors and systems. Read the full guide.

Twitter LinkedIn WhatsApp
Ask AI: ChatGPT Claude Gemini Grok
Which control stops duplicate payment?

Margin drift is the gap between what a vendor contract says and what the invoice actually charges. Duplicate payment sits outside that gap; it is not a pricing dispute, it is the same obligation settled twice, and it survives in AP systems that are otherwise disciplined.

The question a controller actually needs answered is not whether duplicate payment happens but which control catches it, and why the controls already running often do not. This page names the mechanism, not a vendor or a product.

Executive Summary

No single control stops duplicate payment on its own. Three-way matching confirms an invoice against a purchase order and a receipt; it says nothing about whether that invoice number, or one materially like it, was already paid. A duplicate-payment control has to compare an invoice against payment history, not against the PO.

The mechanism that actually catches it is a payment-history match run before disbursement: vendor ID, invoice number, amount, and date, tested against everything already paid, with fuzzy matching for invoice numbers that were re-keyed, resubmitted with a suffix, or entered by two different AP clerks. A control that only checks exact invoice-number duplicates misses the resubmission case, which is where most real duplicates hide.

What changes the outcome is timing and scope: running the match before payment leaves, across all vendor entities and all AP users, not after the fact in a periodic audit. A retrospective audit still recovers what already went out the door, but the forward control is what prevents the next one.

1. What actually causes a duplicate payment?

A duplicate payment happens when the same obligation is entered into the payment system more than once and neither entry is recognized as matching the other. Causes include a vendor resubmitting an unpaid-looking invoice, a paper and an electronic copy both being keyed, a credit memo not being netted before the second entry, and multi-entity AP teams each processing an invoice sent to more than one location.

Each of these has a different signature. A vendor resubmission usually changes the invoice number slightly, adding a letter suffix or dropping a leading zero, which defeats an exact-match check. A paper-and-electronic duplicate usually keeps the same invoice number but is entered by two different people on two different days.

A missed credit memo is a variant worth separating out: the original invoice is paid once, correctly, but a credit that should have offset a later invoice is never applied, so the net effect looks like a duplicate even though no invoice was literally paid twice. See missed credit memo for that mechanism specifically.

Multi-entity duplication is a structural cause rather than a data-entry error: the same vendor bills two plants for one shared service, and neither AP team can see the other's queue. That case is not caught by any single-entity control, no matter how well it matches.

2. Does three-way matching stop duplicate payment?

Three-way matching checks that an invoice agrees with its purchase order and its receipt; it does not check that invoice against every other invoice already paid to that vendor. Two invoices can each individually match a valid PO and receipt and still both get paid for the same delivery, if the PO quantity was large enough to cover both submissions. Matching solves a different problem than duplication does.

Three-way matching exists to confirm that what was ordered, received, and billed line up. It is built around a single transaction, not a population of past transactions.

A PO with a large quantity or an open-ended service contract can absorb more than one invoice without tripping any exception, because each invoice on its own looks legitimate against the PO. The match passes twice.

This is why duplicate-payment detection has to run as a separate check layered on top of three-way matching, comparing the invoice against payment history rather than against the order. The two controls test different things and neither substitutes for the other.

3. What does a payment-history match control actually check?

A payment-history match compares four fields on every new invoice against everything already paid: vendor ID, invoice number, invoice amount, and invoice date, with tolerance for near-matches rather than only exact ones. An exact-match rule alone catches the simplest case and misses the resubmission case, where the invoice number was altered before it was re-entered. Effective controls run fuzzy logic on the invoice number field specifically.

The four-field comparison is the baseline. Vendor ID narrows the search, invoice number and amount do the matching, and date confirms the two records describe the same billing event rather than two separate deliveries that happen to cost the same.

A. Exact match

Flags an invoice whose vendor ID, invoice number, and amount are identical to a prior paid record. This catches the simplest duplicate: the same document entered twice with no changes. It is the easiest rule to build and the easiest one for a resubmitted invoice to defeat, since changing one character in the invoice number clears it.

B. Fuzzy match

Flags an invoice whose amount and vendor match a prior paid record closely, even when the invoice number differs by a suffix, a leading zero, or a transposed digit. This is the rule that catches vendor resubmissions and re-keying errors, which the exact-match rule passes through. It requires a defined tolerance, tested and adjusted, rather than a single hard threshold.

4. When does the control have to run to actually prevent the payment?

A duplicate-payment control has to run before the payment file is released, not after it clears, because a payment recovered after the fact is a collections problem rather than a prevented one. Running the match at invoice entry, then again immediately before the payment batch is finalized, closes the window where an invoice can be approved once and paid twice through two different batch runs.

Two checkpoints, not one, matter here. The first is at invoice entry, where a match against payment history stops an obvious duplicate before it is even approved. The second is immediately before the payment run, which catches a duplicate that entered the queue after the first check but before disbursement.

A control that only checks at entry can still let a duplicate through if the invoice sat in an approval queue for weeks and a second copy was entered in the meantime. A control that only checks before payment catches it later but after approval effort has already been spent twice.

A diagnostic run against historical spend looks at this differently: it identifies duplicates that were already paid, across the periods reviewed, and quantifies what should be recovered. That is retrospective by design and complements, rather than replaces, the forward control.

5. Why does a duplicate survive across multiple AP systems or entities?

A payment-history match only works against the population of payments it can see, and a vendor that bills two plants, two subsidiaries, or two ERP instances separately creates two payment histories that never compare against each other. The invoice looks new in each system because it is new to that system, even though the underlying obligation is the same one billed twice.

This is a visibility problem rather than a matching-logic problem. The fuzzy-match rules described above work correctly within a single AP system; they have no data to compare against when the second copy of the invoice lands in a different system entirely.

Consolidating payment history across entities before running the match closes this gap, but it requires the entities to actually share a common vendor ID scheme, since two systems that name the same vendor differently will not match even with identical invoice numbers and amounts.

Where consolidation is not practical, the check shifts to a periodic cross-entity reconciliation: pulling paid-invoice data from each system on a shared schedule and comparing vendor, amount, and date across the combined set. That is slower than a real-time match but is the only version of the control that reaches a multi-entity vendor at all.

6. How does a diagnostic differ from an ongoing duplicate-payment control?

A diagnostic reviews invoices already paid, over a defined period, and quantifies what should be recovered from duplicates found in that history. An ongoing control runs continuously, testing each new invoice against payment history before it is paid. The diagnostic answers what already leaked; the control answers what leaks next. Both matter, and neither does the other's job.

A diagnostic engagement works backward through 12 to 18 months of historical spend, applying exact and fuzzy matching across the full invoice population at once, which surfaces duplicates that individual approvers never had the visibility to catch one invoice at a time. See freight and 3PL audit and contract labor and staffing audit for two categories where this comes up often, given how invoice volume and vendor count make manual review impractical.

An ongoing control has a narrower job: stop the next duplicate before the payment leaves. It cannot recover what already went out, and a diagnostic cannot prevent tomorrow's invoice from being entered twice.

The two are sequenced, not competing. A diagnostic establishes the size of the historical problem and where it concentrates; the control is what a finance team builds afterward so the same category does not need auditing again next year.

For the wider pattern this sits inside, start with the margin drift guide.

7. Frequently Asked Questions (People Also Ask)

What is the single best control for stopping duplicate payment?

There is no single control. Three-way matching confirms an invoice against its PO and receipt but does not check payment history. Duplicate-payment prevention requires a separate payment-history match, run before disbursement, comparing vendor ID, invoice number, amount, and date across everything already paid.

Can accounts payable software alone stop duplicate payment?

AP automation can run the matching rules described here, but the rules still have to include a fuzzy match on invoice number and cover all entities the vendor bills. Software configured with only exact-match logic will pass through a resubmitted invoice with a slightly altered invoice number.

Why does three-way matching miss duplicate payments?

Three-way matching tests one invoice against its own PO and receipt. It does not compare that invoice to other invoices already paid. A PO with enough open quantity can pass two separate invoices for the same delivery, and each one clears the match independently.

How do vendor resubmissions cause duplicate payment?

A vendor resubmits an invoice that looks unpaid to them, sometimes with a suffix added to the invoice number or a leading zero dropped. An exact-match duplicate check does not flag it because the invoice number no longer matches character for character, even though the amount and vendor are the same.

Does a missed credit memo count as a duplicate payment?

Not literally, but it produces the same financial effect. The original invoice is paid once correctly; a credit that should have offset a later invoice is never applied. See missed credit memo for how that mechanism differs from a true duplicate.

Why do duplicate payments happen more often with multi-plant companies?

A vendor billing two plants or two entities separately creates two payment histories that never compare against each other. Each system sees the invoice as new because it has no visibility into the other system's paid records, even though the underlying obligation is the same.

Can a diagnostic recover a duplicate payment that already happened?

Yes. A diagnostic reviews historical invoices already paid and applies matching logic across the full population at once, which surfaces duplicates individual approvers could not have seen one invoice at a time. It identifies what to recover; it does not prevent future duplicates on its own.

What data does a payment-history match need to work?

At minimum, vendor ID, invoice number, invoice amount, and invoice date for every payment already made, plus tolerance settings for near-matches on invoice number. Without a consistent vendor ID scheme across entities, the match cannot compare records from different systems.

Margin Drift Resources