I've been trying different expense trackers recently, and one thing that keeps bothering me is how much financial information some of them want access to.
Bank accounts, SMS transactions, UPI payments, spending patterns, income, investments, etc.
I understand why automatic tracking is convenient, but I'm curious:
Would you prefer an expense tracker that works completely offline, even if that means giving up some automation?
For me, the ideal expense tracker would have:
No mandatory account/sign-up
No financial data stored on a company's servers
Works without internet
Multiple bank/cash/UPI accounts
Expense + income tracking
Budgets and savings goals
Loans/EMIs
Net worth tracking
Ability to track money I've lent/borrowed
Optional transaction automation that happens locally on the phone
I've actually been working on an app called Klera around this idea.
It's an offline-first personal finance app for Android in Flutter, and the main idea is that your financial data stays on your device rather than being uploaded to a cloud account.
If anyone wants to take a look:
https://kleraapp.com/
I'm more interested in feedback than promotion at this stage.
What matters more to you in an expense tracker?
Privacy
Automatic transaction detection
Simplicity
Detailed financial reports
Budgeting/investment tracking
Cloud Sync
And if you already use an app, what's the one thing you wish it did better?
Top comments (1)
Great question — and there's a middle path between "fully offline, everything manual" and "give an app your bank login and let it store everything in its cloud" that most people don't know exists.
In the EU/UK, PSD2 requires every bank to expose read-only transaction APIs, and access works more like "OAuth for bank data" than credential sharing: you get redirected to your bank, approve a specific scope (which accounts, read-only, how long), and the app never sees your password. Consent is capped at 90 days before you have to re-authenticate, and you can revoke it at your bank at any time. India has an analogous design in the Account Aggregator framework (signed, purpose-bound, time-limited consent artifacts), so the pattern isn't EU-only — it's just unevenly adopted.
Why do most trackers still end up as "sync everything to our servers"? Because direct access is expensive in a dumb way: to talk to PSD2 endpoints as a regulated third party you need eIDAS QWAC/QSealC certificates (on the order of €2–10k/yr) plus per-bank onboarding, which prices out indie and offline-first apps. So nearly everyone builds on a couple of aggregators instead, and that layer has been consolidating — GoCardless stopped onboarding new bank-data customers in 2025 and Nordigen's free tier is gone — which is exactly why the space feels like "three big clouds or nothing."
For Klera's "optional automation that happens locally" — that's genuinely feasible with this model. The consent handshake is a browser redirect, but afterwards the token lives wherever you keep it, and polling plus categorization can run on-device against JSON the bank already holds. You'd get automation without a server of yours ever storing transactions, which fits your offline-first principle better than the SMS-parsing route (SMS parsing also breaks the moment people use multiple devices or clean their inbox).
Two data gotchas if you ever add bank-API import, learned the hard way: (1) dedupe on the bank's transaction ID, never on amount+description — merchant strings and amounts mutate between fetches; (2) model pending and booked as two states of one transaction — pendings get replaced and amounts change, so naive imports double-count. Get those two right and imported data becomes trustworthy enough that manual entry becomes the fallback rather than the default.
(John Frandsen — I build open-banking.io, a certificate-free PSD2 API)