Mobile · Personal Finance · 2026
Finwise: Money Tracking That Does Itself
A money tracker that reads the payment alerts your bank already sends, so you only have to confirm.
Key Highlights
Finwise is a personal money tracker for people who pay with UPI and cards in India. It reads the payment alerts your bank already sends, by SMS or email, and turns each one into a ready-to-confirm expense.
I designed it end to end and built it myself with AI as my pair, as a native Android app. The goal was simple: make tracking money something you barely have to do.
- 1. Effortless capture
- 2. Never lose a rupee
- 3. Private by default
Problem Space
Why do expense trackers get abandoned?
Almost everyone who has tried to track their spending has the same story: a strong first week, a few missed days, and an app quietly forgotten. The tracking itself was never the hard part: remembering to log every payment was.
- Logging is a chore. A ₹20 chai, a ₹534 Swiggy order, a fuel top-up, each one needs you to stop and type.
- The data already exists. Every UPI or card payment already sends an SMS or an email. It just sits in the inbox.
- Totals lie quietly. Pay a credit-card bill and most trackers count the same money twice: once when you spent it, again when you paid the card.
- Mistakes feel permanent. One wrong tap and a payment disappears or lands in the wrong place, and trust in the numbers is gone.
Who is it for?
“I want to know where my money goes. I just don’t want to write it all down.”
Identifying Gaps
Looking at how people actually track money, and why they stop, four gaps stood out, and each one became a design principle.
If the bank already told you about a payment, the app should already know too. You should only have to confirm, not type.
Auto-adding everything creates junk: OTPs, mandate set-ups, failed payments. Every detected payment waits for one tap before it counts.
Confirm, dismiss, delete, recategorise: each comes with Undo. Dismissed payments can always be brought back. Nothing is ever lost.
No accounts, no bank linking, no uploads. The database lives on the phone, with a CSV export and a backup file you own.
How It Works
Every detection source goes through one pipeline, so a payment is understood the same way wherever it came from.
Structuring The App
Three tabs, each answering one question: what just happened, where is my money going, and how should it behave.
Final Screens
Good evening
New payments
3Home: what just happened
The month’s spending sits on top in a dark card, against your budget and last month. Below it, New payments lists what the app found in your messages.
- Each payment shows the payee, amount, time and where it came from (SMS or Email).
- The guessed category comes first and is outlined; the rest follow, most-used first.
- Only two are shown, with “View more”, so the rest of Home stays close to the top.
- ✕ marks it “not a payment”, with Undo.
Confirm before it counts
Tapping a category doesn’t add the payment straight away. A short sheet asks “Add this expense?”, so one stray tap never makes a payment disappear.
- The category can still be changed, and the payee and a note edited.
- Next time you pay the same payee, your choice is remembered and guessed first.
- After adding, a toast says “Added ₹534 to Food” with an Undo button.
Dashboard
Spending trend
Top spending
Dashboard: where it’s going
Week, Month and Year views with a spending trend and the categories that took the most.
- Averages only cover the part of the period that has already happened, so day 3 doesn’t look like a crisis.
- Category limits show “of ₹6,000” and turn red with “over” when crossed.
- Tiny categories share one neutral “others” slice instead of overlapping dots.
- Tapping a category opens exactly those payments, already filtered.
Adding by hand, in seconds
For cash and anything the bank didn’t report. The amount is the hero, with − and + to nudge it.
- The seven most-used categories are always within reach; “Other…” opens the rest.
- Typing “pet food” or “fule” finds “Pet” or “Fuel” instead of creating near-duplicates.
- Today and Yesterday are one tap; older dates are a picker away.
Settings
Settings that build trust
Settings explain what the app does with your data in plain words, and what it doesn’t.
- Message scanning runs only when you tap it. Nothing runs in the background unless you turn it on.
- “Don’t count card bill payments” keeps card bills out of totals, so money isn’t counted twice.
- “Your data stays on this device. Nothing is uploaded. There are no accounts.”
The Details That Matter
Bank messages are messy. Most of the craft went into the cases nobody notices, until they go wrong.
OTPs, failed or reversed payments and AutoPay set-up messages are ignored, but a SIP actually debited through AutoPay still counts.
A bank SMS, a bank email and a merchant receipt for the same payment are matched by reference and counted once.
Newsletters and receipts are far more common in email, so email detection needs more proof than SMS before suggesting anything.
“Sharma Tea Stall” matches Food, but “Steakhouse” doesn’t match “tea”. “CRED” is a bill, “Credit Union” isn’t.
A payee named like a spreadsheet formula can’t run code when your CSV is opened in Excel or Google Sheets.
A backup file is fully checked before restoring, and errors are explained in plain words.
Designing By Building
Instead of handing off static screens, I built Finwise myself with AI as a coding partner. That changed how I designed: I could test an interaction on my own phone within minutes, with my own real bank messages.
The message parser is written as plain, testable functions, so the same code runs in the app, in the background task that catches SMS while the app is closed, and in the tests that guard every edge case above.
What I Learned
- Automation earns trust only when it’s reversible. Undo did more for confidence than any accuracy number could.
- The best input is no input. The most effective “form” in the app is a single tap on a category chip.
- Building is designing. Using it every day with real messages surfaced problems no mockup would have.