Privacy policy
Last updated: September 3, 2026
1. What PesaTrack does
PesaTrack is a passive expense tracker for Android. It reads both incoming and outgoing M-PESA and supported bank SMS messages, parses transaction details (amount, recipient, date, transaction code), and saves them locally on your device for categorisation, budgeting, and review.
2. SMS data we access
PesaTrack requests the following Android permissions:
- RECEIVE_SMS — to detect M-PESA and supported bank SMS messages (incoming and outgoing transactions) in real time
- READ_SMS — to import historical transaction SMS from your inbox (user-initiated only)
PesaTrack only reads SMS from specific senders:
- M-PESA (sender: "MPESA")
- NCBA Bank (sender: "NCBA")
Personal SMS from contacts, promotional messages, and SMS from unsupported senders are never read, accessed, or stored.
3. What data is stored on your device
From each qualifying transaction SMS, PesaTrack extracts and stores locally:
- Transaction amount (KES)
- Recipient name and number/till/paybill
- Transaction date and time
- M-PESA transaction code (e.g. "ABC123XYZ")
- Transaction cost (if present in the SMS)
- Payment type (Send Money, Buy Goods, Pay Bill, etc.)
You may also manually enter expenses or import from Excel/PDF. Categories, budgets, and settings are stored locally in a Room database and DataStore preferences.
4. Anonymous usage analytics (opt-in)
Starting in version 1.5.0, PesaTrack can send anonymous usage analytics so we can see which features help and which need work. This is off by default. On first launch (or after updating from an older version) you'll see a one-time prompt — say yes, dismiss it, or change your mind later.
What we send when analytics are on:
- Which screens you open (e.g. "home", "analytics", "budget")
- Which features you tap (e.g. "import completed", "budget created")
- App version, Android version, device model, and country
- Crash and error signals
- An anonymous, rotating installation ID from Firebase Analytics
What we never send, even with analytics on:
- The content of any SMS
- Transaction amounts, merchants, till/paybill numbers, or transaction codes
- Category names, budget names, or note text you type in the app
- Your name, phone number, email, or M-PESA number
- Anything else that could identify you personally
Analytics are processed by Google Firebase Analytics. See Google's privacy policy for how they handle this. We do not use Firebase for advertising, personalisation, or any purpose beyond product improvement.
Turning analytics off: Open PesaTrack, tap Settings, and toggle "Anonymous usage data" off. Collection stops immediately and the anonymous installation ID is reset so the previous session's identifier can't be associated with future data.
5. Data sharing
Your transaction data is never shared. The only data that leaves your device is the anonymous analytics described in Section 4 — and only if you opt in.
- Transaction data is never sent to any server or cloud service
- Transaction data is never shared with any third party, ad network, or SDK
- No data — transactional or analytical — is sold, rented, or licensed
5.5 User-initiated sharing
Certain features let you voluntarily share information outside the app:
- Feedback emails. "Contact & Feedback" prepares a draft email. Usage context (app version, milestones) may be pre-filled to help us assist you. Review and remove anything before sending.
- Backup files. Database backups you create and export may contain your expense data and settings. They stay on your device unless you share them.
- CSV exports. Exports stay on-device unless you share them via Android's share sheet.
5.6 Google Play services
- Firebase Analytics — for the opt-in analytics in Section 4
- Google Play In-App Review API — may prompt you to rate the app within the Play review flow. No personal data is shared with PesaTrack through this.
6. Data security
PesaTrack offers an optional PIN lock with biometric unlock to prevent casual unauthorised access. The PIN is stored as a salted SHA-256 hash — the raw PIN is never stored.
Your data inherits the security of your Android device (device encryption, screen lock). PesaTrack does not implement additional database encryption; the threat model is casual-access prevention, not forensic-level protection. See /security for the full write-up.
Analytics data (when enabled) is transmitted to Firebase over HTTPS/TLS.
7. Your rights & data deletion
- View: all expense data is visible in-app at all times
- Edit: re-categorise, exclude, or modify any expense
- Delete on-device data: Android Settings → Apps → PesaTrack → Storage → Clear data
- Disable analytics: PesaTrack → Settings → Privacy
- Reset analytics ID: turning analytics off also resets the anonymous Firebase installation ID
- Uninstall: removes all stored data permanently
Because analytics data is anonymous and not tied to your identity, we cannot look up or delete specific analytics records on request. Turning analytics off stops future collection and severs the link between past and future sessions on your device.
8. Children's privacy
PesaTrack is not directed at children under 13. The app requires access to financial SMS, which is inherently an adult use case.
9. Changes to this policy
We may update this policy as the app evolves. Material changes will be called out in-app on next launch. The Last updated date at the top always reflects the current version.
10. Contact
Questions or concerns? Email joelmumo.jm@gmail.com.