Privacy Policy
Last updated: September 9, 2026
Our Commitment: Expense Tracker follows a "Privacy First" philosophy. Your financial data belongs to you. We designed the app to work fully offline by default, and your data never leaves your device unless you explicitly choose to enable cloud synchronization.
This Privacy Policy describes how MKN Labs ("we", "us", or "our") collects, uses, stores, and protects your information when you use the Expense Tracker: Budget & Spend mobile application (the "App") and related services.
By using the App, you agree to the collection and use of information in accordance with this policy.
1. Information We Collect
1.1 Information You Provide
- Financial Data: Transactions, categories, budgets, recurring rules, payment methods, and notes you enter into the App. All financial data is stored locally in an encrypted Room database on your device by default.
- Account Information: If you create an account, we collect your email address and password (hashed and stored securely via Firebase Authentication). If you sign in with Google, we receive your name, email address, and profile picture URL from your Google account. If you use a passwordless Magic Link, we collect your email address to send the sign-in link.
- Profile Information: Your chosen display name, gender (optional), date of birth (optional), phone number (optional), country, and any profile photo you upload. Profile photos are stored locally and, if cloud sync is enabled, uploaded to Firebase Firestore.
- PIN & Security Question: If you enable App Lock, a salted hash of your PIN and your chosen security question/answer are stored locally on your device. We never transmit your PIN or security answer to our servers.
1.2 Information Collected Automatically
- Device Identifier: We collect a unique Android Device ID (Android ID) strictly to manage and enforce the secure device limit of 4 synchronized devices per premium account. This is stored in Firebase Firestore when you enable cloud sync.
- Device Model: The device model name (e.g., "Pixel 7") is associated with your device registration so you can identify and manage your connected devices in the App's settings.
- Advertising ID: Google AdMob may collect your Advertising ID to serve personalized or non-personalized advertisements. You can opt out of personalized advertising in your device settings.
- FCM Registration Token: When cloud sync is enabled, the App registers a Firebase Cloud Messaging (FCM) token for your device. This token is stored in Firebase Firestore under your user account and is used exclusively to deliver push notifications to your connected devices (e.g., security alerts, financial insights). Stale or invalid tokens are automatically cleaned up. The token itself does not contain personal information — it is a randomly generated identifier managed by Google's FCM infrastructure.
1.3 Guest Mode (Anonymous Usage)
You can use the App entirely without an account in Guest Mode. In this mode, we create an anonymous Firebase Authentication session tied only to your device. All your financial data remains strictly local and is never transmitted to our servers. You may later convert your guest account to a full account to enable cloud sync — your existing data will be linked to your new account during this process.
1.4 Voice Transaction Input (Optional)
With your explicit permission (the RECORD_AUDIO permission), the App can capture your voice to add transactions via natural language. This feature is entirely optional and off by default — you will be asked for microphone permission the first time you tap the mic button, and if you deny it the feature simply stays off. You can revoke the permission at any time in your device settings.
When enabled, voice input works as follows:
- Speech-to-Text: Your spoken words are converted to text using Android's built-in
SpeechRecognizer API. When you have an internet connection, Google's cloud speech recognition service processes the audio. When offline, on-device speech recognition is used. Audio is processed in real-time and is not stored or transmitted by the App — it is sent directly to Google's speech recognition service for conversion and discarded immediately.
- Offline Voice Parsing (Free): The transcribed text is parsed locally on your device using a rule-based parser that extracts amount, category, merchant, and date. No data leaves your device for this path.
- AI Voice Parsing (Free, 10/day limit): When you have an internet connection and have not exceeded the daily limit of 10 AI-powered parses, the transcribed text is sent to Google Gemini (via Firebase AI Logic) for more accurate parsing of complex or ambiguous inputs. To improve accuracy, the following metadata is sent along with your spoken text: your selected currency, locale, your category names, and your payment method names. No financial data (amounts, transactions, merchant names) is sent — only the metadata needed for accurate parsing. Your AI usage is tracked locally on your device and never transmitted to our servers.
- Fallback: If the AI parser fails or the daily limit is reached, the App automatically falls back to the offline parser. Your data always stays on your device in this case.
1.5 Smart SMS Import (Optional)
With your explicit permission (the RECEIVE_SMS permission), the App can read incoming SMS messages on your device to detect transaction messages from banks, payment apps, or UPI services (e.g., amount, sender/merchant, and suggested category). This feature is entirely optional and off by default — you will be asked once whether you want to enable it, and if you deny it the feature simply stays off. You can revoke the permission at any time in your device settings or turn the feature off in the App's settings.
When enabled, SMS processing works as follows:
- On-device only: All parsing and detection happens locally on your device. SMS content is never uploaded, transmitted, or shared with us or any third party.
- Nothing is stored: The detected details are shown to you in a notification so you can review them. They are never written to storage or sent to our servers. If you choose to save a transaction, only the transaction you confirm is added to your local database — and to your synced data only if cloud sync is enabled.
- You stay in control: You review the suggested amount, merchant, and category before saving, and you can disable the feature at any time.
2. How We Use Your Information
We use the collected information for the following purposes:
- To Provide Core Functionality: Store, display, and analyze your financial data (transactions, budgets, charts, etc.).
- To Enable Cloud Synchronization: Sync your data across devices using Firebase Firestore when you enable cloud sync (Pro feature).
- To Manage Your Account: Authenticate your identity, send password reset or magic link emails, and manage your profile.
- To Enforce Security Limits: Use your device ID to enforce the 4-device sync limit and prevent unauthorized access.
- To Send Notifications: Send daily reminders, budget limit alerts, upcoming bill notifications, and missed entry reminders — all scheduled and processed locally on your device.
- To Power Smart SMS Import: Parse detected bank transaction SMS messages locally on your device to propose transactions you can review and save with one tap. SMS content is never transmitted to our servers.
- To Enable Voice Transaction Input: Convert your spoken words to text using Android's SpeechRecognizer API (cloud or on-device depending on connectivity), then parse the transcribed text locally (offline parser) or via Google Gemini AI (when online and within daily limit) to create transaction suggestions. Your spoken audio is never recorded or stored by the App. When using the AI parser, only your transcribed text and metadata (currency, locale, category names, payment method names) are sent to Google Gemini — no financial data is transmitted.
- To Process Feedback: When you submit feedback through the App, we collect your email address and message so we can respond and improve the App. Feedback is stored in our internal feedback database (Firebase Firestore) and a private Google Sheets form used by the development team.
- To Improve the App: Use aggregated, anonymized analytics (Firebase Analytics) to understand usage patterns and improve the App experience.
- To Serve Advertising: Display native, interstitial, and rewarded advertisements via Google AdMob. Ad personalization is handled in accordance with your device-level ad preferences. Rewarded ads allow you to watch a short video to temporarily unlock ad-free access (1 hour) or Pro features — this is entirely optional.
- To Provide Remote Configuration: Use Firebase Remote Config to deliver feature flags and configuration updates without requiring an App update.
- To Deliver Push Notifications: Use Firebase Cloud Messaging (FCM) to send security alerts (e.g., new device login, account email changes) and weekly financial insights (for Pro users) to your registered devices. FCM tokens are stored in Firebase Firestore and managed server-side.
- To Run Server-Side Processing: Use Firebase Cloud Functions for server-authoritative operations such as ProPass coupon redemption, security event notifications, and weekly financial insight analysis. These functions process your data in a secure, server-side environment and never expose sensitive fields to the client.
- To Track Notification Engagement: Record when notifications are shown and dismissed (locally on your device) to improve notification timing and relevance. This data is used solely within the App and is not transmitted to our servers.
3. Third-Party Services
We use the following trusted third-party services to operate and improve the App. Each service is contractually bound to protect your data and may only process it in accordance with our instructions.
-
Google Firebase Authentication — Auth
Manages user sign-in (Google, Email/Password, Anonymous, Magic Link). Your email address and password (hashed) are stored securely by Firebase. Firebase Privacy Policy
-
Google Firebase Firestore — Cloud Storage
Stores your synced financial data (transactions, budgets, categories, recurring rules, goals) and profile information when cloud sync is enabled. Data is encrypted in transit (TLS) and at rest. Firebase Privacy Policy
-
Google Firebase Analytics — Analytics
Collects aggregated, anonymized usage data such as screen views, feature interactions, and crash-free sessions to help us improve the App. This data cannot be used to identify you personally. Firebase Privacy Policy
-
Google Firebase Remote Config — Configuration
Fetches server-side configuration values (e.g., feature flags, sync limits) to enable dynamic updates. No personal data is transmitted. Firebase Privacy Policy
-
Google AdMob — Advertising
Serves advertisements within the App. AdMob may collect your Advertising ID and device information to display personalized or non-personalized ads. You can reset your Advertising ID or opt out of personalized advertising at any time in your device settings. AdMob Privacy & Security
-
Google User Messaging Platform (UMP) — Consent
Manages user consent for data collection and ad personalization in compliance with GDPR (Europe) and CCPA (California). You will be presented with a consent dialog on your first launch if you are in a regulated region. UMP Documentation
-
Google Play Billing — Payments
Processes payments for Pro Pass (lifetime) and subscription purchases. Google Play handles all payment processing. We never see or store your payment card details. Purchase receipts and expiry timestamps are stored in Firebase Firestore to manage your access level. Google Payments Privacy Notice
-
Google Firebase Cloud Functions — Server-Side
Executes server-side logic for security-critical operations: ProPass coupon validation and redemption (atomic read-validate-grant transaction), Firestore-triggered security alerts (new device login, account email changes), and a scheduled weekly financial insights engine that analyzes spending trends for Pro users. Cloud Functions run in a secure server environment with Admin SDK privileges. Firebase Privacy Policy
-
Google Firebase Cloud Messaging (FCM) — Push Notifications
Delivers push notifications to your registered devices, including security alerts (new device connections, account changes) and financial insights (Pro users). FCM tokens are stored in Firestore under your user account and are cleaned up automatically when stale. Firebase Privacy Policy
-
Google Gemini (via Firebase AI Logic) — AI Processing
Powers the AI Voice Parser for complex or ambiguous voice transaction inputs. When you use voice input with an internet connection (within the 10/day free limit), your transcribed spoken text and metadata (currency, locale, category names, payment method names) are sent to Google Gemini for parsing. No financial data or transaction history is sent. Audio is never sent — only the already-transcribed text. Gemini processes the request and returns a structured transaction suggestion. Your AI usage count is tracked locally on your device. Google Privacy Policy
-
Google Sheets (via Google Apps Script) — Support
Feedback you submit through the in-App feedback form (your email address and message) is forwarded to a private Google Sheets form used by the development team to triage and respond to support requests. No financial data is ever included. Google Privacy Policy
4. Data Storage & Security
4.1 Local Storage (Default)
All your financial data is stored in an encrypted SQLite database (Room) on your device's internal storage. By default, this data never leaves your device. The App does not require an internet connection for core functionality.
4.2 Cloud Storage (Optional)
If you enable cloud synchronization (Pro feature), your data is securely transmitted to and stored in Firebase Firestore. Data in transit is encrypted using TLS 1.3. Data at rest is encrypted using Google's server-side encryption. We implement Firestore Security Rules that restrict data access to the authenticated user only — even we as developers cannot read your data.
4.3 Local Auto Backup
The App can automatically create local database backup files (`.db` files) to an app-specific directory on your device's external storage at a configurable frequency (default: every 7 days). These backups remain on your device and are not transmitted to our servers. You can manage, delete, or restore from these backups at any time in the Data Management settings. The App also supports importing transaction data from older app versions via a Legacy Import tool in the same section.
4.4 Security Features You Control
- App Lock (PIN): Secures the App with a 4-digit PIN. The PIN hash and optional security question/answer are stored locally. We never have access to your PIN.
- Biometric Lock: Optionally use fingerprint or face unlock. Biometric authentication is handled entirely by the Android system. The App never sees, stores, or transmits your biometric data.
- Auto-Lock: Automatically lock the App after a period of inactivity (configurable from "Immediately" to 60 minutes).
- Scrambled Keypad: Randomizes the PIN keypad layout to prevent screen recording inference attacks.
- Block Screenshots: Prevents screen capture and screen recording of the App content.
- Blur in Recents: Blurs the App preview in the device's recent apps switcher for added privacy.
- Privacy Mode (Auto-Hide): Automatically hides financial amounts after 10 seconds of inactivity.
5. Notifications
The App uses notifications for the following purposes. Notifications are delivered via two mechanisms:
- Local notifications — processed entirely on your device, requiring no internet connection.
- Push notifications (FCM) — delivered via Firebase Cloud Messaging when cloud sync is enabled. These include security alerts and financial insights processed server-side.
5.1 Local Notifications
- Daily Reminders: Encourages you to log your daily expenses. Includes personalized, dynamic messages based on time of day and spending patterns.
- Budget Limit Alerts: Alerts you when you approach (75%, 90%) or exceed a category budget. Related alerts are grouped into collapsible summaries in the notification shade.
- Large Transaction Alerts: Notifies you when a single expense exceeds your configured threshold amount.
- Upcoming Bill Notifications: Reminds you of upcoming recurring transactions at 7, 3, and 1 day before the due date, and on the due date itself. Alerts for different bills are grouped into collapsible summaries.
- Missed Entry Reminder: Notifies you if no transactions were logged for 2 consecutive days.
- Savings Goal Milestones: Alerts you when you reach 25%, 50%, 75% of a savings goal, when a goal is achieved, or when you fall behind schedule. Goal alerts are grouped into collapsible summaries.
- Weekly Spending Summary: A weekly recap of your spending, delivered on a configurable day and time (default: Sunday 8 PM).
- Smart SMS Import Notification: When Smart SMS Import is enabled, shows a notification with the detected transaction details from a bank SMS so you can save, change, or open it — all processing happens on your device.
- Sync Status Notifications: Informative notifications about cloud sync progress, pending syncs, or sync failures.
- Auto-Backup Failure Alert: Notifies you if a local automatic backup fails.
5.2 Push Notifications (FCM)
When cloud sync is enabled, the App receives push notifications via Firebase Cloud Messaging for:
- Cloud & Security Alerts: Notifies you when a new device signs into your account, or when your account email is updated. These are delivered to all your registered devices except the one that triggered the event.
- Weekly Financial Insights (Pro): For Pro users, a server-side engine analyzes your spending trends (week-over-week comparison, category spikes) and sends a push notification with actionable insights.
5.3 Notification Controls
All notifications require the POST_NOTIFICATIONS permission on Android 13+. You can enable or disable each notification type individually in the App's Notification Settings at any time. Notification channels are organized by type (Daily Reminders, Budget Alerts, Budget Exceeded, Recurring Transactions, SMS Import, Goal Reminders, Weekly Reports, Cloud Security, Financial Insights, Sync Status) and can be independently configured in your device's system settings.
6. Data Retention & Deletion
We believe you should have full control over your data:
🗑️ Want to delete your account? Visit our
Account Deletion page for step-by-step instructions, data details, and email support.
- Local Data: You can clear all local data at any time via Data Management → Delete All Data & Reset App in settings.
- Individual Data: You can edit or delete individual transactions, budgets, categories, and other entries at any time within the App.
- Local Backups: Old local backups (more than 5) are automatically cleaned up. You can manually delete backups via the backup restore sheet.
- Full Account Deletion: Authenticated users can use the Delete Account & All Data feature in Settings. This will:
- Delete your identity from Firebase Authentication.
- Delete all your synced data from Firebase Firestore (transactions, budgets, categories, recurring rules, goals, payment methods, profile).
- Remove your device registrations from the connected devices list.
- Delete any managed profile photos.
This action is irreversible.
- Data Export: You can export your data as a JSON file or SQLite database backup at any time before deletion via Data Management.
- Email Requests: If you no longer have access to the App, you may request data deletion by emailing us at the address below. We will process your request within 30 days.
7. No Sale of Personal Information
We do not sell, rent, or trade your personal information to third parties. The only third parties that receive your data are the service providers listed in Section 3, and only to the extent necessary to provide their respective services (authentication, cloud storage, analytics, and advertising). We do not share your financial transaction data with any third party for their own marketing purposes.
8. Children's Privacy
The App is not directed at children under the age of 13 (or the applicable age of consent in your country). We do not knowingly collect personal information from children. If we become aware that a child under 13 has provided us with personal information, we will delete it immediately. If you are a parent or guardian and believe your child has provided us with personal data, please contact us at the email below.
Our ad serving partner (Google AdMob) is configured with tagForUnderAgeOfConsent = false in compliance with COPPA requirements.
9. International Users & Your Rights
If you are located in the European Economic Area (EEA), the United Kingdom, or California, you have the following rights under applicable data protection laws (GDPR / UK GDPR / CCPA):
- Right to Access: Request a copy of the personal data we hold about you.
- Right to Rectification: Request correction of inaccurate or incomplete data.
- Right to Erasure ("Right to be Forgotten"): Request deletion of your data (use the in-app account deletion feature or email us).
- Right to Restrict Processing: Request restriction of how your data is processed.
- Right to Data Portability: Request a copy of your data in a structured, machine-readable format (use the JSON export feature).
- Right to Object: Object to the processing of your data for direct marketing or analytics purposes.
- Right to Withdraw Consent: Withdraw consent at any time where we rely on consent to process your data (e.g., UMP consent for ad personalization).
To exercise any of these rights, please contact us at the email below. We will respond within 30 days. You also have the right to lodge a complaint with your local data protection authority.
10. Permissions
The App requests the following Android permissions:
USE_BIOMETRIC — To enable fingerprint and face unlock for App Lock. Biometric data is handled by the Android system, not by the App.
POST_NOTIFICATIONS — To send daily reminders, budget alerts, and bill notifications. All notifications are generated and processed locally.
RECEIVE_SMS — Optional, off by default. Enables Smart SMS Import, which reads incoming SMS messages on your device to detect bank transaction messages. All processing happens locally on your device, and SMS content is never transmitted or stored by us. The App never reads SMS until you grant this permission, and the feature is disabled if you deny it.
RECORD_AUDIO — Optional, off by default. Enables Voice Transaction Input, which captures your voice to add transactions via natural language. Audio is processed in real-time by Android's SpeechRecognizer API and is never recorded, stored, or transmitted by the App. When online, Google's cloud speech recognition processes the audio for transcription. The App requests this permission only when you tap the mic button, and the feature is disabled if you deny it.
com.google.android.gms.permission.AD_ID — Required by Google AdMob on Android 13+ to serve advertisements. Used only for ad personalization in accordance with your device-level ad preferences.
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS — Used to keep the App's background workers running reliably so daily reminders, budget alerts, weekly summaries, goal reminders, and cloud sync happen on time. This only asks to exempt the App from battery optimization; if denied, the App continues to work normally.
INTERNET — To communicate with Firebase services (authentication, cloud sync, remote config, cloud functions, FCM push notifications) and load advertisements.
ACCESS_NETWORK_STATE — To check network connectivity before attempting cloud synchronization, push notification delivery, or ad loading.
11. Changes to This Privacy Policy
We may update this Privacy Policy from time to time to reflect changes in our practices, legal requirements, or App features. When we make material changes, we will update the "Last updated" date at the top of this page.
We encourage you to review this Privacy Policy periodically. Continued use of the App after changes constitutes your acceptance of the updated policy.
12. Contact Us
If you have any questions, concerns, or requests regarding this Privacy Policy or your data, please contact us:
- Email: mknlabs.dev@gmail.com
- Developer: Manish Kumar Nayak
- Studio: MKN Labs
- Data Protection: For GDPR-related inquiries, please include "GDPR Request" in the subject line.