Balance
• History now refreshes automatically whenever it opens, including bank and account filters.
• Improved history loading so newly received bank messages appear without a manual pull.
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 balance updates as bank SMS arrive; history refreshes when you open its page and while it is open. Pull-to-refresh on the bank list refreshes balances; on history it refreshes balances and 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, with its own privacy mask and color theme
- 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, matched payment merchants 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, 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
- Author: Ashkan Rafiee
- License: GNU General Public License v3.0 only
- Issue Tracker
- Source Code
- Changelog
- Build Metadata
- Reproducibility Status
Donate
Versions
Although APK downloads are available below to give you the choice, you should be aware that by installing that way you will not receive update notifications and it's a less secure way to download. We recommend that you install the F-Droid client and use that.
Download F-Droid-
This version requires Android 8.0 or newer.
It is built and signed by the original developer, and guaranteed to correspond to this source tarball.
Download APK 0.7 MiB PGP Signature | Build Log
-
This version requires Android 8.0 or newer.
It is built and signed by the original developer, and guaranteed to correspond to this source tarball.
Download APK 0.7 MiB PGP Signature | Build Log
-
This version requires Android 8.0 or newer.
It is built and signed by the original developer, and guaranteed to correspond to this source tarball.
Download APK 0.7 MiB PGP Signature | Build Log
• History exports and password-encrypted backups now include matched payment merchants.
• History can now be narrowed by one or more banks and accounts, with the selected scope kept while browsing days.
• History days open with their transactions immediately instead of requiring an extra load step.
• Shared diagnostics remove one-time codes, including codes i
• Commitments can now end after a set number of payments.
• Stale balances now show a muted amount with a short "N days" badge.
• Persian bank names are shorter, and diagnostics shows whether each sender is recognized.




