Add account
Matched on amount alone, across every account and any date — so these may be unrelated. Opening one keeps this import untouched.
Compare: is this a duplicate?
Matched on amount and description within 3 days. Decide below — nothing is imported until you press Import.
What happens, precisely
This removes the this import added to your books.
They are removed by import, not by what they say — so any you have since renamed, re-priced, re-categorised or tagged are removed as well. Your edits go with them.
It also rewinds updated by this import back to the values they had before you imported it. Anything you changed on since the import is overwritten and cannot be recovered.
Removed transactions leave your balances, reports and budgets straight away. They are held aside rather than erased, so Redo can put them back later — with your edits still on them.
This runs the moment you confirm — there is no review step.
This puts the from this import back into your books, exactly as when you undid it — including any edits you had made to .
It also re-applies this import's values to , overwriting whatever now.
Your balances, reports and budgets will include these transactions again.
This runs the moment you confirm — there is no review step. The original file is not opened or read again, so nothing is re-parsed and no duplicates are created: these are the same transactions being un-hidden.
Import Bank Statements
CSV, OFX/QFX/QBO or PDF straight from your bank — we read them with AI and you review everything before a single transaction is saved.
Start →Choice remembered
From now on this page will open straight to — no landing screen.
You can still reach the other option via the Import Options pill at the top, and unchecking Always start here brings both cards back.
Import your bank statements
Bring your full transaction history over in minutes. We read CSV, OFX/QFX/QBO, PDF and even pasted screenshots and turn them into transactions you review before anything is saved.
- Log in to your bank's website
- Go to your account transactions
- Find “Download” or “Export” — choose CSV or OFX
- Select the date range you want
- Upload that file below
Before you use Restore mode
Restore mode imports every row as new — even rows identical to transactions already in your account.
- Use it only for re-importing a CSV exported from Voice Money Manager.
- Do not use it on a bank statement you may have imported before — those transactions would be double-imported.
- We still scan and tell you how many rows look like existing transactions, but nothing gets unchecked.
- If something goes wrong, use Undo on the batch under Recent imports.
Recent imports
No imports yet.
| File | Source | Rows | Imported | Dupes | Status | |
|---|---|---|---|---|---|---|
|
|
Map Accounts: We found account in your statement. Tell us where each one belongs.
Review Transactions: new duplicates categorized selected
| Date & type | Description | Amount | Account & category | Status | |
|---|---|---|---|---|---|
|
$refs.di.focus())" title="Click to edit">
|
|
k !== row._k)"
:placeholder="(row.amount<0 ? 'Received in ' : 'Paid in ')+rowToCur(row)+' — required'">
|
Both files
|
||
| No transactions match “”. | |||||
Import complete
Your statement has been imported.
Importing — how it all works
What this page does
Bring your transaction history into Voice Money Manager from a bank statement or an export from another app. We read the file with AI, then let you review and fix everything before a single transaction is saved. Nothing is written to your account until you press Import, and every import can be undone.
Choosing what to import
- Import Bank Statements — CSV, OFX/QFX or PDF straight from your bank.
- Import from File — exports from Wave, QuickBooks, Mint, YNAB, Monarch, Quicken, Xero and others — any app that exports CSV — plus Voice Money Manager backups.
- The Import Options pill at the top of the step bar always brings you back to these two choices.
- Always start here skips the picker next time and opens straight to your preferred type.
1 Upload
- Select Source (under the logos) — pick the bank or app the file came from. The
icon lists everything that's supported. - Drag & drop a file, or click to browse. Accepted: CSV, OFX, QFX, PDF.
- Restore from backup — a special mode for re-importing a CSV you exported from Voice Money Manager. It imports every row as new and never unchecks duplicates. Don't use it on a normal bank statement, or you'll double-import.
- A Voice Money Manager export is detected automatically and parsed instantly — no AI cost.
- Press Continue to read the file.
2 Map accounts
We show every account we found in the file. Point each one at an existing Voice Money Manager account, or choose ➕ Create new account on import. Your choices are remembered, so next time the same statement maps itself.
3 Review & categorize the important step
The header keeps a live tally: new · duplicates · categorized · selected. Only checked rows get imported.
- Type — each row is auto-set to Expense (money out) or Income (money in); you can also mark it a Transfer or a Refund (see below). Override it with the dropdown — the category box follows the type (income rows show income categories; expense & refund rows show expense categories).
- Filter — the Filter button by Select all / None narrows the list to Expenses, Deposits, Uncategorized or Duplicates — so you can, say, filter to Uncategorized, Select shown, and bulk-assign them all at once.
- Search — type to filter instantly (description, vendor, amount, category). Select shown ticks only the visible rows; None clears every selection.
- Edit & tag — click any Description to rename it before it's saved, and hit + Tag to add up to 8 tags per row (handy for grouping, e.g. #reimbursable or #tax). Search matches tags too.
- Category — click a row's category box to search. Sub-categories show their parent (e.g. Housing › Utilities) so same-named ones are never confused. Type a new name to create it — as a top-level category or under any parent — and it's assigned right away.
- Bulk Assign — the Assign … checked to box puts one category on every checked row at once. Great with Search or Filter: narrow, select, assign.
Two statements at once reconcile without double-counting
Sometimes the same month exists in two places — the statement your bank gives you, and an export from your bookkeeping (Wave, QuickBooks). The bank knows exactly what moved and when. Your bookkeeping knows what each one was for. You want both, without entering everything twice.
On the Review step, press Add another statement and pick the second file. Both then sit in the same list. Nothing is saved until you press Import — you can look at everything first and back out freely.
Upload the bank statement first. It becomes the source of truth: every transaction takes its amount, date and currency from the bank, and the second file can never change those. That is deliberate — the bank is the record of what actually happened.
What the second file adds. It fills in what the bank does not know: the category, your own note, whether the money was really a transfer to another account, and any tags. Where only one file knows something we take it silently — there is nothing to decide. You are asked only when both files say something different about the same thing, which in practice is almost always just the category.
Rows that appear in both (same amount, dates within three days — banks often post a day or two after the books) are joined into one row and import as one transaction. They are never counted twice.
Above the list is a row of small pills — hover any of them for a plain-English explanation:
- paired — found in both files. The number that tells you the two files line up.
- only in (bank file) — the bank has it, your books do not. Usually fine.
- only in (books file) — your books have it, the bank does not. Worth a glance. If you exported Accrual from Wave, these are typically unpaid invoices and bills that never moved money — export Cash Basis instead when reconciling against a bank statement. A large number here usually means the two files do not cover the same dates.
- need a decision — the only rows you must actually look at. Open one and use Change sources to pick which file wins.
How sure are we? Every joined pair gets a score out of 100 with the reasoning behind it — hover the score to read it. Same day, matching wording and the same account push it up; a repeated round number like a plain $500 appearing many times pushes it down, because there is no safe way to tell those apart. Use Needs a look to jump straight to the least certain and work upward — the confident ones rarely need you.
Transfers between your own accounts. If the second file says a row went to another of your accounts, we try to find that account here and set it for you. If there is no confident match we leave it visible and flagged rather than guessing — look for a Destination? badge to finish off.
Changed your mind? Remove (filename) takes the second file back out and leaves the first exactly as it was. And because nothing is written until you press Import, there is no half-finished state to clean up.
Two files at a time, added one after the other. The second is compared against the first, so the order matters — that is what lets us join matching rows instead of importing everything twice.
Smart auto-categorization
When you assign a category, Voice Money Manager learns the merchant. Reference numbers and dates are ignored, so OAKVLL HYD 88213 and OAKVLL HYD 90477 are treated as the same merchant. Next time it appears, its category is filled in for you (amber) — from your own history first, then a shared library every user quietly improves. You can always overwrite a suggestion; your correction is what it remembers.
- AI on demand. When several rows are still uncategorized, an ✨ Auto-categorize with AI bar appears. Click it and AI takes a first pass at the rest in one go. Results are highlighted for you to review — nothing is silently written, and you can change any of them. (It only runs when you ask, to keep it fast and free of needless cost.)
- Amount check. If a known merchant's amount looks off — e.g. a utility that's usually ~$250 shows up as $2,500 — a
appears by the amount. Hover it for the details so you can double-check before importing.
Transfers & credit-card payments
A line like PAYMENT TO PC MASTERCARD on your chequing statement isn't really an expense — it's money moving to another one of your accounts. Set that row's Type to Transfer and the category box turns into a “Transfer to…” account picker. Choose the destination (e.g. your PC Mastercard) and on import it's saved as a single transfer: it leaves the statement's account and reconciles on the destination account — no category needed, and it's never counted twice.
We spot these for you. When a row looks like a card payment or account transfer, we auto-set it to Transfer and pre-pick the matching destination account (flagged in amber for you to confirm). Not right? Just switch the Type back or change the destination.
Which way is the money going? We read the direction from the amount: money leaving the statement's account (a debit) sends to the other account; money arriving (a credit — like a card PAYMENT - THANK YOU) comes from the other account into this one. So a payment on your credit-card statement correctly lands as money into the card. If a transfer ever points the wrong way, open it and hit ⇄ Swap direction — it flips both sides at once (a transfer is one entry, so nothing falls out of sync).
Both sides of a transfer? We catch that too. If you import one account and mark a transfer, then later import the other account, we detect the mirror line — the same amount arriving/leaving on the paired account within a few days — and label it Transfer match (blue), unchecked by default so the money isn't counted twice. Hover the badge to see which transfer it pairs with; re-check it if you actually want to import it.
Refunds & rebates
A refund or rebate (like FEE REBATE) is money coming back on an expense you already had — it isn't new income. Set that row's Type to Refund and pick the expense category it refunds (e.g. 8710 - Interest & bank charges). It's saved as money into your account, but it subtracts from that expense category — so your net expense reconciles automatically ($30 spent − $7.50 back = $22.50 net). We auto-flag deposits that read like a rebate/refund/reversal for you to confirm.
We tidy up the noise
Statement summaries aren't transactions. Lines like TOTAL NEW BALANCE, PREVIOUS BALANCE, MINIMUM PAYMENT or AVAILABLE CREDIT are just running totals — we drop them automatically so they never import as income or expense (you'll get a quick note of how many were skipped).
Card interest & fees are expenses. On a credit-card statement, RETAIL INTEREST and annual/service fees are charges you owe — we import them as expenses, not income, even though the statement prints them as positive amounts.
Foreign-currency accounts (e.g. a US-dollar card)
Every account keeps its own currency. When you map a statement to a US-dollar Visa (or any non-home-currency account), the imported transactions are saved in that account's currency — a $39 charge on a USD card imports as US$39, not converted to your home currency. Set an account's currency when you create it (there's a currency picker in the “Create new account” box), and each statement you import into it inherits that currency automatically.
Paying a USD card from a home-currency (e.g. CAD) account: record the payment on the account the money leaves — mark that line on your chequing statement as a Transfer to the card. When you later import the card's own statement, the matching “payment received” line is auto-flagged as a Transfer match and unchecked so it isn't counted twice.
4 Done
You'll see how many were created, updated, skipped and reconciled — plus a one-click Undo this import. Past imports also live under Recent imports on the upload screen, each with Undo / Redo.
Undo & Redo — exactly what they do
Every import under Recent imports can be rolled back and put back. Both run the moment you confirm — there is no review step, and neither one re-reads your original file.
- Undo removes the transactions that import created. They are matched by the import they came from, not by what they say — so rows you have since renamed, re-priced, re-categorised or tagged are removed too, with your edits on them. They are held aside rather than erased.
- Redo puts those same rows back, with your edits intact. It restores the exact transactions, so it can never create duplicates and never re-parses the file.
- The one thing that is overwritten: where an import updated a transaction you already had instead of creating a new one, Undo rewinds that row to its pre-import values and Redo re-applies the import's values over whatever it holds now. Changes you made to those rows after importing cannot be recovered. Rows the import created are unaffected.
- Only one applies at a time. Redo is available only after an import has been undone; Undo only while it is active. The other button is greyed out on each row.
Press the ? in the Undo/Redo confirmation window to see this same explanation at the moment you need it — with the real counts for that import.
Examples
A recurring utility bill. Your statement shows OAKVLL HYD XXXXX1 for −$250. Type is auto-set to Expense; you assign Housing › Utilities. Next month OAKVLL HYD XXXXX2 arrives already categorized as Housing › Utilities (amber) — just glance and import.
A paycheque. A +$1,800 line is auto-set to Income; open its category box and you'll only see income categories — pick Salary (or create it on the spot).
Quick tips
- Fastest workflow: Search a merchant → Select shown → Bulk Assign a category → repeat.
- Clear the red boxes before importing — those are the only ones with no category.
- Double-check amber rows once; they're guesses, not gospel.
- Use Restore from backup only for files exported from Voice Money Manager.