Remove Duplicate Bank Transactions

Every bank export eventually doubles itself: pending charges that post, re-downloads that overlap, imports run twice. Cleaning by hand is a losing game.

Duplicate transactions don't just look messy — they wreck budgets, inflate spending reports, and break import tools. The catch is they're rarely identical: a pending SQ *COFFEE SHACK becomes a posted charge with a new date and a cleaned-up name.

How Gristmill matches duplicates

  1. Exact matching — same date, amount, and merchant: obvious copies, gone.
  2. Fingerprint matching — amount + tight date window + normalized merchant: catches the pending→posted shuffle.
  3. Pending-awareness — pending rows lose to their posted twins instead of the other way around.

How to dedupe your export

  1. Drop your OFX/QFX/CSV into the cleaner.
  2. Keep “remove duplicates” checked (it is by default).
  3. Download — the stats line tells you exactly how many were cut.

Matching happens on integer cents with a normalized merchant key, so $45.30, -45.3, and (45.30) all agree they're the same money.

Clean your export now — free, no signup →
🔒 Everything runs in your browser. Files never leave your device.