You're reconciling the expense claims queue for the month and a name catches your eye — not because anything looks wrong, but because you've seen that exac

06/10/2026

Rule of the week: Duplicate Expense Claims

You're reconciling the expense claims queue for the month and a name catches your eye — not because anything looks wrong, but because you've seen that exact figure before. $184.50, taxi, last Thursday. You scroll back through the approved batch from three weeks ago and there it is again: same employee, same amount, same date, "Cabcharge" instead of "13cabs". Two claims, one trip, both paid.

This is the quiet failure mode of expense reimbursement. It's rarely fraud. More often it's an employee who submitted a claim on their phone from the back of the taxi, forgot they'd done it, then did the expense report properly a week later from their laptop — pulling in the same receipt from a forwarded email. Or two claims got filed under slightly different merchant names because the point-of-sale system and the card statement describe the same vendor differently. Nobody is lying. But nobody catches it either, because the two claims sit in different batches, approved by different managers, weeks apart.

A worked example

Say Priya submits a claim on 14 March for $412.00, "Qantas Club — Sydney", paid against report EXP-2024-0091. Her manager approves it the same week. On 2 April she submits a second expense report for a prior trip and includes a line for $412.00, "Qantas Club Lounge", dated 14 March, as part of a bundled claim with six other line items. The second manager, reviewing six items at once, approves the batch without cross-checking against reports from three weeks earlier — why would they. Both claims get paid. The business is out $412.00, and nothing in either report looks wrong in isolation.

How to find it manually

Export all approved expense claims for the period you're reviewing — ideally a full quarter, since duplicates often straddle reporting cycles. You want at minimum: employee name, amount, claim date (the date of the expense, not the submission date), merchant description, and report ID.

Sort by employee, then by amount. This surfaces exact-amount duplicates immediately. Scan for the same employee with the same dollar figure appearing more than once within a reasonable window — a few weeks either side is usually enough, since most duplicate submissions happen within that gap.

Then do a second pass sorted by employee and date, because some duplicates use rounded or slightly adjusted amounts (one claim at $412.00, another at $411.95 if a card surcharge was added). This pass is slower and needs judgement — you're eyeballing near-matches, not exact ones.

For each candidate, check the merchant field. "Qantas Club", "Qantas Lounge Sydney" and "QANTAS AIRWAYS" are plausibly the same vendor described three different ways by three different systems. This is the step that can't be fully mechanised with a simple formula — you need enough domain knowledge to know which merchant name variants are genuinely the same business and which just look alike.

Be honest about the cost of this: for a business with more than a handful of expense-claiming employees, a proper quarterly duplicate check is a half-day job done well, and it needs someone who already knows the merchant landscape — a new bookkeeper on the file won't spot "Cabcharge" and "13cabs" as the same thing without asking.

FAQ

Why are duplicate expense claims a red flag rather than just an error? Because unlike a typo or a miscoding, a duplicate claim results in an actual duplicate payment leaving the business. It's the one expense-claim error with a direct cash cost, which is why it's worth a dedicated check rather than being caught incidentally during general review.

What counts as a duplicate if the merchant name doesn't match exactly? Same employee, same amount (or near enough allowing for rounding), same or adjacent date, and a merchant description that a reasonable person would recognise as the same vendor. Exact string matching misses most real duplicates — that's the hard part of doing this by hand.

How the rule does it

EXP-005 runs the same employee/amount/date/merchant comparison across all reports automatically, but it will miss duplicates that cross a significant time gap beyond its matching window, and it can flag genuinely separate expenses that happen to share an amount and rough date by coincidence — so flagged items still need a human look, same as a manual review would. Within its window, it catches what the manual method catches, continuously, without needing someone to remember to run the export.

Finanomaly is currently waitlisted.