Getting Started

Importing data

Bring your history with you - transactions, budgets, and investments imported from CSV, OFX, QFX, or QIF, previewed before anything is saved.

Imports cover transactions from your bank or YNAB, your YNAB budget plan, and your investment trades or holdings. Pocketwatch reads CSV files plus the OFX, QFX (Quicken Web Connect), and QIF files most banks and Quicken can export. Every import is previewed before anything is saved, and it creates any accounts, category groups, categories, and subcategories your file mentions that don't exist yet.

Where to find Import

  • On an account - open the account's ledger and click Import in the toolbar, or open the top-right account menu on a phone. The import is pre-aimed at that account.
  • While adding an account - in Add Account, pick Import from a file below "Add manually". You can map the file to existing accounts or create new ones during the preview step.

Both paths open the same flow: pick what you're importing, use the source-specific guidance or download a CSV template when available, upload the file, review the preview (what will be created, what looks like a duplicate), then import. Nothing is written until you confirm the preview, and a failed import writes nothing at all.

Bank-linked accounts are excluded. Accounts connected through Plaid sync automatically - their ledger is owned by the bank connection, so file imports into them are not allowed.

Which files can I import?

FormatAccountsWhat comes acrossWhat does not
CSVAnyTransactions, budget plans, investment trades and holdings.Nothing - CSV is whatever you put in it.
OFX / QFXChecking, savings, money market, CD, credit card, line of credit, brokeragePosted transactions, the statement period and balance, and buy/sell trades or a positions snapshot.Pending transactions, dividends, reinvestments, stock splits, return of capital, share transfers, options, and short sales.
QIFBank, cash, credit card, liability, investmentTransactions, categories and subcategories, exact splits, transfers between accounts, and buy/sell trades.Asset (Oth A) accounts, budgets, memorized payees, classes, tags, tax settings, scheduled transactions, and the same investment actions listed above.
Anything we cannot import is named before you commit. The preview lists every record type the file held that will not be written, and how many of them there were. Nothing is ever quietly reinterpreted as something else.
Your bank details stay out of Pocketwatch. We read your file to build the preview and import it. Full account and routing numbers are never stored - account mapping shows at most the last four characters - and no file content, payee, memo, or bank transaction id is used for analytics or written to our activity log.

Bank and finance files (CSV, OFX, QFX, QIF)

Most banks let you download transactions as CSV. Pocketwatch reads the common header names directly; if your bank's file doesn't match, rename the header row to the canonical names below - headers are case-insensitive and column order doesn't matter.

ColumnRequiredAccepted values
DateYes2026-06-12 (preferred), 06/12/2026, or 12/06/2026. Day/month order is detected from the file; if every date is ambiguous you'll get a format picker in the preview.
Description (or Payee)YesUp to 200 characters.
Amount - or Outflow + InflowYesSigned decimal: spending negative, income positive (-54.20, 2,500.00). Currency symbols, thousands separators, decimal commas, and (54.20)-style negatives are all understood. With Outflow/Inflow columns, outflow is treated as negative.
CategoryNoGroceries - or Utilities: Water for a subcategory (see syntax). Created automatically when missing.
Group (or Category Group)NoCategory group for a newly created category. Auto-created when missing.
Notes (or Memo)NoUp to 500 characters.
ClearedNotrue/false, yes/no, or YNAB's cleared / uncleared / reconciled.
AccountNoFor files covering several accounts. Each distinct name is mapped in the preview - to an existing account or to a new one you create on the spot.

A minimal example:

Date,Description,Amount,Group,Category,Notes
2026-06-01,Grocery Run,-54.20,Everyday Expenses,Groceries,weekly shop
2026-06-02,Paycheck,"2,500.00",Income,Income,
2026-06-03,Water Bill,-30.00,Monthly Bills,Utilities: Water,

Subcategory syntax

In any Category cell, colon-space (: ) splits a parent category from a subcategory: Utilities: Water means the subcategory Water under the top-level category Utilities. Both are created if they don't exist (the parent lands in the row's Group, the child always follows its parent's group). A bare name like Groceries is a top-level category. Only one nesting level exists, and the separator must be colon followed by a space - A:B without the space is read as a single category name.

