1. Introduction
SpendSense ("we", "us", or "the app") is a personal finance application for Android that automatically captures bank transactions from SMS alerts and helps you track spending and manage monthly budgets. This Privacy Policy explains what information SpendSense collects, how it is used, and the choices you have regarding your data.
SpendSense stores all your financial data exclusively on your device. We do not operate servers and do not transmit any personal or financial information over the internet. The only network requests this app makes are: to verify your subscription status with Google Play Billing, to send anonymous crash reports and usage events to Firebase (Google) for app improvement, to display this privacy policy, and to load app fonts. Your transaction data, merchant names, and financial details are never involved in any network request.
2. Information We Collect
All information described below is stored exclusively on your device inside the app's private storage, which is inaccessible to other apps on a non-rooted device.
Transaction data
When a bank SMS is received, or when you manually add a transaction, SpendSense stores:
- Transaction amount and currency (LKR)
- Merchant or payee name (extracted from the SMS or entered by you)
- Spending category (inferred from keyword rules or chosen by you)
- Whether the transaction is a debit or credit
- Date and time of the transaction
- Whether the transaction was auto-captured from SMS or entered manually
In production builds, raw SMS content is not retained after parsing. Only the extracted transaction fields listed above are stored — the original SMS body is discarded once the amount and merchant have been identified.
Profile information
Optionally, you may set a display name and a profile photo. Both are stored entirely on your device and can be changed or removed at any time in Settings → Profile. Neither is required for the app to function.
Budget preferences
Monthly spending limits you set for each category are stored in the app's local database.
App settings
Preferences such as whether biometric lock is enabled and the timestamp of your last manual backup are stored in the app's local preferences store on your device.
Anonymous usage analytics
In release builds only, SpendSense uses Firebase Analytics (Google) to collect anonymous, aggregated behavioural events. These events include:
- Which screens are viewed and how often (e.g. Dashboard, Insights, Trends)
- App open frequency (collected automatically by Firebase)
- Whether the user completed onboarding
- Whether the paywall was viewed
- Whether a subscription was started
No transaction amounts, merchant names, account information, or any personally identifiable information are included in these events. Analytics collection is disabled entirely in debug builds.
3. SMS Permission & Bank Message Processing
SpendSense requests the RECEIVE_SMS permission. This is the app's defining feature — automatically reading bank transaction alerts so you never have to enter spending data manually.
Why we need it
Sri Lankan banks send real-time transaction alerts as SMS messages. SpendSense listens for these messages to automatically extract the amount, merchant, and transaction type the moment they arrive — making expense tracking effortless.
Exactly how it works
- SpendSense registers a background listener for new incoming SMS messages using Android's standard broadcast system
- When an SMS arrives, the sender ID is checked against a hardcoded list of known Sri Lankan bank sender identifiers (e.g. SAMPATH, COMBK, HNB, BOC, NSB, SEYLAN, NationsSMS, and others)
- If the sender does not match any known bank ID, the message is immediately discarded without any processing or storage
- If the sender matches, the message body is parsed on-device to extract the transaction amount, merchant name, and credit/debit status
- Only the extracted transaction fields, plus a truncated copy of the SMS body (max 500 characters), are saved to the local database
- OTP messages, promotional messages, and other non-transaction SMS from bank senders are identified and discarded without storage
What we never do
- We do not read your existing SMS inbox — only new messages arriving in real time are intercepted
- We do not transmit SMS content to any server, cloud service, or third party
- We do not process messages from senders outside the known bank sender ID list
- We do not store the full raw SMS text permanently — only a truncated reference copy (max 500 characters) stored locally
Revoking SMS access
You can revoke this permission at any time: Settings → Apps → SpendSense → Permissions → SMS → Deny. SpendSense will continue to work normally for manual transaction entry; only automatic SMS capture will stop.
4. Permissions We Request
| Permission | Why it's needed | Mandatory? |
|---|---|---|
| RECEIVE_SMS | Intercepts incoming bank SMS messages to automatically capture transactions. The app's core feature. | Optional — app works without it |
| USE_BIOMETRIC USE_FINGERPRINT |
Locks the app with your fingerprint, face, or device PIN. Only activated if you enable it in Settings. | Optional — off by default |
| POST_NOTIFICATIONS | Shows a notification when a transaction is captured from SMS, so you can review it immediately. Android 13+ only. | Optional — app works without it |
| INTERNET | Required to verify your subscription status with Google Play Billing. Also used to display this privacy policy and load app fonts. Your transaction data is never transmitted. | ✓ Required |
5. How We Use Your Information
All information in SpendSense is used solely to operate the app's features on your device. Specifically:
- Displaying your transaction history and monthly spending summaries
- Categorising transactions and showing breakdowns by spending category
- Comparing your spending against the monthly budget limits you set
- Personalising the app interface with your name and photo
- Enabling biometric authentication when you choose to activate it
- Sending a local notification when a bank transaction is automatically captured
We do not use your information for advertising, profiling, behavioural analytics, product research, or any purpose other than directly operating the features described above on your own device.
Subscription
SpendSense is free to use. Core transaction tracking is always available at no cost. An optional Pro subscription (SpendSense Pro) unlocks full history and advanced insights, processed entirely through Google Play Billing. SpendSense does not handle payment information directly — all billing is managed by Google. The app contacts Google Play solely to verify whether your subscription is active. No financial transaction data you track in the app is shared with Google or any other party for billing purposes.
6. Data Storage & Security
SpendSense stores all data in two local Android storage systems, both residing in the app's private directory on your device:
- Room (SQLite) database — stores transactions, category rules, and budget limits. This database is encrypted with AES-256 using SQLCipher. The encryption key is generated randomly at first launch and stored in Android Keystore, which is hardware-backed on supported devices.
- Encrypted SharedPreferences — stores security-sensitive preferences (such as subscription trial state) using Android Keystore-backed AES-256-GCM encryption.
- DataStore Preferences — stores your profile name, photo file path, biometric lock setting, and onboarding state.
SpendSense sets android:allowBackup="false" in its manifest, which prevents Android from including app data in Google's automatic cloud backup. Your data never leaves your device through system backup channels.
Device security
Your data is as secure as your device. We strongly recommend setting a screen lock on your phone and enabling SpendSense's biometric lock feature (Settings → Security) for an additional layer of protection against unauthorised access.
7. Manual Backup & Restore
SpendSense includes a manual backup feature (Settings → Data & Backup) that exports your transaction history as a JSON file to wherever you choose on your device.
- Backup creation is always initiated by you — it never happens automatically in the background
- When you create a backup, Android's share sheet appears and you decide where to save or send it (local storage, a cloud drive, email, etc.)
- The backup file contains your parsed transaction records — amount, merchant, category, and date. Raw SMS content is never included in backup exports
- SpendSense has no visibility into, or control over, what you do with the backup file once it has been exported
- If you choose to store a backup in a cloud service (e.g. Google Drive, Dropbox), that service's own privacy policy applies to that file
8. Data Sharing
We share nothing. With no one.
SpendSense has no backend servers, no advertising SDK, and no data-selling integrations of any kind. The only third-party SDKs are Firebase Crashlytics (crash reporting) and Firebase Analytics (anonymous usage events) — both operated by Google. No financial data, transaction amounts, merchant names, or personally identifiable information is ever shared with these or any other party.
9. Your Rights & Controls
Because all data is stored locally on your device, you have direct, complete control over it at all times:
- View — all transactions, budgets, and settings are visible within the app
- Edit transactions — tap any transaction to correct the amount, merchant, category, or date
- Delete a transaction — tap any transaction, then choose Delete
- Update your profile — change or remove your name and photo at any time in Settings → Profile
- Revoke SMS permission — device Settings → Apps → SpendSense → Permissions → SMS
- Export your data — Settings → Data & Backup → Create Backup produces a portable JSON file
- Delete everything — uninstall SpendSense, or go to device Settings → Apps → SpendSense → Storage → Clear Data. This is immediate and permanent.
10. How to Delete Your Data
SpendSense stores all data exclusively on your device — there are no SpendSense servers holding your information. You can permanently delete all of your data at any time using either of the methods below.
Method 1 — Uninstall the app
Long-press the SpendSense icon → tap Uninstall (or go to device Settings → Apps → SpendSense → Uninstall). This permanently and immediately deletes:
- All transaction records (amounts, merchants, categories, dates)
- All budget limits you have set
- Your profile name and photo
- All app preferences and settings
- The encrypted local database and all its contents
Method 2 — Clear app data without uninstalling
Go to device Settings → Apps → SpendSense → Storage → Clear Data. This deletes the same data listed above while keeping the app installed. The app will restart as if freshly installed.
Deleting specific data
- Individual transactions — tap any transaction in the app → tap Delete Transaction
- Profile name or photo — Settings → Profile → remove at any time
- Budget limits — Settings → Budgets → delete any category budget
What is deleted and what is kept
When you uninstall or clear app data, all data is deleted immediately with no retention period. SpendSense holds no copies of your data on any server — once deleted from your device, it is gone permanently and cannot be recovered by us or anyone else.
The only exceptions are anonymous data held by Firebase (Google): crash reports (Crashlytics) and usage events (Analytics). These contain no transaction data, no personal information, and no financial data. Firebase retains crash reports for 90 days and analytics events per Google's standard retention settings. Neither can be individually deleted by us as they are anonymous and not linked to your identity.
Questions about data deletion? Email spendsense.support@gmail.com and we will respond within 5 business days.
11. Data Retention
SpendSense retains your data for as long as you choose to keep the app installed and do not manually delete it. There is no automatic expiry or deletion of data within the app. Because all data is stored locally, you — not us — control exactly how long it is kept.
12. Children's Privacy
SpendSense is a personal finance tool intended for adults. The app is not directed at children under the age of 13 and we do not knowingly collect personal information from children. If you believe a child has used the app, please uninstall it and clear the app data from device Settings.
13. Changes to This Policy
We may update this Privacy Policy as the app evolves. When changes are made, the "Effective" date at the top of this page will be updated. Material changes will be highlighted prominently. We encourage you to review this page periodically.
Continued use of SpendSense after any changes constitutes your acceptance of the updated policy.
14. Contact Us
If you have any questions, concerns, or requests regarding this Privacy Policy or your personal data, please reach out:
Privacy Enquiries
Email us at spendsense.support@gmail.com
We aim to respond to all privacy enquiries within 5 business days.