An expense tracker without bank linking uses CSV exports (or manual entry) instead of live aggregator connections. The privacy-first path starts with files you control and ends—if you want maximum ownership—in local SQLite on your machine, with free rules and optional on-device AI, not a third-party bank login.
You do not have to choose between “blind spending” and “hand over credentials.” This guide covers why bank linking is optional, how a CSV workflow works in practice, when a free Google Sheet is enough, and why Expense Sorted Local is the privacy end-state for people who want a real database and agent tools.
Why skip bank linking?
Bank linking (Plaid, Yodlee, and similar) made automatic ingest easy. The costs are less advertised:
Your data becomes a product. Many free or freemium budget apps monetize insights about where you shop and spend. Every merchant string is a signal.
Trust boundaries multiply. You already trust your bank. Linking adds the budgeting vendor, their aggregator, and whoever sits in the data chain. Each hop is a breach and policy-change surface.
Control is soft. Retention periods, model training clauses, and “partners” change. Historical transactions can outlive the app you intended to try for a month.
Reliability tax. Re-auth loops, broken connections, and partial syncs burn the time automation was supposed to save.
The alternative is boring in the best way: export CSV → import → categorize → analyze. Same answers, credentials never leave your bank portal.
Two rungs on the same ladder
| Rung | What it is | When to use |
|---|
| Free Google Sheet template | Zero-install lead magnet, CSV-friendly grid | Tonight, low friction, shared Sheet with a partner |
| Expense Sorted Local | Local SQLite + CLI (es) + MCP; free rules forever | Durable ledger, offline file ownership, AI agents on your DB |
Sheets is not the villain. It is the on-ramp. Local is the primary product when you care about privacy end-state and agent workflows. We do not sell a browser extension/add-on as the current hero, and we do not center old hosted prices ($2/mo, $25 lifetime AI, $10 bundles).
Primary path: Expense Sorted Local. Free start: Google Sheets template. Honest trade-offs: Local vs Sheets comparison.
The privacy-first workflow (any bank that exports CSV)
1. Export from the source of truth
Most banks and card issuers support CSV (sometimes OFX/QIF—convert if needed):
- Online banking → transactions → date range → Download / Export CSV
- Credit cards: same pattern in issuer portals (Chase, Amex, Citi, Capital One, and most EU/UK/AU/NZ banks)
Set a weekly calendar reminder. Thirty seconds of export beats days of re-auth theater.
2. Import without an aggregator
Sheet path: paste or import CSV into a template designed for bank exports—dates, amounts, descriptions in predictable columns.
Local path: import into SQLite via desktop, CLI, or MCP tools so Claude/Cursor can drive the same engine. Walkthrough: Local SQLite + MCP with Claude and Cursor.
3. Categorize without shipping the vault
Local Free: rules-based categorize forever—import, query, export, summarize, MCP included.
Local Pro ($49 lifetime): local NN categorize, embeddings, semantic search. 14-day Pro trial via email on /local. No card required for trial mint; no machine fingerprint.
Local product flows do not upload statements to Expense Sorted for cloud AI classify. That is the core of why we moved categorization local.
4. Analyze on a schedule
- Weekly (~5 min): export → import → review exceptions → save rules.
- Monthly (~15 min): category totals, merchant outliers, budget vs actual.
- Quarterly: archive old periods, tighten rules, export tax-relevant subsets.
Comparing options without bank linking
| Method | Privacy | Cost shape | Automation | Agents |
|---|
| Local SQLite (Expense Sorted Local) | Highest file ownership | Free core · Pro $49 lifetime | Rules free; optional local NN | First-class CLI + MCP |
| Google Sheets + CSV | High vs bank-link apps; data in Google account | Free template | Semi-manual / formulas | Ad hoc paste, not local tools |
| Excel offline only | Very high | One-time Office / free LibreOffice | Manual or DIY | DIY |
| Paper / notebook | Very high | Free | None | None |
| Bank-linked apps | Lowest of this set | Often $8–15/mo or data ads | High ingest | Vendor-defined |
If your threat model is “no third-party bank API,” both Sheet and Local work. If it is “I want the ledger file on disk I control,” choose Local.
Practical advantages of CSV (beyond privacy)
- You control timing—no sync delays or mystery missing days.
- Deep history—many banks allow long exports; new bank-link connections often start shallow.
- Multi-account merge—checking + cards + business account into one store.
- Fewer mystery outages—files do not need the aggregator’s uptime.
- Joint finances—share a Sheet carefully, or keep Local on a machine you both trust, without linking a partner’s bank to an app.
Setting up Local as the privacy end-state
- Install from Expense Sorted Local (desktop and/or
es CLI tarball on macOS).
- Set an absolute
ES_DB path you back up.
- Wire MCP if you use Claude Desktop or Cursor (
es mcp --print-config).
- Import CSVs; run free rules; optionally start the 14-day Pro trial.
- Keep weekly CSV export as the only bank interaction.
Details and PATH/Gatekeeper notes live in the install / get-started docs linked from the Local product pages—do not invent steps beyond the official runbook.
Setting up the free Sheet as a start (not the ceiling)
- Get the free template.
- Export last 30 days of CSVs.
- Import and categorize with whatever process the template supports.
- When the grid becomes the bottleneck—or you want agents on a real DB—export history and move to Local.
Past paid Sheet AI users: see /migrate for complimentary Local Pro language. Free template continues; extension-as-product does not.
Security hygiene that still matters
- Prefer a dedicated Google account if you stay on Sheets; 2FA everywhere.
- Back up Local SQLite (and Sheet downloads) to encrypted storage you control.
- Revoke Google apps you do not use; avoid random browser extensions that request Drive/Sheets access.
- Do not paste full multi-year statements into random chatbots when tool-backed Local queries exist.
Getting started today
If you want the strongest privacy default now: open Expense Sorted Local, install, import one CSV, run free rules.
If you need zero install tonight: use the free Google Sheets template, then plan the Local move when you want SQLite + agents.
If you want the agent bookkeeping loop: follow Local SQLite + MCP expense tracking.
Conclusion
You do not need bank linking to understand your spending. CSV import keeps credentials with your bank. A free Sheet is a legitimate start. Local SQLite—with free rules, optional $49 lifetime Pro, and MCP for agents—is the privacy-first end-state we recommend when you are ready for a system of record you can hold on disk.
Automatic aggregator sync is a product choice, not a law of nature. Five intentional minutes a week beats a permanent third-party window into your accounts.
Related Articles