Rules worth knowing

  • Future-dated rows import as Upcoming - they don't touch the balance until their date arrives.
  • Zero-amount rows and rows with no payee still import, flagged for attention (a zero-amount row carries no balance; a blank payee comes in as "(No payee)" for you to fill in).
  • Only rows that truly can't be read - no usable date, or an unreadable amount - are skipped and listed by line number; the rest of the file still imports.
  • Files up to 15 MB and 10,000 rows per import. Bigger history? Split by year and import in parts.

OFX and QFX (Web Connect) files

On your bank’s website, look for Download, Export, or Download transactions, then choose OFX, Quicken, or Web Connect (.qfx). Both are the same format, so it does not matter which one your bank offers. Upload it exactly as downloaded - no conversion, no renaming.

  • Only posted transactions import. Pending ones change before they settle, so importing them would leave you with an unstable balance and a duplicate to clean up once the real one arrives. They are counted in the preview so you know they were there.
  • Amounts keep the sign your bank gave them. Spending and card charges come in negative, deposits and card payments positive - the same convention Pocketwatch uses everywhere.
  • Your account is shown redacted. The preview shows something like Checking ····4321 and asks which Pocketwatch account it belongs to. The full number is never stored.
  • A statement in another currency is refused. Pocketwatch has a single display currency and does not convert during an import.

The statement balance check

OFX and QFX files usually declare what your balance was on a given date. Pocketwatch uses that to check its work - never to overwrite anything.

  • Creating a new account? The preview offers Match the statement balance, on by default, and shows the exact one-off "Opening balance adjustment" row it will add so the new account ends up agreeing with your statement. Turn it off and the account will simply hold the imported transactions.
  • Importing into an account you already have? Nothing is adjusted. The preview compares your statement to what this account looked like on the statement date (not today), and tells you the difference so you can decide what to do.

QIF files (Quicken)

In Quicken, choose File → File Export → QIF file. Include Transactions, and also Account List, Category List, and Security List when the export offers them - the account list is what lets a multi-account file map cleanly, and the security list is what turns a fund name into a ticker.

  • One file, several accounts. Each account in the file gets its own review step, so you map and confirm them one at a time.
  • Categories come across, including subcategories. Quicken’s Utilities:Water becomes Pocketwatch’s Utilities: Water. Quicken classes are dropped rather than folded into category names.
  • Split transactions stay split. The split lines become itemized categories that add up to the transaction exactly. If they do not add up, the transaction is skipped and reported rather than rounded.
  • Transfers become real transfers. A [Account] transfer is imported once as a single movement between your two accounts, not as two unrelated rows - even though Quicken writes both halves.
  • Dates. Quicken writes several date shapes. If day/month order is genuinely ambiguous, the preview offers a picker and re-reads the file. Two-digit years follow a fixed rule: 00-69 are 2000s, 70-99 are 1900s.
  • Asset accounts (`Oth A`) are not imported. Pocketwatch tracks things like a car or a collection separately from your ledger, so those accounts are reported and skipped.

Re-importing and overlapping downloads

OFX and QFX files carry a reference your bank assigns to each transaction. Pocketwatch stores a one-way fingerprint of it, so downloading an overlapping statement next month imports only what is genuinely new - the repeats are counted as already imported and skipped, not added twice and not left for you to sort out.

CSV and QIF files carry no such reference. There, a row matching an existing transaction on date and amount is still imported but flagged as a possible duplicate for you to keep or remove - because a second coffee on the same day for the same amount is a real transaction, not a mistake.

Importing from YNAB

In YNAB, open Budget Settings → Export budget. You'll get a zip - unzip it to find two files and drop both at once (or just one); Pocketwatch walks you through a preview for each:

  • …Register.csv - every transaction in the budget. Pocketwatch automatically creates every account named in the file (no hand-mapping) with a best-guess type - credit card, checking, savings, loan - picked from the account name and the balance you carry. Account types are fixed once created, so check them after the import - if one guessed wrong, delete that account and add it again with the right type. Accounts you already have with a matching name are reused, not duplicated. Each transaction's Payee becomes the description, Memo the notes, Outflow/Inflow the signed amount, the discrete Category Group + Category columns your groups/categories (matched to existing ones where the names line up), and cleared / uncleared / reconciled the matching ledger states.
  • …Plan.csv - your monthly budget assignments. Each month's Budgeted value is written to the matching category and month here (categories are created as needed; an existing assignment for the same category + month is overwritten; $0 rows are ignored).

