4 min

5 Feb, 2026

Duplicate Bank Transactions After a CSV Import: Causes and Fixes

20.png

By Manvinder Sidhu, Co-founder, Ezyiah

Short answer: Duplicate bank transactions after a CSV import almost always happen because a manual import and a bank feed covered the same days. The feed reconnected and backfilled transactions you had already imported. To fix it, confirm the overlap window, compare each pair, keep the copy that's reconciled and correctly coded, and delete the other. If an entire statement was imported twice, delete that statement. To stop it happening, import only the dates after the feed's last transaction, and record every import's date range.

What causes duplicate transactions after a CSV import?

Bank feeds and CSV files don't know about each other. When a feed drops out, it doesn't stop at a clean line. When it reconnects, it backfills from the last point it's sure of, which is often earlier than where your CSV started. Your accounting software sees two lines with similar dates and amounts and treats them as two transactions.

Three situations cause almost all duplicates:

  1. Feed backfill overlap. A CSV was imported during an outage and the feed later reimported the same days.
  2. Overlapping exports. Two CSV exports with overlapping date ranges were both imported.
  3. Double upload. The same statement period was imported twice by mistake.

All three come from the same root cause: nobody fixed the boundary of what was being imported.

How do duplicates affect GST and the BAS?

A duplicate doubles its effect on expenses, GST on purchases or GST on sales. It gets worse when the two copies are coded differently, which is common because a CSV line often defaults to a different tax rate from the feed line. Reconciliation won't catch it. A matched duplicate still reconciles, because reconciliation checks the ledger against the bank, not the GST. The BAS is where it shows. If a duplicate has already flowed into a lodged BAS, see the ATO guidance on fixing BAS mistakes. Reporting a sale twice is a credit error that can usually be corrected in a later BAS.

How do you remove duplicates without creating a new mismatch?

  1. Confirm the window. Find the dates the feed was down and the date range of each import.
  2. Pair them up. Match lines by date, amount and payee against the bank statement itself.
  3. Check the GST code on each copy. Keep the one coded correctly.
  4. Keep the reconciled copy. Deleting the reconciled line unwinds a match and can throw the balance out. Remove the unreconciled duplicate.
  5. Delete whole statements carefully. If an entire file was imported twice, Xero lets you delete an imported statement. See Delete a bank statement. Deleted statements can't be restored, so check first.
  6. Re-check the balance and the GST report for the period.

Why do quarterly bulk imports make it worse?

Importing a whole quarter in one go removes every chance to catch a problem while it's still one line. A wrong default tax rate repeats across every transaction of that type in the file. A date format problem can push a run of transactions into the wrong period. A feed that later overlaps the import creates duplicates across a wide window. Bulk review is fine. Bulk import with no checkpoint is where errors compound. Import more often, confirm date ranges before each upload, and review GST codes across the whole file, not by spot check.

How Ezyiah helps

Ezyiah is an AI bookkeeper with its own ledger. It pulls live bank feeds daily, and when there's a gap you can upload up to five CSV or PDF statements at once into the same books. Ezyiah reconciles them with AI, AI Memory applies your past coding, and Scan Similar Transactions fixes a repeated miscoding across the file in one go. The BAS builds from the same books, so a duplicate shows up in the numbers during the quarter, not on the due date. Your accountant reviews and approves the BAS before lodgement.

See how it compares with Xero and QuickBooks, or how it works for business owners and accounting firms.

Frequently asked questions

Why does Xero show the same transaction twice?

Usually because a CSV import and the bank feed both covered the same dates. Check the import's date range against when the feed reconnected.

Which duplicate should I delete?

Keep the copy that's reconciled and correctly coded, and delete the other. Check the GST code on both before deleting.

Can duplicates change my BAS?

Yes. A duplicate can double GST on sales or purchases, even when the reconciliation balances.

How do I stop duplicates when a bank feed goes down?

Import only the days after the feed's last transaction, record the range, and compare the feed's first recovered days against your import before reconciling.

Related reading

Other Reads