What you are seeing
Every transaction from the imported period appears twice in the banking feed.
Duplicates after a QBO import are almost always a FITID problem. QuickBooks does have duplicate detection, it is good, and it depends entirely on one field that converters get wrong more often than they get right. The other common cause is two sources — a file and a live bank feed — covering the same dates.
How QuickBooks decides something is a duplicate
Every transaction in an OFX or QBO file carries a FITID — a Financial Institution Transaction ID. It is the transaction’s identity as far as Web Connect is concerned. When transactions are added or matched, QuickBooks stores their IDs, and on the next import it skips any ID it has already seen on that account. Intuit’s own help article on the Desktop message "Nothing imported" describes exactly this: the same IDs cannot be imported twice.
For the file itself, that is the entire mechanism. It does not compare dates, amounts or descriptions. Two transactions with the same FITID are the same transaction; two with different FITIDs are different transactions, however identical they look.
CSV has no FITID
A CSV upload carries no transaction IDs at all, so ID-based duplicate detection cannot help. Upload the same CSV twice and you get every row twice. QuickBooks Online will still suggest matches against entries already in the register, which is your only protection — read the For review list rather than accepting in bulk.
A converter that generates a stable FITID for every transaction makes re-importing the same period harmless, which is what QuickBooks’ duplicate detection is designed to rely on.
The causes, in order of likelihood
| Cause | What you see | Fix |
|---|---|---|
| Converter makes new FITIDs on every run | A re-converted statement imports in full a second time | Exclude or delete one set; switch to stable IDs |
| Bank feed and imported file overlap | Pairs with the same date and amount but different descriptions | Exclude the imported copies; import only gaps |
| Overlapping statement periods | Duplicates only around the start or end of a month | Check DTSTART and DTEND before importing |
| Same CSV uploaded twice | Every row doubled | Exclude the second batch in For review |
| Bank reissued IDs after a system change | A block of old transactions reappears in the feed | Exclude the reappeared block |
Why converted files duplicate
A bank generating its own QBO file has a natural FITID — its internal reference for the transaction. A converter reading a PDF has no such thing, and must derive one. Whether re-importing is safe comes down entirely to how.
- A FITID derived from a timestamp or a random number changes on every conversion. Convert the same statement twice and QuickBooks sees two entirely different sets of transactions.
- A FITID derived from a row counter changes whenever the row order or count changes — so a re-converted statement that picked up one extra row shifts every ID after it.
- A FITID derived from the transaction’s own content — date, amount, description, account — is stable. Convert the same statement a hundred times and the IDs are identical every time, which is what makes duplicate detection work. It has to be done carefully, so two genuinely identical transactions on the same day still get different IDs.
The test
Convert the same statement twice, open both files in a text editor and compare the FITID values. If they differ, that converter will duplicate every time you re-import, and no amount of care at the QuickBooks end will prevent it.
The other cause: the file and the bank feed overlap
If the account is also connected to your bank directly, the connection and the imported file are two separate sources for the same transactions. FITID matching only helps when both sources use the same IDs, and they will not — your bank’s live-feed IDs are its own.
Import files only for periods the live connection does not cover. Many connections only reach back around 90 days when first set up; anything older is exactly where a converted statement earns its place. Before importing, open the file and read the DTSTART and DTEND tags, then compare them with the date of the oldest transaction the feed brought in.
Cleaning up in QuickBooks Online
Intuit’s guidance is to deal with duplicates in the bank feed, not the register, wherever possible. Excluding is reversible; deleting is not.
- 1Go to Bank transactions (under Transactions, or All apps → Accounting in the newer layout) and pick the account’s tile.
- 2Open the For review tab and sort by date. Work period by period rather than searching for individual amounts.
- 3Tick the extra copy of each pair — keep one to add or match — and select Exclude. Older layouts put this under Batch actions → Exclude Selected.
- 4If both copies have already been added, keep the reconciled one; if neither is reconciled, keep the one matched to other records or carrying attachments. Undo the other from the Categorized tab, then exclude it.
- 5Excluded something by mistake? Open the Excluded tab, tick it and select Undo; it returns to For review.
Cleaning up in QuickBooks Desktop
- 1Back up the company file (File → Back Up Company → Create Local Backup).
- 2Open Banking → Bank Feeds → Bank Feeds Center and review the account. Downloaded items not yet added can be ignored or deleted there without touching the register.
- 3Where both copies are already in the register, open it (Banking → Use Register), sort by date, and delete the copy that is not reconciled. Reconciled entries show a check mark in the cleared column.
- 4Re-run the reconciliation for any period you touched, and confirm the closing balance still matches the statement.
If the import went badly wrong — a whole year doubled — restoring the backup taken before the import is often quicker and safer than deleting hundreds of entries by hand.
Back up before bulk deletion
There is no undo for deleting transactions in QuickBooks. Deleting a reconciled transaction breaks the reconciliation for that period, and QuickBooks will not warn you clearly. If the period is already reconciled, consider whether living with a duplicate marked as such is cheaper than the cleanup.
The opposite problem: "nothing imported"
Stable FITIDs have one consequence people mistake for a bug. If you delete transactions and then try to import the same file again to put them back, Desktop says there is nothing new to import, because it remembers the IDs. Intuit’s own fixes are to restore a backup from before the original import, or to adjust the account details in a fresh file so it is treated as new — a one-time measure, not a habit.
Preventing it
- Use a converter whose FITIDs are derived from transaction content, and verify it with the two-conversion test above.
- Import each period once, and check the date range in the file before importing rather than after.
- Keep imported periods and connected periods apart.
- Never import the same CSV twice; keep a note of which months have gone in.
- Review in the banking feed. Everything is reversible there and almost nothing is afterwards.