Skip to content
Spendsense

Your bank already texts you. Let it do the bookkeeping.

Spendsense reads the transaction SMS your bank already sends, on your phone, and turns them into a proper ledger. No account to create. No server to trust. No cheerful popup explaining how much we value your privacy, we just never take the data.

  • Private & safe
  • 100% on device
  • 100% free

One email to verify it's real. Nothing else, ever.

The Spendsense dashboard: total spent this month, a category breakdown, and recent transactions captured from bank SMS.

Three promises, and how each one is kept

Anyone can put “privacy-first” on a landing page. So here's the part that actually matters, the reason each claim holds even if you assume we're lying.

Private & safe

Nothing leaves your phone. Not the amounts, not the merchants, not a crash report.

  • No account, no login, no cloud sync
  • SQLite on your device is the only copy
  • Backups are AES-256-GCM, encrypted with your passphrase
  • Zero analytics SDKs, nothing to opt out of

100% on device

The classifier is a 0.8 MB model living inside the app. Turn on airplane mode and nothing changes.

  • Bank SMS is parsed locally, never uploaded
  • Deterministic rules plus an on-device fastText model
  • Low-confidence parses wait in a review queue for you
  • Works in a basement with no signal

100% free

No trial, no Pro tier, no blurred-out chart with a padlock on it.

  • Every feature, on day one, for everyone
  • No ads, they'd need data we don't have
  • No subscription and no card on file
  • See the pricing page. It's a short read

What happens when a bank SMS arrives

All of this runs on your phone, in the time it takes the notification to finish sliding down. Here it is in full, because “it just works” is not something you should accept about software reading your bank messages.

Inbox

HDFCBKRs.420.00 debited from a/c **4821 on 12-08-25 to BLUE TOKAI COFFEE. Ref 5512099831.

Airplane mode makes no difference to anything below.

  1. Sender gate

    Is this actually from a bank or UPI app? Everything else is dropped before it's even read.

    HDFCBK · known bank

  2. Extract

    Amount, direction, account tail, merchant, reference, pulled out by pure functions, no network.

    ₹420 · debit · ··4821 · Blue Tokai

  3. Classify

    Deterministic rules scored alongside a 0.8 MB on-device model. The two together give a confidence.

    rules 0.91 · model 0.88

Then, by confidence

0.400.80scored 0.94

≥ 0.80

This one

Posted automatically

Confident, complete, and from a sender we know. It lands in the ledger and you never think about it.

0.40 – 0.80

Waits in review

Something was ambiguous. It sits in a queue until you confirm or correct it, one tap, not a form.

< 0.40

Dropped

OTPs that quote an amount, autopay reminders, balance enquiries, promos. Silently ignored.

Supporting a new bank starts by adding a failing test with the real message format in it. The awkward cases, an OTP that happens to mention ₹5,000, a “will be debited” autopay reminder, are pinned in the test corpus specifically so a future change can't quietly start counting them as spending.

The whole app, not a highlight reel

Real screenshots, in the theme you’re reading this in.

  • The review queue, showing a captured bank message waiting to be confirmed as a transaction.

    Review what wasn't certain

    Anything the classifier wasn't confident about waits here with the message it came from. Confirm or correct it in one tap, nothing is posted behind your back.

  • The activity list, grouped by day, with each transaction's merchant, account and amount.

    Every transaction, grouped by day

    Search, filter, group and sort the whole ledger. Each row keeps the account and the merchant the message named, so you can always trace an entry back.

  • Insights: spending trends over time and a breakdown by category.

    Where the money actually went

    Trends over time and a breakdown by category, computed on the device from your own ledger. No profile, no aggregate, nothing uploaded.

Everything, unlocked, on day one

There is no feature list below this one with a padlock next to it. This is the whole app.

A ledger that survives real life

Expenses, income, transfers between your own accounts that don't count as spending, one payment split across categories, and freeform tags.

Budgets that warn once

Overall and per-category monthly limits with local notifications at 80% and 100%, each firing once per crossing, not once per purchase.

Recurring, caught up

Rent, SIPs, EMIs and subscriptions from daily to yearly. Post them automatically or confirm each one; missed cycles catch up when you open the app.

Insights, not a dashboard

Six-month trend, month-over-month delta, average per day, top merchants, and a subscription radar that totals what's quietly leaving each month.

A calendar you can read at a glance

Every day shaded from red to green by its net. Spending and earning are scaled independently, so one salary credit doesn't flatten the whole month to grey.

Goals and udhaar

Savings targets with contributions and withdrawals, plus a per-person lend/borrow ledger that nets down to a single number you can settle.

Explorer and saved views

Any combination of date range, type, categories, merchant, tag and amount, saved under a name so you don't rebuild it next month.

Your data, exportable

CSV and PDF reports, and an AES-256-GCM encrypted backup locked with your own passphrase. Lose the passphrase and it's genuinely gone, including from us.

Pricing

It's free. Seriously.

We know how that reads. Every app says it, then eleven months later there's a blurred chart with a padlock on it. So here is the whole business model: there isn't one. The app runs entirely on your phone, which means it costs nothing to run, which means there is nothing to bill you for.

Read the full pricing page

It takes about four seconds. We checked.

₹0/ forever

Per month, per year, per device, per anything. It's the same number.

Included

  • Every feature listed above
  • Every feature added later
  • Unlimited transactions, budgets and accounts
  • Encrypted backups and full data export
  • No ads, ever

Not included

  • A Pro tier
  • A card on file
  • A 14-day trial that quietly renews
  • An email in six months about "changes to your plan"

The questions you were going to ask anyway

Mostly the sceptical ones. Those are the good ones.

What's the catch?

There isn't one, which we accept is the single most suspicious answer available. The honest version: the app has no server, so it costs roughly nothing to run. There's no infrastructure bill to pass on to you and no data to sell, because none of it ever reaches us in the first place.

So how do you make money?

We don't. This is a tool built to solve a specific annoyance, bank SMS piling up and never becoming a number you can act on. If that ever changes, it won't change by locking a feature you already use behind a paywall.

Do you sell my data?

To whom, exactly? We don't have it. Your transactions live in a SQLite file on your phone. There is no account, no server, no analytics SDK, and no crash reporter phoning home. The strongest privacy guarantee is architectural, not a policy document.

Why does it need to read my SMS?

That's the entire trick. Indian banks text you on every transaction, so the ledger already exists, it's just scattered across your inbox in a format nobody can read. Spendsense reads those messages on your device, extracts the transaction, and drops everything else. It never uploads a message.

Is it on the Play Store?

Not currently. READ_SMS is a restricted permission, and getting it approved generally means being a bank, an SMS app, or persuasive in ways we are not. So it ships as a direct APK you sideload. That's a real inconvenience and we're not going to pretend otherwise.

iPhone?

iOS doesn't let apps read your messages, which is a good decision by Apple and a fatal one for this approach. The codebase has iOS and desktop targets scaffolded, so manual entry and the ledger could work there. Automatic capture can't.

What if it gets a transaction wrong?

It will, sometimes. That's why anything the classifier isn't confident about goes to a review queue instead of straight into your ledger, and why every number in the app is editable. A tracker that silently guesses is worse than one that asks.

What happens to my email if I join the waitlist?

It sits in a table, and you get exactly one message when there's a build worth installing. It isn't sold, shared, or added to anything else. The verification code exists so the list reflects real people, which is the only reason the number is worth having.

Want it when it's ready?

Leave an email and we'll tell you once there's a build worth installing. One message. No newsletter, no drip campaign, no “we've been thinking about you” three weeks later.

One email to verify it's real. Nothing else, ever.