Balance
Private offline bank balance dashboard
Version: 1.19.0
Added: 03-09-2026
Updated: 18-10-2026
Added: 03-09-2026
Updated: 18-10-2026
Balance reads bank SMS on your phone and shows the latest balance for supported banks — split per account when stated — plus the combined 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 built for users in Iran, with Iranian banks and their Persian message formats.
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
- Automatic updates as bank SMS arrive, plus pull-to-refresh on the bank list or the history screen (all of it, one bank, or one account)
- 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, totals and masking
- 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 and multiple tags: tap any row to write your own words and labels about that movement; they follow it through every filter, into CSV exports and into encrypted backups
- Optional commitments card for loans, debts, subscriptions and other recurring payments or receipts, with separate totals and reminders
- CSV export of exactly what the history shows at that moment, through the system file picker, with your notes and tags and the bank's reason, channel and matched merchant
- Password-encrypted backup and restore of balances, history, notes, tags, commitments, reasons, channels and matched payment merchants
- 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, and a light or dark theme that follows the device
- Report (Scan diagnostics): see which bank messages parse and which do not, and send or copy exactly the ones you pick
Free and open source. If your bank's messages are not recognized, or a balance or account looks wrong, telling us — through the issue tracker, the Report screen or email — is the fastest way to get it added.
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 built for users in Iran, with Iranian banks and their Persian message formats.
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
- Automatic updates as bank SMS arrive, plus pull-to-refresh on the bank list or the history screen (all of it, one bank, or one account)
- 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, totals and masking
- 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 and multiple tags: tap any row to write your own words and labels about that movement; they follow it through every filter, into CSV exports and into encrypted backups
- Optional commitments card for loans, debts, subscriptions and other recurring payments or receipts, with separate totals and reminders
- CSV export of exactly what the history shows at that moment, through the system file picker, with your notes and tags and the bank's reason, channel and matched merchant
- Password-encrypted backup and restore of balances, history, notes, tags, commitments, reasons, channels and matched payment merchants
- 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, and a light or dark theme that follows the device
- Report (Scan diagnostics): see which bank messages parse and which do not, and send or copy exactly the ones you pick
Free and open source. If your bank's messages are not recognized, or a balance or account looks wrong, telling us — through the issue tracker, the Report screen or email — is the fastest way to get it added.
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