Skip to main content
Bankflow

Free tool

Find duplicate transactions before they are imported twice.

Find transactions that appear in more than one export and download one clean list.

Read in your browser. Never uploaded.

Formats can be mixed: a bank CSV and a converter's QBO compare directly.

How a match is decided

Not every repeat is a duplicate, so each kind of match is labelled and handled differently.

In more than one file

The same date, the same amount to the cent, and the same description once punctuation and case are ignored, in two different files. That is what an overlapping download looks like, so the later copy is removed unless you untick it.

Same bank transaction id

OFX, QBO, and QFX files give each transaction an id, the FITID. When two rows carry the same one, they are the same transaction whatever else differs, and the extra copy is removed.

Repeated inside one file

Two coffees at the same price on the same day are two coffees. A repeat inside a single file is shown so you can check it against the statement, and kept unless you say otherwise. Rows with different bank ids are not flagged at all.

A few days apart

The same amount and description within three days, in different files, is often one transaction exported while pending and again once posted. These are shown for review and never removed on their own.

Where the files overlap

For every pair of files, the dates both of them cover, from their first and last transactions. It tells you which download to trim next time.

One clean list out

The download holds every transaction from every file, oldest first, minus the copies you chose to remove, with a column saying which file each row came from. The net change the removals make is shown before you download.

Questions

Why do I have duplicate transactions after importing bank statements?
Usually because two imports covered the same dates: a 90-day download taken a month after the last one shares two months with it. QuickBooks skips rows whose FITID it has already imported, but a CSV has no such id, so every overlapping row comes in again.
Can I compare a CSV with a QBO file?
Yes. Every file is read into the same date, amount, and description first, so a CSV from your bank and a QBO from a converter are compared like for like. Mix as many formats as you have.
Will it remove two real transactions that look the same?
Not by default. Identical rows inside one file are kept, because that is what two genuine purchases look like. Only copies in different files, or with the same bank transaction id, are removed unless you untick them.
How does QuickBooks decide a transaction is a duplicate?
For a QBO, QFX, or OFX import, by the FITID on each transaction: an id it has already imported for that account is skipped. That is why a converter that writes new ids each time produces duplicates on re-import, and why a CSV upload has no protection at all.
What does the downloaded CSV contain?
Date, description, memo, amount, bank reference, and the source file name for every row that was kept, sorted oldest first. The Bank CSV Formatter turns it into your accounting software's layout.
Are my files uploaded?
No. They are read and compared in your browser. Nothing is sent to Bankflow or anyone else.

Related: finding missing months, formatting the result for QuickBooks or Xero, and importing years of history.

Stop duplicates at the import

Bankflow marks a statement that repeats transactions you have already imported as a duplicate and holds it back, and writes stable transaction ids into every QBO it exports.

50 free page credits · No card