Balance
Private offline bank balance dashboard
- Developer
- Ashkan Rafiee
- License
- GPL-3.0-only
- Package
com.ashkanrafiee.balance- Category
- Finance Manager
- Latest version
- 1.22.0 · Nov 6, 2026
- Minimum Android
- Android 8.0
Screenshots
Description
Balance reads bank SMS on your phone and shows the latest balance for supported banks — split per account when stated — plus the total. No account, cloud, analytics or internet permission: parsing is on-device and stored data is encrypted. Balance does not upload or send it; Report, sharing, CSV export and backup only hand selected data to the app or location you choose.
Currently supports Iranian banks only. Banks in other countries are not supported yet.
Features:
• A first-run introduction explaining what is read and why; skippable, and re-openable from About
• Offline SMS parsing
• Latest balance per bank, split per account when stated, without counting the same message twice
• A combined total, with accounts you can leave out
• Toman (default), Rial as stored, or a custom currency
• Balances masked by default for privacy, hidden again on every open
• Saved data stays visible while new SMS are checked quietly, without repeated loading animations. Pull-to-refresh updates balances on the bank list, and balances plus transactions on history
• A freshness warning: a bank whose last message is older than the window you set is flagged on its card and in the widget
• Turning SMS access off deletes nothing — everything already read stays on screen, and a strip under the total card offers to grant access again
• On Android 17, the system may hide restricted SMS from Balance; diagnostics makes clear when its results cover accessible messages only
• Home-screen widget with the same bank order and totals, its own privacy mask, light/dark mode, and selected theme color
• Transaction history by day, month and year, showing out-of-order messages (a transfer and its fee) in their true order
• Unaccounted money: when a balance statement changed by more than the messages explain, the difference appears as an amber "Unaccounted" row on the later statement's date and is counted in every total. It is proven by two statements your bank sent
• Filter the history by deposits or withdrawals, by date, and by exact reusable tags — today, this month, this year, or a custom range in the Persian or Gregorian calendar. Search across the transaction details and tags
• Bank-stated movement reasons and channels appear in your language when present, and stay separate from your note
• Payment merchants read from authorization SMS: when a purchase message names a merchant and uniquely matches a completed withdrawal, the history shows it as sourced payment information. An OTP alone never creates or confirms a transaction, and ambiguous matches stay unattached
• Private notes on any history row, including amber Unaccounted rows, and tags on movements: add your own words and labels, with notes following their row into filters, CSV exports and encrypted backups. When a delayed SMS exactly identifies the missing movement, its note follows the real transaction; ambiguous matches remain unattached
• Track recurring payments and receipts with separate totals and optional reminders; Android may delay them
• CSV export of exactly what the history shows at that moment, through the system file picker, with notes on movements or Unaccounted rows, movement tags, and the bank's reason, channel and matched merchant
• Password-encrypted backup and restore of balances, history, notes, tags, commitments, bank facts and recognized SMS source samples
• Optional in-app lock with PIN, password or fingerprint, covering the app, the widget and screenshots/recents
• English and Persian interface, Persian (Jalali) or Gregorian calendar, light or dark mode, and eight curated theme colors
• Report (Scan diagnostics): see which bank messages parse, choose what is wrong, and send or copy your samples; OTP values are removed
Free and open source. If a bank message or balance looks wrong, report it through Report.
If Balance is useful to you, you can support its development: donation options are in the project readme at https://github.com/AshkanRafiee/balance#donate
Currently supports Iranian banks only. Banks in other countries are not supported yet.
Features:
• A first-run introduction explaining what is read and why; skippable, and re-openable from About
• Offline SMS parsing
• Latest balance per bank, split per account when stated, without counting the same message twice
• A combined total, with accounts you can leave out
• Toman (default), Rial as stored, or a custom currency
• Balances masked by default for privacy, hidden again on every open
• Saved data stays visible while new SMS are checked quietly, without repeated loading animations. Pull-to-refresh updates balances on the bank list, and balances plus transactions on history
• A freshness warning: a bank whose last message is older than the window you set is flagged on its card and in the widget
• Turning SMS access off deletes nothing — everything already read stays on screen, and a strip under the total card offers to grant access again
• On Android 17, the system may hide restricted SMS from Balance; diagnostics makes clear when its results cover accessible messages only
• Home-screen widget with the same bank order and totals, its own privacy mask, light/dark mode, and selected theme color
• Transaction history by day, month and year, showing out-of-order messages (a transfer and its fee) in their true order
• Unaccounted money: when a balance statement changed by more than the messages explain, the difference appears as an amber "Unaccounted" row on the later statement's date and is counted in every total. It is proven by two statements your bank sent
• Filter the history by deposits or withdrawals, by date, and by exact reusable tags — today, this month, this year, or a custom range in the Persian or Gregorian calendar. Search across the transaction details and tags
• Bank-stated movement reasons and channels appear in your language when present, and stay separate from your note
• Payment merchants read from authorization SMS: when a purchase message names a merchant and uniquely matches a completed withdrawal, the history shows it as sourced payment information. An OTP alone never creates or confirms a transaction, and ambiguous matches stay unattached
• Private notes on any history row, including amber Unaccounted rows, and tags on movements: add your own words and labels, with notes following their row into filters, CSV exports and encrypted backups. When a delayed SMS exactly identifies the missing movement, its note follows the real transaction; ambiguous matches remain unattached
• Track recurring payments and receipts with separate totals and optional reminders; Android may delay them
• CSV export of exactly what the history shows at that moment, through the system file picker, with notes on movements or Unaccounted rows, movement tags, and the bank's reason, channel and matched merchant
• Password-encrypted backup and restore of balances, history, notes, tags, commitments, bank facts and recognized SMS source samples
• Optional in-app lock with PIN, password or fingerprint, covering the app, the widget and screenshots/recents
• English and Persian interface, Persian (Jalali) or Gregorian calendar, light or dark mode, and eight curated theme colors
• Report (Scan diagnostics): see which bank messages parse, choose what is wrong, and send or copy your samples; OTP values are removed
Free and open source. If a bank message or balance looks wrong, report it through Report.
If Balance is useful to you, you can support its development: donation options are in the project readme at https://github.com/AshkanRafiee/balance#donate
All versions
| Version | Released | Minimum Android | Size |
|---|---|---|---|
| 1.22.0 | Nov 6, 2026 | Android 8.0 | 777 KB |
| 1.21.0 | Oct 31, 2026 | Android 8.0 | 739.2 KB |
| 1.20.1 | Oct 27, 2026 | Android 8.0 | 732.8 KB |
| 1.19.0 | Oct 18, 2026 | Android 8.0 | 713.3 KB |
| 1.18.4 | Oct 15, 2026 | Android 8.0 | 695.5 KB |
| 1.18.1 | Oct 14, 2026 | Android 8.0 | 673.4 KB |
| 1.17.0 | Oct 5, 2026 | Android 8.0 | 360.5 KB |
| 1.16.0 | Sep 26, 2026 | Android 8.0 | 328.1 KB |
| 1.15.0 | Sep 25, 2026 | Android 8.0 | 319.3 KB |
| 1.14.0 | Sep 22, 2026 | Android 8.0 | 302.9 KB |
| 1.13.0 | Sep 22, 2026 | Android 8.0 | 258.4 KB |
| 1.12.1 | Sep 18, 2026 | Android 8.0 | 252 KB |
| 1.11.0 | Sep 17, 2026 | Android 8.0 | 219.2 KB |
| 1.10.0 | Sep 15, 2026 | Android 8.0 | 216.9 KB |
| 1.8.0 | Sep 14, 2026 | Android 8.0 | 209.1 KB |
| 1.7.0 | Sep 12, 2026 | Android 8.0 | 207.1 KB |
| 1.6.2 | Sep 11, 2026 | Android 8.0 | 189.8 KB |
| 1.5.0 | Sep 9, 2026 | Android 8.0 | 59.4 KB |
| 1.3.1 | Sep 3, 2026 | Android 8.0 | 41.7 KB |
How to install an older version of an Android app · How to install an APK file on Android
From the developer (GitHub)
APK files published by the developer on GitHub. They are signed by the developer and may not install over the other builds on this page (different signature). Links open github.com.
Similar apps
-
meteroid
Client for Mete
-
My Expenses
Easy to use personal finance manager: rich functionality and Open Source
- Who Has My Stuff? Manager for lent items
- Firefly III Mobile Mobile wrapper for Firefly III
-
OpenMoneyBox
Budget management application
-
Money Manager Ex
Manage your finances on-the-go, encrypted for security, sync via your storage
-
cone
Data entry tool for the plain text accounting ledger format
-
Taler Point-of-Sale Terminal
Process orders and take in Taler payments