
Import data
Bring transactions in from a bank statement or from another finance app's export. Everything is read on this device; nothing is uploaded.
What you can import
- QIF — QIF interchange files, including multi-account files with transfers and splits.
- OFX / QFX / QBO — Open Financial Exchange downloads, v1 and v2, bank and credit-card statements (legacy OFC files too).
- CSV — any delimited text, through a Came from preset or the manual column mapper.
- XLSX / XLSM spreadsheets — read like CSV; a Sheet chip row appears when the workbook has several sheets.
- MT940 — SWIFT statements.
- CAMT.053 — the ISO 20022 statement format (camt.052 and camt.054 files are read too).
Files are decoded from their bytes — UTF-8, UTF-16 and Windows-1252 all work, and a hint under the text box says which encoding was used. A file over about 200 KB, or any spreadsheet, shows as a Loaded … chip instead of filling the text box.
A .anmoney backup from the original 2014 app is not a statement: restore it as a new book from More → Backup & restore or from the welcome screen's Restore from backup. The same goes for .db and .amdb book files.
Steps
The badge in the top-right (Step N of M · label) tracks where you are. CSV and spreadsheet files add a Map columns step; every other format goes straight from Source to Accounts.
- Source — leave Parser on Auto-detect or pick one, then Pick a file… or paste under Or paste contents, and tap Parse. For QIF the Date order (YMD / DMY / MDY) and Decimal mark chips appear. They start from your device's convention; when the file's own dates only make sense one way, the order is taken from the file and a hint says so.
- Map columns (CSV / spreadsheets) — say where the file Came from or map the columns by hand, then Apply mapping. See Coming from another app.
- Accounts — one card per account named in the file; pick where each one lands, then Review N rows. See Accounts.
- Review & confirm — the rows that will be written, grouped by account when the file has several. Tap a row to skip or include it; Include all, Skip all and the duplicate buttons act on every row at once, including those past the 100 shown. Above the table: warnings from the reader, Notes from the file (what happened to transfers, splits and opening balances), N rows could not be read with line numbers, and the range / income / expense / payee totals. Import N rows commits.
- Done — the banner counts what was written (rows, linked transfer pairs, splits, skipped duplicates, created accounts) and offers Undo import and Past imports. Done takes you to the transactions list.
Start over under the wizard clears everything and returns to Source without leaving the screen; the parser choice is kept.
Coming from another app
On the Map columns step the Came from row names the app or bank whose layout the header row matched (tagged detected) and maps every column for you. Tap Change to open the searchable picker, grouped Apps, Banks and Other:
- Apps — several popular budgeting and personal-finance apps. Type the app’s name into the search to find its layout.
- Banks — CSV exports from a number of banks, mostly in Germany and Switzerland. Type your bank’s name into the search.
- Other — another.money, this app's own CSV export, so an export round-trips.
A preset marked unverified layout was built from the provider's documentation rather than a real export: check the preview carefully and fall back to Custom if a column lands wrong. A preset also sets the Date order and Decimal mark chips; both stay editable because many apps export in the device's locale.
Custom is the manual mapper. Each field is a row of chips naming the file's columns, in three groups:
- Required — Date plus either a signed Amount or the Outflow / Inflow pair.
- Common — Payee, Category, Notes, Account, Transfer account, Status.
- More fields — Category group, Classification 1 / 2, Number, Type (sign), Currency, Fee, Tags, Void, Bank transaction ID. Collapsed until one of them is mapped.
Skip leading lines drops title or preamble lines above the header (many bank exports have them); it is pre-set from the row that looks like the header. With First row is a header off, the chips read Column 1, Column 2, … instead of names. Type (sign) negates rows whose cell says expense, debit or withdrawal (or the same word in German, French, Italian, Spanish or Dutch). Once you apply the mapping, the data votes on the date order and decimal mark; an unambiguous vote overrides the chips and a hint says so.
A file without a header row never auto-detects — pick its preset from the list by hand.
Accounts
The file names its accounts — a QIF account block, an OFX statement, a CSV Account column — and every account named only as a transfer target gets a card too, tagged transfer target only. Each card shows the row count, how many rows carry a bank ID, and what the file says about the account: type, currency, opening balance.
- Target — an existing account (best matches first: same name, then same currency; + shows the rest) or Create new account.
- Create new account — the name is editable (prefilled from the file); the type follows the file's hint (Bank when there is none), the currency the file's code or else the book's currency, and the opening balance comes from the file. The account is created when you tap Import, inside the same undoable step.
- Remembered — after a successful import each source → account choice is stored on this device and pre-selected the next time a file names the same account. Without a memory, the card pre-selects an account with the same name, then — for single-account files — the account your last import went to. In an empty book every source defaults to Create new account.
- Currency mismatch — when the file states a currency that differs from the account's, the card warns File says EUR, account is CHF. Amounts are imported as they are, without conversion.
Every account with rows needs a target before Review opens. A transfer target only card may stay unmapped: its transfer legs are then imported as plain rows with the account name as the payee.
Transfers between two accounts in the same file are written as one linked pair, never as two separate rows. When only one leg is in the file, the partner leg is created in the mapped account. If both legs would land in the same account, they stay two plain rows. Rows named Opening Balance (also Starting Balance and the German / French spellings) are not imported as transactions: they become the opening balance of an account you create; for an existing account they are dropped, and Notes from the file says so.
Duplicates
Two kinds, two tags, two defaults:
- duplicate — the row's bank ID (OFX
FITID, the CAMT or MT940 reference, a mapped Bank transaction ID column) already exists in the target account or appeared earlier in the same file. These are skipped by default; tap the row to force-import it, for example when a bank reused an id on a fresh export. - probable duplicate — a row without a bank ID that matches a transaction already in the same account: same amount, same payee, date within 3 days. These stay selected; tap a row or use Skip N probable duplicates to leave them out.
Both checks look at the account you mapped, so a Create new account target has no history to compare against — only the within-file check applies there. Importing the same bank file twice therefore adds nothing; importing a re-export without bank IDs tags every row as probable.
Status after import
Imported rows count toward your balances, running balance and budgets as soon as the import is committed. They also land in the Imports to review filter of the transactions list (Filters → Imports), which works as a to-do list: check the rows there, then select them and tap Mark reviewed — or Mark all reviewed in the strip above the list — and they leave the filter. Marking rows reviewed never changes a balance. The done banner's Review them button opens the list on that filter.
The reconciliation status follows the source file: bank-booked rows (CAMT.053, MT940) and rows your old app had marked cleared arrive as Cleared; pending bank entries arrive as Pending; everything else starts as Entered. Imports never create Reconciled rows — that state is reserved for statements you balance here. A row the file marked void keeps its void tag.
Categories are always imported and created when the book lacks them; payees become payee rows, so they show up in pickers and autofill. Import classifications is on by default only when this book already names a classification. Turn it on for a file that carries values on an unnamed classification and committing names that classification with the generic label (Classification 1 / 2) so the values stay visible — rename it afterwards in Book settings.
Undo and past imports
An import is one step: the accounts it created, the categories and payees it added and every row are written together and undone together. Undo import in the done banner reverses all of it and says so (Import undone). Later, More → Past imports lists every import with its date, counts and accounts and lets you remove one — see the help on that screen.
Known limitations
- Investment sections (QIF
!Type:Invst, OFX investment statements) are skipped with a warning; only cash-like accounts import. - CAMT batch entries — an entry that bundles several transactions (salary runs, card settlements) imports as one row for the batch total.
- MT940 details — the
:86:text is kept whole as the payee; its structured sub-fields are not split out yet. - Spreadsheets — only
.xlsx/.xlsm. Save legacy.xls,.odsor.numbersfiles as.xlsxfirst. PDF statements, zip archives and database files cannot be read. - Header-less CSV needs its preset picked by hand.
- Currencies are never converted: a file in another currency puts its amounts as-is into the account you pick.
- The review table shows the first 100 rows; use the bulk buttons for the rest.
- Remembered account mappings live on this device only — they are not part of the book and do not sync.
Tips
- When your bank offers camt.053 downloads, prefer them over CSV: they carry bank IDs, so re-imports skip cleanly.
- Files from this app's own Export to CSV re-import through the another.money preset with status, number and classifications intact.
- Read the N rows could not be read list before committing — each entry names the line and the reason (unreadable date or amount), so you can fix the file and Parse again.
- Every sign wrong usually means a Type (sign) column or an Outflow / Inflow pair the mapping missed; every magnitude wrong means the Decimal mark.
- Pasting a few lines is the quickest way to check how a new file reads before you pick the whole thing.