Indexed

Balance

Android
Android
Indexed

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 (off / 3 / 7 / 14 / 30 days) 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
  • 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
  • Movement reasons read from the bank: when a message names the event behind a movement — a phone top-up, a bill payment, a refund, an instant transfer — the row says so in your own language, and so does the channel it went through when the bank states that. Otherwise nothing is added, and neither ever mixes into your note
  • 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: name your loans, debts, subscriptions and anything paid or received — once or recurring (daily to yearly), open-ended or with an end date — with separate remaining payable/receivable totals, monthly grouping, older paid dues and reminders. Edit through Manage
  • CSV export of exactly what the history shows at that moment, through the system file picker, with UTC timestamps, the date in your calendar, raw and displayed amounts, your notes and tags, the bank's reason and channel, and a column marking each row a movement or unaccounted money
  • Password-encrypted backup and restore of balances, history, notes, tags, commitments, reasons and channels
  • 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
  • A full reset in the data menu, confirmed twice, with the option to delete your notes and tags as well

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