What's New in v1.17.0
Money your bank accounted for but your phone never received, movements dated by the bank's own clock, and the reason and the channel behind a movement read straight from the bank's message.
• Unaccounted money: when the balance a bank states changes by more than the messages that reached the app account for, the difference now appears as an amber "Unaccounted" row on the later statement's date and is counted in every total. It is arithmetic on two balance statements the bank itself sent, so the
About Balance
Balance reads your bank's balance SMS on the phone and shows the latest balance for every supported bank — split per account number when the bank states one — plus the combined total. No account, no cloud, no analytics and no internet permission: the parsing happens on your device, and your financial data stays there, encrypted.
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, asking for SMS access in context; skippable, and re-openable from About
- Offline SMS parsing, with no network request made at any point
- Latest balance per bank, split per account when stated, without counting the same message twice
- A combined total, with any account you like left out of it
- The currency shown next to every amount: Toman (default), Rial as stored, or a custom name
- 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, so you can see how current today's totals are
- 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, in its own color theme, locking together with the app
- 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 arithmetic on two statements your bank sent itself, so the figure is sound — the app never invents the missing movements, and says so on the row
- Filter the history by deposits or withdrawals and by date — today, this month, this year, or a custom range in the Persian or Gregorian calendar — and search it by any word
- 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. Where the bank states nothing, and for plain deposits and withdrawals, nothing is added, and neither ever mixes into your note
- Private notes: tap any row to write your own words about that movement; they follow it through every filter, into CSV exports and into encrypted backups
- 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, 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, 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 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