Accounts & importing
How keel handles duplicate transactions
Why re-importing the same statement is safe and what gets skipped.
If you upload the same statement twice, or import overlapping date ranges, keel won't create duplicate transactions. Re-importing is safe and expected — downloading "last 3 months" from your bank every month, with two months of overlap each time, just works.
How it works
Every transaction gets a fingerprint built from its account, date, amount, and merchant name. On import, keel compares each incoming row against what's already in your account:
- Matches a transaction already in your account — skipped silently. It's the same transaction; nothing new to add.
- Two genuinely identical rows on the same statement — both kept. Two identical foreign-transaction fees on the same day, or a second fuel top-up for the same amount, are real separate transactions, and keel keeps both.
The import summary tells you what happened: "56 imported · 3 skipped (already existed)". If every row is a duplicate, you'll see "No new transactions found — these transactions are already in your account."
Good to know
- Duplicates are matched on date, amount, and merchant name — not on where they sit in the file. So the same transaction is recognised even if your bank exports it in a different order next time.
- keel only skips a row when it matches a transaction already imported. Repeated identical lines within one statement are never collapsed into one.
FAQ
I uploaded the same file twice by accident. No problem — all the duplicates were skipped, and the summary will say so.
Why were some transactions skipped? They matched transactions already in your account by date, amount, and merchant name.
My statement had two identical charges on the same day — will keel drop one? No. Genuinely identical lines on the same statement are both kept. keel only skips a line when it matches something already imported.