Formats
CSV, OFX and QFX. Most banks export at least one. OFX and QFX carry more structure and generally need less mapping; CSV is universal but you may need to tell DohFlow which column is which the first time.
Recognized apps skip the mapping step. For a growing list of budgeting and finance apps’ own CSV exports (starting with YNAB), the Import dialog offers an “Import from” choice that already knows the column layout — pick it and DohFlow fills in the mapping automatically, with a chance to review before anything commits.
How import works
Files move through five stages: parse → stage → dedupe → review → commit.
Nothing enters your ledger until you approve it. You see exactly what will change before it changes.
Raw file bytes are never persisted. The file is parsed into staged rows and the bytes discarded — your bank export does not sit inside the app’s storage waiting to be found.
Duplicates
Overlapping date ranges are normal and you should not be punished for re-importing. Suspected duplicates surface in review with the existing transaction shown alongside, so you decide with both visible.
If a duplicate slips through, delete it — the ledger is append-only internally, so the correction is recorded rather than the history being rewritten.
Categories on import
Merchant memory applies what you have already taught it. Confident matches are applied; unsure ones go to the Money Inbox rather than being guessed silently.
Using an aggregator DohFlow has no direct adapter for
If your bank comes through an aggregator like LunchFlow rather than SimpleFIN, see Connecting a bank aggregator DohFlow has no adapter for — two routes that work today with no adapter needed.
If a CSV will not parse
- Check it is a real CSV, not an
.xlsrenamed - Look for a header row — DohFlow needs column names
- Some banks export dates as
DD/MM/YYYY; confirm the mapping matches - Still stuck? Open an issue with the header row and one fake row — never real transactions