Getting Started

Importing data

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

Imports cover transactions from your bank or YNAB, your YNAB budget plan, and your investment trades or holdings. They're file-based (CSV), previewed before anything is saved, and they create 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 (next to Filter). 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, 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.

Generic CSV (bank & institution downloads)

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.

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; you can change any type later from the account's settings. 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.

Last updated June 19, 2026