How to Avoid Duplicate Transactions When Importing into QuickBooks

Most duplicate transactions in QuickBooks come from one thing: importing a CSV that has no unique ID per transaction. The fix is to give every transaction a stable FITID by converting your file to .QBO first, then QuickBooks recognizes what it has already imported and skips it.

Why CSV imports create duplicates

A plain CSV is just rows of date, description and amount. It carries no identifier that QuickBooks can use to tell one transaction apart from another. So when you re-import a file, or two months overlap by a few days, QuickBooks has no way to know it already has those rows. It imports them again, and your register doubles up.

This is the single most common cause of duplicate bank transactions for people who map columns manually each month. The deduplication logic simply isn't available for raw CSV: there is nothing unique to match on. The format that fixes this is .QBO (a flavor of OFX), because every transaction inside it gets a FITID.

What a FITID actually is

FITID stands for Financial Institution Transaction ID. It's a field inside the OFX/QBO standard that uniquely identifies a single transaction within one bank account. In the file it looks like this:

<STMTTRN>
  <TRNTYPE>DEBIT</TRNTYPE>
  <DTPOSTED>20260115</DTPOSTED>
  <TRNAMT>-42.18</TRNAMT>
  <FITID>20260115-4218-AMZN-0007</FITID>
  <NAME>AMAZON MARKETPLACE</NAME>
</STMTTRN>

When QuickBooks imports a .QBO file, it stores every FITID against that account. On the next import it compares incoming IDs to what it already has and silently skips anything it has seen before. That's the whole mechanism, no manual review of duplicates required.

The golden rule: FITIDs must be unique AND stable

For deduplication to work, a FITID has to satisfy two conditions:

A good converter builds FITIDs from the stable parts of each row, the posting date, the exact amount, and a hash of the description, so the same transaction always produces the same ID, while genuinely different transactions don't collide.

How QBO Maker generates FITIDs for you

You don't have to construct any of this by hand. Upload your bank's CSV or Excel export to the converter, map the date, amount and description columns once, and QBO Maker writes a valid FITID for every transaction automatically. Everything runs in your browser, the file never leaves your computer.

Because the IDs are derived deterministically from each row, re-exporting the same statement produces identical FITIDs, which is exactly what lets QuickBooks deduplicate. If your bank already includes a reference or check number column, you can point the tool at it so the ID is anchored to the bank's own identifier. See the full walkthrough in importing CSV into QuickBooks Online.

Other ways duplicates sneak in (and how to stop them)

Quick checklist before every import

  1. Export the CSV/Excel from your bank for the period you need.
  2. Convert it to .QBO at qbomaker.com so each row gets a FITID.
  3. Confirm the file looks right with the OFX/QBO validator before importing.
  4. Import into QuickBooks, previously seen transactions are skipped automatically.
  5. Keep one import method per account and avoid overlapping date ranges.

Follow those five steps and duplicate transactions stop being a monthly cleanup chore.

Frequently asked questions

Does QuickBooks remove duplicates from a CSV automatically?

No. A raw CSV has no unique transaction ID, so QuickBooks cannot tell repeated rows apart and will import them again. Convert the file to .QBO first so every transaction carries a FITID that QuickBooks can match against what it already has.

I already imported duplicates. How do I clean them up?

In QuickBooks Online, open the Banking / Transactions screen, find the duplicated entries (often visible in the For Review or Categorized tabs), select them and exclude or delete the extras. Going forward, import a .QBO with FITIDs so the problem doesn't recur. See our QuickBooks Online import guide.

Will the same FITID work across two different bank accounts?

FITIDs only need to be unique within a single account. QuickBooks tracks them per account, so the same ID in two separate accounts won't cause a problem. The rule that matters is no collisions inside the same account.

What if my bank export has no reference or check number?

That's fine. QBO Maker builds a stable FITID from the posting date, exact amount and a hash of the description, so even reference-less exports deduplicate correctly, as long as you don't edit those fields between exports.

Does this also work for Quicken or other accounting software?

Yes. FITIDs are part of the OFX standard, so the same approach works for .QFX (Quicken) and generic .OFX files. See CSV to QFX and CSV to OFX.

Convert your statement now

Free, in your browser, nothing uploaded.

Open the converter

Related