SpendLens app icon

SpendLens

The UPI tracker that can't leak your data, because it can't reach the internet.

Android No internet Private by design Open source v0.1.3-alpha
Zero network permission. No data sharing. Ever. SpendLens ships with no internet access at all, so your financial data physically cannot leave your phone. No cloud, no accounts, no analytics, no third-party SDKs. It is private by design, not just by promise, and you can verify the claim yourself.

What it does

SpendLens is an offline Android expense tracker that reads the payment notifications you already get from UPI and banking apps and quietly turns them into a private spending ledger, stored entirely on your device. No manual data entry, no logins, no cloud, no ads. It captures spends from 19+ UPI and bank apps, can recover months of history from your existing bank SMS, imports CSV statements, and lets you split payments, tag trips, and see where your money actually goes.

Key features

Automatic capture

Reads payment notifications from 19+ UPI and bank apps using grammatical shape-matching, not fragile app-specific parsing.

Historical recovery

Optionally reads existing bank SMS in your inbox to rebuild months or years of past spending.

CSV import

Bring in bank statements through a file picker for a complete, reconciled picture.

Split payments

Split a bill among named people with repayment tracking, and amounts that always sum back exactly.

Tags & trips

Group spends into tags and trips with date-aware journey progress indicators.

Spending insights

See spending across 7, 30, 90 and 365-day windows plus a 12-month comparison, by day, merchant, tag, and payment rail.

Budgets with pace markers

Set spending limits and see, at a glance, whether you are ahead of or behind your pace for the period.

Tap to drill down

Tap any bar or slice in a chart to jump straight to the exact transactions behind it.

Rules that replay

Create a merchant rule once and it replays across every past and future payment to the same VPA.

Screenshots

SpendLens screenshot SpendLens screenshot SpendLens screenshot SpendLens screenshot SpendLens screenshot SpendLens screenshot SpendLens screenshot SpendLens screenshot

How it works

Every notification and message flows through a small, Android-independent core that reads structure rather than app identity, then dedupes the same payment seen across multiple sources before it ever touches storage.

parse dedupe fuse resolve merchant persist (encrypted) nudge

Merchants are identified through a six-rung resolution ladder (explicit rules, captured name, VPA structure, directory, fuzzy match, then a safe fallback). Money is stored as integer paise to avoid floating-point rounding, and split amounts are balanced to the last paisa (₹1,000 three ways becomes 333.34 / 333.33 / 333.33).

Built with

KotlinJetpack ComposeSQLDelight SQLCipher (AES-256)Android KeystoreGradle (Kotlin DSL) JUnit (102+ tests)JDK 21 · SDK 36

Privacy & security

No internet, at all

The APK ships with no INTERNET permission, so there is no data-exfiltration path regardless of future code.

Encrypted at rest

The ledger lives in a SQLCipher database with AES-256, its key sealed by the Android Keystore.

No SDKs, no tracking

No analytics, crash reporting, advertising, accounts, or third-party services. Notification contents are never logged.

Six permissions

The standard build requests only six permissions, none of them classified as dangerous by Android.

Download

Two builds, both signed. Verify against SHA256SUMS.txt from the release if you like. Current release: v0.1.3-alpha.

Standard build Recommended

Reads payment notifications only. The right choice for most people.

Android APK Download standard APK

Full build

Adds SMS reading for historical recovery. Distributed as a direct APK due to SMS policy.

Android APK · includes READ_SMS Download full APK

This is an alpha. On install, Google Play Protect may warn about the notification-listener permission; that is expected for an app that reads notifications, and you can approve it to continue. F-Droid submission is prepared and a Play listing (standard build) is coming soon.

Discussion

Tried the app or have a question? Leave a comment below.