Duplicate Transactions in QuickBooks Online: Find & Delete
No account needed for your first conversions. We never store your bank login.
Short answer: Duplicate bank transactions in QuickBooks Online almost always come from one account being fed twice, usually a connected bank feed plus a manual .qbo or CSV import covering overlapping dates. To clear them, go to Transactions, then Bank transactions, open the Categorized tab, select Undo on each duplicate, then tick the copies in the For review tab and choose Exclude. Fix the date overlap before your next import or they come straight back. Last updated July 2026.
Duplicates are the most common mess a bookkeeper inherits after someone imports history into a file that already had a live bank feed. The transactions are not wrong, exactly. There are just two of each, the balance is double-counted, and the reconciliation will not tie. This page covers how to find them, how to remove them safely, the difference between Exclude and Delete (which is not what most people assume), and the one technical detail inside a .qbo file that determines whether QuickBooks catches a repeat import on its own.
Why are my bank transactions duplicated in QuickBooks?
Because the same real-world transaction reached QuickBooks by two different roads. A connected bank feed downloads the last 90 days automatically. If you also import a .qbo file that covers any of those same days, every transaction in the overlap arrives a second time. QuickBooks treats the two roads independently, so nothing warns you until the register balance is twice what the bank says.
| Cause | What it looks like in the register | The fix |
|---|---|---|
| Bank feed connected and a .qbo imported for the same dates | Every transaction in the overlapping window appears twice, identical date, amount and description | Undo and Exclude the imported copies, then shorten the import range |
| The same .qbo file imported twice | The whole file lands again | QuickBooks normally blocks this by transaction ID; if it did not, the IDs changed between exports (see below) |
| You entered a check or deposit by hand, then the feed downloaded it | One manual entry plus one downloaded copy | Use Match on the downloaded copy instead of Add |
| The same real bank account connected twice as two QuickBooks accounts | Duplicates split across two registers | Disconnect the second account, then exclude its transactions |
| CSV history imported, then the feed backfilled 90 days | Only the most recent three months are doubled | Exclude the overlap, keep the older imported months |
What is a FITID, and why does it decide whether you get duplicates?
Every transaction inside a Web Connect (.qbo) file carries a financial institution transaction ID, written in the file as a FITID. QuickBooks stores the FITID of every transaction it has ever imported into an account and refuses to bring the same ID in a second time. That is the entire duplicate protection: not the date, not the amount, not the description, just the ID.
This protection only holds when a given transaction keeps the same FITID every time the file is produced. A .qbo file downloaded straight from your bank does keep it stable, which is why re-importing last month's bank file usually does nothing at all. Files produced by a conversion tool are a different story. Some converters generate a fresh ID on every export, so the second file looks like a batch of brand new transactions and QuickBooks adds all of them.
There is a thirty second test. Convert the same CSV twice, open both .qbo files in any text editor, and compare the lines that start with <FITID>. If the IDs differ between the two exports, treat every file as single use: import it once, keep it, and never import it again. If they match, a repeat import is harmless because QuickBooks will simply ignore it.
How do I find duplicate transactions in QuickBooks Online?
Run a Transaction Detail by Account report for the period in question, then scan for two identical rows. Open Reports, search for Transaction Detail by Account, set the date range to the window you imported, and sort by date. Duplicates show as adjacent rows sharing a date, an amount and a description. The account register (Accounting, then Chart of accounts, then View register) works just as well for a single account.
A faster shortcut when you know roughly when the bad import happened: open Transactions, then Bank transactions, and look at the Categorized tab filtered to those dates. Anything added by an import sits there alongside the feed's own copies, and the pairs are easy to spot because the descriptions are usually formatted slightly differently.
How do I delete duplicate transactions in QuickBooks Online?
- Open Transactions, then Bank transactions, and select the affected account.
- Click the Categorized tab and find the duplicate copies. Remove the ones that came from the import, not the ones that are already reconciled.
- Select Undo in the Action column. Each transaction moves back to the For review tab.
- Open the For review tab, tick the checkboxes for those transactions, and select Exclude.
- They now sit in the Excluded tab. Leave them there. That is the finished state, not an intermediate one.
Work in small batches and re-check the account balance against the bank's balance after each one. If you undo something that was part of a completed reconciliation, QuickBooks will let you, and the reconciliation report will quietly stop matching.
Should I exclude or delete duplicate transactions in QuickBooks?
Exclude, in almost every case. Excluding removes the transaction from your registers and reports and tells QuickBooks to stop pulling it back from the bank feed. Deleting a transaction out of the Excluded tab does the opposite of what the word suggests: QuickBooks no longer has a record that the transaction was accounted for, so the feed is free to download it again on the next refresh.
| Action | What happens | Can the bank feed bring it back? |
|---|---|---|
| Exclude | Removed from registers and financial reports, kept in the Excluded tab as a record | No |
| Delete from the Excluded tab | The record that it was handled is gone | Yes, on a later download |
| Undo (from Categorized) | Returns to For review, still uncategorized | Already present, awaiting a decision |
How do I remove duplicate transactions in QuickBooks Desktop?
Open the account register (Banking, then Use Register, or double-click the account in the Chart of Accounts). Find the duplicate and check the cleared column first. If it shows an R, the transaction is part of a completed reconciliation and deleting it will throw that reconciliation off. If the column is blank, use Edit, then Delete Transaction, or press Ctrl+D.
If the duplicates are still sitting in the Bank Feeds Center and have not been added to the register yet, delete them there instead. Nothing has posted, so there is no reconciliation to disturb and no cleanup afterwards.
Will deleting duplicates mess up my reconciliation?
Yes, if the copy you remove was already reconciled. QuickBooks calculates the beginning balance of each reconciliation from the transactions marked cleared, so pulling one out retroactively changes the starting figure for every reconciliation after it. Always remove the unreconciled copy of a pair. If both copies were reconciled, the reconciliation itself was built on a doubled balance and needs to be undone before the duplicates come out.
Related symptom worth ruling out: if the opening figure looks wrong but you cannot find duplicates, the cause is usually different. See why the QuickBooks opening balance is wrong after an import, because an import never sets an opening balance at all.
How do I stop the bank feed from duplicating transactions?
Give every account exactly one source per date range. That single rule prevents nearly all of it.
- Let the bank feed own recent activity. It typically reaches back about 90 days on first connection.
- Import .qbo files only for the window the feed does not cover, and stop the import the day before the feed's earliest transaction.
- Convert one file per statement period, with no overlapping date ranges between files.
- Use Match rather than Add whenever a downloaded transaction lines up with something you already entered.
- Keep a note of which periods you have imported. Files whose IDs change on each export are unforgiving of a second pass.
Backfilling older history is where most duplicate accidents start, because people import a full year on top of a feed that already covered the last quarter. The safer order is to import older transactions into QuickBooks as one clean file that stops where the feed begins. If the only record of those older months is a PDF statement, convert the PDF statement to a spreadsheet first, tidy the columns, and convert that CSV to a .qbo file for the exact date range you need.
Can you import the same QBO file twice?
Usually nothing happens, which is by design. QuickBooks recognizes the transaction IDs from the first import and skips them, so a second import of a bank-issued file typically reports that no new transactions were found. That message is a good sign, not an error. It only turns into duplicates when the second file carries different IDs for the same transactions, which is what happens with converters that regenerate IDs on every export.
Does QuickBooks automatically detect duplicate transactions?
Only for transactions arriving through the same channel with the same ID. QuickBooks blocks a repeat .qbo import by FITID, and the bank feed will not re-download something you have excluded. It does not compare a manually entered check against a downloaded one, and it does not notice that an imported file overlaps the feed. Those two gaps account for the overwhelming majority of duplicates in real client files.
Cleaning up after the duplicates are gone
Once the register matches the bank, reconcile forward from the earliest affected month rather than jumping to the current one, so any remaining discrepancy surfaces in the month that caused it. A duplicate import is also a reliable sign that nobody has audited the rest of the file, so it is worth running through a full QuickBooks cleanup checklist while you are in there. If the feed itself was the original problem and stopped pulling transactions, that has its own set of causes, covered in what to do when the QuickBooks bank feed is not working.
For the imports themselves, the converter at the top of this page turns a CSV or Excel export into a QuickBooks Web Connect file with the date range you choose, which is the practical way to keep an import from colliding with the feed. Bookkeepers running the same job across many client files each month can convert whole batches at once with the bulk CSV to QBO converter, and the mechanics of getting a finished file into the right company file are in CSV to QuickBooks Online.