Free · Open source · 100% offline

Money, tracked
honestly.

XPENC is an offline-first personal finance app for Android. Income, expenses, budgets, dues and automatic bank-SMS capture — everything stays on your phone. No server. No sign-up.

v1.0.0 Android 7.0+ MIT License ~20 MB
scroll
100%offline & on-device
0servers · trackers · ads
116+tests guarding the math
MITfree & open source
Features

Everything a daily money app needs.
Nothing that lies to you.

Most expense apps blur where money sits with what it was for, count transfers as income, or book a UPI payment twice. XPENC keeps the ledger as the single source of truth.

Honest accounts

Cash, banks and cards with real balances. Debit cards and UPI are linked to their bank — the same rupees are never counted twice.

Income · Expense · Transfer

Three transaction types, kept apart. A transfer between your own accounts is never income and never expense — so reports never lie.

Budgets with alerts

Per-category budgets with live progress. Get notified at 80% and when you overspend — once per period, not on every purchase.

Bank-SMS auto-capture

Bank messages parsed on your phone into review cards. Approve to post. Learned rules can auto-fill — and Undo really reverses the money.

Persons — dues & loans

Track who owes you and whom you owe, with running balances and settlements. Lending is not spending; being repaid is not earning.

Calendar & reminders

A month grid with day-wise in/out, plus reminders for EMIs and bills. Nothing ever posts without your confirmation.

Insights

Spending by category, income vs expense over time, net-worth trend and per-account reports — one charting engine, many views.

Backup & export

Full JSON backup and restore, plus CSV exports shaped for your accountant — or a straight import into Tally.

The app

A dashboard that tells the truth.

Minimal, monochrome, AMOLED-black. Material 3 with a One UI–inspired layout: big titles, round cards, controls where your thumb is.

  • Net worth at a glance — the one number that can't lie, plus month in and out.
  • Day-wise transactions — grouped with daily totals, filters and search.
  • SMS review cards — detected transactions wait at the top until you approve them.
  • Five-tab navigation — Dashboard · Transactions · Add · Accounts · More.
How it works

Honest in three steps.

Set up your accounts

Add Cash, your banks and cards with opening balances. Link debit cards and UPI to the bank they draw from — that's what keeps the math honest.

Spend like you always do

Bank SMS are parsed on-device into review cards: amount, account, merchant. Tap a category, approve, done. Manual entry takes seconds too.

Trust the numbers

Net worth, budgets, dues and trends — computed from one ledger where transfers never inflate income and nothing is ever counted twice.

Privacy

Your bank messages never leave your phone.

This is a money app that reads your bank SMS — so privacy is the whole trust story. Everything is parsed and stored on-device, in a local SQLite database.

0
servers — there is no backend at all
0
analytics, trackers or ads
0
accounts — no sign-up, no e-mail, no cloud
Deliberately minimal permissions. XPENC asks for READ_SMS and intentionally not RECEIVE_SMS: it scans your inbox when you open the app instead of running a background receiver. Decline the permission and everything still works with manual entry. No message, transaction or balance is ever uploaded — there is nowhere to upload it to.
Honest math

One invariant, enforced everywhere.

Net worth = Σ account balances

A transfer leaves it unchanged. Income raises it. Expense lowers it. If the numbers ever disobey that, it's a bug — and the test suite treats it as one. Amounts are stored as integer paise, never floating point, because floats corrupt money math.

Download

Get XPENC for Android.

Free, open source, no store account needed. Every APK is built, tested and checksummed automatically by GitHub Actions from a tagged release.

XPENC for Android

Latest release · arm64 recommended for phones from ~2017 onwards
Older device or unsure? See all builds & SHA-256 checksums.
QR code linking to the latest XPENC release
On your phone? Scan to open the latest release and grab the APK directly.
  1. Download the APK — your browser may warn about APK files; normal for apps outside the Play Store.
  2. Open it and allow "install unknown apps" for your browser when Android asks.
  3. Set up in a minute — currency, accounts, opening balances. Done.
FAQ

Questions, answered honestly.

Is XPENC really free? What's the catch?
Free and MIT-licensed, forever. There is no catch to fund — no server bills, no analytics pipeline, no premium tier. It's a personal tool, built in the open.
Where is my data stored?
In a local SQLite database inside the app's private storage on your phone. You can export a full JSON backup (and CSV) anytime and restore it on another device. Nothing is uploaded — there is no server to upload to.
Why does it need SMS permission?
To auto-capture bank transaction messages so you don't have to type every expense. Parsing happens entirely on-device, and XPENC deliberately uses READ_SMS (scan when you open the app) instead of RECEIVE_SMS (background receiver). Decline it and the app works fully with manual entry.
Why isn't it on the Play Store?
Google restricts SMS permissions for expense trackers, so the full-featured build ships as a direct APK from GitHub Releases, with SHA-256 checksums. A Play-compliant build is a stated eventual goal — the capture layer is architected to be swappable for exactly that reason.
Which banks are supported for SMS capture?
India Post Payments Bank (IPPB) ships first; unknown senders still surface as cards you can map manually. Bank templates are config + regex — adding your bank is the project's favourite first contribution.
iOS?
The codebase is Flutter, so an iOS build is technically feasible — but iOS doesn't allow SMS reading, so auto-capture wouldn't exist there. Android first.
Open source

Built in the open.

XPENC is MIT-licensed. The design doc, the data model, the audit trail of bugs found and fixed — all of it is public.

Engineering you can read

A single Flutter codebase with a local-first data layer. 116+ tests guard the money invariants, and every APK is gated by a native-library verification script before it ships. The full design doc — including an adversarial audit that found and fixed 8 defects — lives in the repo.

FlutterDartRiverpod Drift · SQLiteMaterial 3 go_routerfl_chart

Contributions welcome

Good first issues: add an SMS template for your bank, improve parsing, or pick up a roadmap item. Read the contributing guide, open an issue, send a PR — CI runs the full suite on every pull request.

Start tracking honestly.

One APK, one minute of setup, zero accounts. Your money, your phone, your numbers — finally telling the truth.