Fidolio → Features

Importing statements

Fidolio reads Fidelity account-history and Merrill Edge account-activity exports, detects which is which from the file itself, and classifies every row — buy, sell, dividend, reinvestment, interest, fee, transfer. Overlapping exports are safe to re-import: anything already stored is skipped.

Fidolio's Import screen, explaining the accepted export formats above an empty import history

Importing is a task, not a place — you do it a few times a year when a statement lands — so it lives one tap from the Positions screen rather than taking a permanent slot in the navigation.

Two brokers, one shape

Every parser normalises its file into the same row shape, so nothing downstream knows or cares which broker a transaction came from. The header row identifies the format, which means you never choose one; the matched format is named in the preview before anything is written.

Merrill’s export differs from Fidelity’s in nearly every detail that matters, and each difference is handled deliberately:

Importing the same file twice does nothing

Neither broker issues transaction IDs, so identity is the row itself: a hash over the date, account, action, symbol, quantity, price, amount, fees and commission, plus an occurrence counter that distinguishes genuinely identical same-day trades. Any pair already stored is filtered out. A whole-file checksum short-circuits re-importing the exact same download.

The practical consequence: you never have to remember which date range you last imported. Export everything, import it, repeat next quarter.

Reconciling against what you actually hold

Because the history only reaches back so far, a long-held position’s share balance can simply be wrong — the old buys are in no file you can download. Fidelity’s portfolio-positions export says what you hold right now, and Fidolio takes it through the same picker (it is recognised by a column no account history has).

Everything it will do is computed and shown as an itemised preview before anything is written, because this is the one import that creates transactions you never typed:

Re-applying the same snapshot is a no-op by construction: every adjustment is a delta against the balance as it stands now.

Typing one in

Anything the files cannot supply can be entered by hand — a backfilled purchase, an opening balance, a correction. Manual rows are editable and deletable afterwards, where imported ones are immutable, and they carry the same identity hash, so a statement that later reports the same trade is recognised as the duplicate it is.