Special YNAB rows are handled for you:

  • Inflow: Ready to Assign income lands in an Income category so it feeds Ready to Assign here too.
  • Starting Balance rows import as ordinary transactions - if the target account already has an opening balance, they'll be flagged as possible duplicates for you to resolve.
  • Transfers (payee "Transfer : …") import as plain uncategorized rows in each account, so balances stay exact. They are not re-linked as paired transfers.
  • Flag colors are not imported.
Order is handled for you: when you drop both files together, Pocketwatch reviews the Register first (it creates most of your categories with their groups), then the Plan - so the budget assignments land on categories that already exist.

Importing investments

Investment imports target one investment account (brokerage, retirement, HSA, or crypto wallet) at a time, chosen in the preview. Two file shapes are supported:

Trade history

ColumnRequiredAccepted values
Date (or Trade Date, Run Date)YesSame formats as transactions. Future dates are rejected per-row.
Action (or Type, Side)YesAnything containing buy/purchase or sell.
Symbol (or Ticker)Yese.g. VOO, BRK.B, BTC.
Quantity (or Units, Shares)YesPositive decimal.
PriceYesPer-unit price.
Fees (or Commission)NoFolded into cost basis on buys, out of proceeds on sells.
Asset ClassNostock, etf, crypto, bond, mutual_fund, commodity, derivative, other. Defaults to stock.

Trades apply oldest-first; sells consume your buys first-in-first-out, so realized gains come out right. A sell larger than the units held at that point is skipped and reported. Imported trades record no cash movement - they reconstruct your positions, not your cash ledger.

Current holdings

A simpler snapshot when you don't have full history: Symbol, Quantity, optional Cost Per Unit (omit it and the position imports without a cost basis - gains show once a basis exists), optional Asset Class and Acquired date.

Flagged rows & the review flow

Some imported rows come in flagged for attention rather than being dropped - you stay in control of each one. A row is flagged when it looks like a possible duplicate (it matches an existing transaction on date + amount), when it has a zero amount, or when it's missing a payee:

  • The preview tells you how many rows will be flagged, and why, before you import.
  • Afterwards, a warning banner sits at the top of the account until every flag is resolved - for a possible duplicate, the balance may be double-counted until then.
  • Each flagged row shows a chip naming the reason - Possible duplicate, Zero amount, or Needs a payee - with Keep (it's fine - clear the flag; add the payee inline first if it's missing) and Remove (delete it and re-adjust the balance).
  • Approve all in the banner clears every flag at once.

Troubleshooting

  • "Could not recognize the file's columns" - the header row is missing or unnamed. Add headers matching the tables above (minimum: Date, Description, Amount).
  • Dates land on the wrong day/month - use the date-format picker shown in the preview, or re-export with ISO dates (YYYY-MM-DD).
  • Amounts have the wrong sign - Pocketwatch expects spending negative. If your bank exports spending as positive with a separate column, rename the columns to Outflow/Inflow.
  • Excel files - save/export as CSV first (.xlsx isn't supported).
  • Limit errors (409) - imports respect your plan's resource caps (accounts, categories, groups). Delete unused ones and retry; failed imports write nothing.
  • "This file is named like CSV but its contents are OFX" - harmless. We always read the file itself rather than trusting its extension, and the preview tells you what we actually found.
  • "This file uses a text encoding Pocketwatch cannot read" - we read UTF-8, US-ASCII, Windows-1252, and ISO-8859-1. Re-download or re-save the file as UTF-8.
  • "This OFX file is encrypted / compressed" - download a plain, unencrypted copy from your bank. We will not guess at the contents of a file we cannot read.
  • "This file ends before its statement is complete" - the download was truncated. Download it again rather than importing a partial statement.
  • "This statement is in EUR but your Pocketwatch currency is USD" - Pocketwatch does not convert currencies during an import, so importing would misstate every amount. Change your currency in Settings first, or import a statement in your own currency.
  • A QIF file imports nothing - QIF records end with a ^ line and each section starts with a !Type: directive. Re-export from Quicken rather than hand-editing.
  • A trade was skipped for a missing symbol - export the security list along with your transactions. Without it we cannot turn a fund name into a ticker, and guessing would book the trade against the wrong asset.

Last updated July 25, 2026