What is a FITID, and why you keep getting duplicate transactions
QuickBooks and Quicken both have good duplicate detection. It depends entirely on one field, and converters get that field wrong more often than they get it right.
What it is
FITID is the Financial Institution Transaction ID: a string, unique within an account, identifying one transaction. Every transaction in an OFX, QBO or QFX file carries one.
On import, the software checks whether it has already seen that FITID on that account. If it has, the transaction is skipped. That is the entire duplicate detection 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.
A converter that derives each identifier from the transaction itself produces the same file every time from the same statement, which is the property duplicate detection actually needs.
Why converted files duplicate and bank files do not
A bank generating its own file has a natural FITID: its internal reference for that transaction, stable forever. A converter reading a PDF has no such thing and must invent one. Whether re-importing is safe comes down entirely to how.
- Derived from a timestamp or a random number: changes on every conversion. Convert the same statement twice and the software sees two entirely different sets of transactions.
- Derived from a row counter: changes whenever the row order or count changes. A re-conversion that picked up one extra row shifts every identifier after it.
- Derived from the transaction’s own content — date, amount, description, account: identical every time. This is the only version that works.
The two-minute 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 nothing you do at the QuickBooks end will prevent it.
The other duplicate source: two feeds
If an account is also connected to your bank directly, the live connection and your imported file are two separate sources for the same transactions, with two separate sets of identifiers. The bank’s own FITIDs will never match a converter’s, so both sets land.
Import files only for periods the connection does not cover. Most connections reach back around ninety days; anything older is where a converted statement earns its place.
What a stable FITID cannot fix
Two genuinely identical transactions on the same day — a pair of matching fees, two identical transfers — will hash to the same content and therefore the same FITID, and the second will be skipped as a duplicate when it is not one.
A good implementation disambiguates by adding an occurrence counter within the day, so the first and second identical transactions differ while remaining stable across conversions. It is worth checking your converter handles this if your statements contain repeated identical amounts.
Matched is not the same as accepted
A transaction that reaches the banking feed and sits there unaccepted has still been recorded as seen. Its FITID is remembered, so re-importing the same file will not bring it back a second time — which surprises people who excluded a batch intending to re-import it more carefully.
Excluding from the feed and deleting from the register are different operations with different consequences, and only one of them is easily reversed. Work in the feed while you still can.
Changing converter mid-year
Two converters will not produce the same identifiers for the same transactions, because there is no standard for deriving one — each picks its own scheme. So switching tools partway through a year makes every subsequent import look entirely new to QuickBooks, including any period that overlaps what you already imported.
This is not a reason to avoid switching. It is a reason to switch at a period boundary, and to check the date range of the first file from the new tool before importing rather than after.
Related
Duplicate transactions after importing a QBO file
Why the same transactions appear twice after a Web Connect import, what FITID has to do with it, and how to clean up without deleting the wrong things.
ReadQBO vs QFX vs OFX vs QIF: which one does your software need?
Four formats, three of them nearly the same file with different requirements. What separates them, and which your accounting package will actually accept.
ReadThe OFX format, explained for accountants
OFX is the format underneath QBO and QFX, and the one most non-Intuit software accepts. What it contains, how to read one, and why it needs no bank ID.
Read