Frequently asked questions

If your question isn't here, contact support.

SMS & permissions

Why does PesaTrack need SMS permission?

To detect M-PESA and NCBA transaction SMS the moment they arrive and parse the amount, recipient, and transaction code into an expense — automatically, without you retyping anything. Without the permission the app still works, but you have to enter expenses manually or import them from a PDF statement.

Does PesaTrack read all my SMS?

No. PesaTrack only processes SMS whose sender matches a supported financial sender — currently MPESA and NCBA. Personal SMS from your contacts, promotional messages, OTPs from unrelated services, and any other traffic are ignored at the receiver level and never reach the parser or the database.

What SMS senders are supported?

Currently MPESA and NCBA. More Kenyan banks are on the roadmap — the constraint is that each bank’s SMS format has to be stable enough for the parser to rely on. If your bank isn’t supported yet, you can still import via M-PESA statement or Excel, or add expenses manually.

Can I use PesaTrack without granting SMS permission?

Yes. Skip the permission prompt during onboarding (or deny it later in Android Settings) and you can add expenses manually or import from a PDF/Excel file. You lose real-time detection but the rest of the app — categories, budgets, analytics, backups — works identically.

Privacy & data

Does PesaTrack send my data anywhere?

Your transaction data — the amounts, recipients, categories, budgets, and any notes you type — never leaves the device. It lives in a private Room database in the app’s sandbox and is not synced anywhere.

The app does hold the INTERNET permission, used only for opt-in anonymous usage analytics (Firebase Analytics), which is off by default. If you turn it on, we receive events like “opened Analytics screen” — never the amount, recipient, category name, or note text. See /privacy for the exhaustive list.

Does PesaTrack use any analytics or trackers?

The only telemetry is opt-in anonymous Firebase Analytics — off by default, gated behind a one-time prompt, and toggleable at any time in Settings → Privacy. When it’s on we receive screen-open and feature-use events plus your app version, Android version, device model, and country. When it’s off, nothing goes out.

No ad SDKs. No third-party trackers. No cross-app identifiers.

How do I delete my data?

Two ways. Uninstall removes everything — Android deletes the app’s database and preferences with it. Or Android Settings → Apps → PesaTrack → Storage → Clear data if you want to wipe without uninstalling. There’s no server to contact, no account to close.

Budgets & categories

How does the app auto-categorise my expenses?

Three passes, in order: (1) explicit keyword rules (KeywordRulesEngine) that match common merchants — Uber, KPLC, Naivas, OpenAI, and so on; (2) learned recipient mappings — if you’ve categorised a recipient before, PesaTrack remembers; (3) payment-type heuristics as a fallback. Unmatched expenses land in UNCATEGORIZED and get a low-priority notification so you can tag them when it’s convenient.

Can I customise categories and budgets?

Yes. Add or edit categories from Settings → Categories. Budgets are set per category from the Budgets screen, and you can pick the day your budget month starts on (e.g. the 25th if that’s your payday) so the numbers align with when money actually lands.

What is category 606?

Category 606 is the reserved bucket for transaction fees — M-PESA charges, withdrawal fees, and the like. PesaTrack always breaks these out as separate expenses rather than folding them into the parent transaction. They add up, and pretending they don’t isn’t honest.

Imports

How do I import an M-PESA PDF statement?

Open the M-PESA app → Statement → email yourself the PDF. Open the PDF on your phone, tap Share, pick PesaTrack. The parser reads the statement locally and inserts new rows, skipping any transaction ID it’s seen before. Nothing about the file leaves your device.

Can I import an Excel spreadsheet?

Yes — Settings → Import → Excel. PesaTrack lets you map your spreadsheet’s columns onto the fields it needs (date, amount, description, category). Rows that match an existing M-PESA transaction ID are skipped. If your sheet has a category column, the label mapping step teaches the app what your labels mean.

Troubleshooting

A transaction is missing or wrong — what do I do?

Open the Expenses screen, long-press the row to edit or delete it, or tap the ”+” button to add a missing one. If the SMS wasn’t parsed at all, run Settings → Import → Rescan SMS inbox and PesaTrack will try to re-parse historical messages. If it still can’t parse a recognisable M-PESA or NCBA SMS, please contact support with the SMS format (redact your phone number and code).

New SMS aren't being detected — what's wrong?

Three things to check. (1) In Android Settings, confirm PesaTrack still has SMS permission — some OS updates revoke it. (2) Some manufacturers (Xiaomi, Oppo, Vivo) aggressively kill background receivers; add PesaTrack to your battery whitelist / auto-start allow-list. (3) Confirm the sender is exactly MPESA or NCBA — a bulk-SMS reseller that uses a different sender ID won’t match.

How do I back up and restore my data?

Settings → Data Management → Backup Data saves a raw database file to the destination you choose using Android’s file picker. Restore Data reads that file and replaces the current database. The backup is not encrypted by PesaTrack; keep it private and choose its destination carefully.

Pending release: the upcoming selective-reminder update also backs up the master reminder switch and individual choices. Older backups reset individual choices to category defaults and retain the current master switch. Unreadable reminder settings pause delivery with a message. Reminder cooldown timestamps are not backed up; restore waits one cooldown cycle to avoid a catch-up burst. See backup and restore.

Can I choose which recurring payments have reminders?

Pending release — these individual controls are implemented for an upcoming app update, not yet published to Google Play.

Go to Settings → Notifications → Recurring payment reminders → Choose payments. Rent, Electricity, Water Bill, Home WiFi and Gas start on only when at least 70% of the detected payment history supports that category. Other detected payments start off. Switch each payment on or off, or choose Use default. Your choice overrides later category changes. Separate paybill accounts have separate choices; account hints are masked.

The master switch pauses all reminders without deleting your choices. A selected payment still needs at least three payments and high detection confidence (70%) before it can notify. Android must allow both app notifications and the Recurring Reminders channel. Checks are roughly daily and can be delayed; a missing payment is not proof that a bill is unpaid. Transaction fees never generate reminders.

No payment is initiated. Choices remain local and are never sent to analytics. See the reminder guide for backup and reset behavior.