
What’s Actually Happening
You export a bank statement as a CSV file because the bank feed stopped syncing or transactions were delayed. You upload it into Xero, reconcile, and everything looks fine. Then a few days later the bank feed catches up and suddenly you’re seeing duplicate bank transactions in the same period.
When accountants search “duplicate bank transactions after CSV import” or “CSV import creating duplicates in Xero,” it’s almost always because manual uploads and automatic feeds overlapped. The system doesn’t know which entry was the original and which one came later. It just sees two transactions with similar dates and amounts.
The reconciliation might still look clean if you match one and leave the other sitting there. But the ledger is now distorted, and that distortion flows straight into GST reporting and BAS figures.
Where It Breaks
Duplicates usually happen in one of three situations. First, a bank feed disruption leads to a manual CSV import, and then the feed resumes and imports the same transactions again. Second, multiple CSV exports are merged or uploaded without checking date ranges properly. Third, the same statement period is uploaded twice by mistake.
The real issue is not just visual clutter. Duplicate transactions affect GST coding, expense totals, and BAS reporting. If one duplicate is coded with GST and the other is coded differently, the BAS report in Xero will shift. Even if reconciliation appears complete, the GST on purchases or GST on sales can be overstated.
Deleting the duplicate without checking how it was treated can also cause new mismatches, especially if one entry was reconciled and the other wasn’t.
The Takeaway
If you see duplicate bank transactions after a CSV import, don’t just remove them quickly to tidy the screen. First confirm whether the bank feed has re-imported the same period. Review transaction dates carefully and check GST tax codes applied to each duplicate before deleting anything.
CSV imports are a useful fallback when bank feeds fail, but they need clear boundaries. Always confirm the exact date range you’re uploading and check feed activity before importing. If you control the import properly, reconciliation and BAS reporting stay stable. If you don’t, small overlaps turn into reporting errors later.




