PRIVATE, LOCAL-FIRST WORKFLOW

Find a duplicate vendor payment before you write it off.

Upload your accounts-payable payment history as a CSV and get a short list of likely double payments to review — the same kind of check a duplicate-payment recovery audit firm sells, run yourself, for free, on files that never leave your browser.

1. Payment ledger CSV

Needs a vendor, amount, and date column. Common names like vendor, amount, and payment_date work automatically. An invoice_number or similar reference column is optional but sharpens the check.

No export handy? — an eleven-row ledger carrying one of each thing this tool looks for.

Two payments to the same vendor, for the same amount, landing within this many days of each other are flagged for review even with no invoice-number match.

Common questions

What counts as a likely duplicate payment here?

Three patterns: the same vendor and invoice number paid twice for the same amount (an exact duplicate submission), the same vendor and invoice number paid twice at different amounts (a possible partial payment or data-entry error), and the same vendor and amount paid under two invoice numbers that are nearly identical or that land close together in time. Each flagged pair says which pattern matched and why.

Will this flag legitimate recurring payments as duplicates?

It can, and it says so on that specific row. Rent, subscriptions, and retainers are the same vendor and the same amount by design, which is exactly the pattern the same-amount/near-date check looks for. Those rows are labeled "review", the lowest confidence tier, and the tool tells you to check whether the vendor is paid this amount on a regular schedule before treating it as a duplicate. The higher-confidence tiers (an exact invoice-number match, or two invoice numbers that look like a typo of each other) are far less likely to be a legitimate recurring charge, because a real recurring bill is issued under a new invoice number each cycle.

Does this submit a refund request or contact my vendor?

No. It only reads the CSV you choose and produces a list of pairs to review, plus a downloadable CSV of the same list. It does not contact a vendor, file a dispute, request a credit, or take any action on your behalf — you decide what to do with each flagged pair.

Is this the same as hiring a duplicate-payment recovery audit firm?

No. Recovery-audit firms typically work large enterprise AP ledgers on a contingency fee, taking a cut of whatever they help recover. This is a free, one-time, self-serve check of a CSV you already have, aimed at businesses too small for that kind of engagement. It finds candidates for you to verify yourself; it does not investigate, negotiate, or recover anything.

What columns does my CSV need?

A vendor name, a payment amount, and a payment date, using common header names such as vendor, amount, and date (payment_date, paid_date, and similar variants are also recognized). An invoice or reference number column sharpens the check considerably but is optional.

What if my export doesn't have an invoice number column?

The tool still runs, using only the same-vendor, same-amount, near-date check, and says so in the results. Add an invoice or reference column to your export if your accounting system can include one — it is what makes the exact-duplicate and near-duplicate-invoice checks possible.

Are my payment records uploaded anywhere?

No. Everything runs in your browser; the CSV never leaves your device. The optional usage counter records only that a check ran, not any vendor names, amounts, dates, or file contents.

Already checking your export by sorting a spreadsheet and scanning for repeats? See how this tool differs from a manual spreadsheet check — it catches an invoice-number typo and a payment weeks apart that a vendor sort would not.

Already considering a full recovery audit from a firm like PRGX? See how this one-time CSV check differs from PRGX's contingency-fee audit across an entire company's supplier spend.

Wondering why a payment gets flagged even when the amount doesn't match? See why the same invoice number at two different amounts still gets flagged for a worked example.