Cowrie: Expense Tracker · Android
Cowrie keeps everything on your phone. It has no account system, no server, and makes no network requests of its own. Nobody — the developer included — receives your expenses, your amounts, your notes, or anything else you type into the app. There are no ads, no analytics, no trackers, and no third-party SDKs that phone home.
The only way your data leaves the device is when you export a backup or a CSV file and choose where to send it.
This policy describes how the Android application Cowrie: Expense Tracker
(“Cowrie”, the “App”; listed on Google Play as Cowrie: Expense Tracker,
package name com.cowrie.expenses) handles information. It covers the App
itself and this website where the policy is published. It does not cover the app store you
downloaded the App from, your device manufacturer, your cloud-storage provider, or any other app
you choose to share an exported file with — each of those has its own policy.
The App is a personal, single-user, offline expense tracker. It is designed around one idea: your financial records are yours, they stay on your hardware, and no part of the App's normal operation requires them to travel anywhere.
Nothing. The developer of Cowrie collects, receives, stores, transmits, sells, rents, or shares no personal data whatsoever from users of the App.
To be explicit, the App does not collect or transmit any of the following:
Because nothing is collected, there is nothing for the developer to disclose, breach, subpoena, or be asked to delete. Requests for “a copy of my data” can only be answered by you, on your device, using the export feature described in section 6.
Everything you enter is written to a private SQLite database inside the App's own sandboxed storage directory. On Android, that directory is readable only by the App itself (and by you, through the App). It is never uploaded.
| What is stored | Fields | Purpose |
|---|---|---|
| Entries | Type (expense, income, transfer), amount, date, optional note, category, account, destination account for transfers, timestamps | The record of your spending — the core function of the App |
| Accounts | Name, type, icon, opening balance, whether it counts toward your total, archive state | Grouping entries and calculating balances |
| Categories | Name, short label, kind, colour, icon, parent category | Classifying entries and drawing the charts |
| Budgets | Amount, optional category, carry-over flag, 80% warning flag | Budget progress and the local alerts described in section 5 |
| Recurring rules | Name, amount, type, schedule, next due date, pause state | Creating repeating entries on schedule |
| Quick picks | Label, optional amount, category, account | One-tap shortcuts on the add screen |
| Settings | Currency symbol and code, digit grouping, month and week start day, theme, lock and reminder toggles, reminder time, last backup time, last used account, onboarding state | Your preferences |
| App lock PIN | A 4-digit PIN, if you turn the lock on | Stored separately in the Android Keystore-backed secure store — see section 4 |
Temporary files are written to the App's cache directory only when you export a backup or a CSV. They are overwritten on the next export and are removed by Android when it reclaims cache space.
You may optionally protect the App with a 4-digit PIN and, if your device supports it, a fingerprint or face unlock.
expo-secure-store),
which is backed by the Android Keystore. It is kept deliberately outside the
main database, so that it is never written into an exported backup file.The App can show two kinds of notification: a budget alert when spending crosses 80% or 100% of a budget, and an optional daily reminder at a time you choose. Both are local notifications — they are scheduled by the App on your device and fired by Android on your device.
The App does not use push notifications. It never requests a push token, never registers with any push service, and cannot receive a message from the internet. Notification permission is requested only at the moment there is something to show, and declining it does not disable any other feature.
You can export your data in two formats:
Both are handed to the standard Android share sheet, where you choose the destination — a file manager, an email, a messaging app, a cloud drive, or anything else you have installed. The App does not choose for you and receives no confirmation of where the file went; it only records the timestamp of the moment you exported.
Important: an exported file is unencrypted plain text. Once you send it somewhere, it is governed by the privacy policy of whichever service or app you sent it to, not by this one. Store backups somewhere you trust.
Restoring reads a backup file that you pick yourself through the Android document picker. The App can only read the single file you choose; it has no ability to browse your storage.
The App participates in Android's standard backup mechanism (allowBackup is
enabled). If you have Android Backup turned on in your device settings, Android may copy the App's
data — including the expense database — to your own Google account as part of the device-wide
backup, so that it can be restored when you set up a new phone.
This transfer is performed by Android, not by the App, and the copy goes to your Google account. The app lock PIN is excluded from it. If you prefer that no copy exists off-device, turn off backup for this app in Settings → System → Backup on your phone. Google's handling of that backup is covered by the Google Privacy Policy.
Android requires an app to declare every permission it or its libraries might use. Several of the entries below come from standard framework libraries rather than from a feature you will ever see. The full, honest list:
| Permission | Used for |
|---|---|
POST_NOTIFICATIONS |
Showing the local budget alerts and daily reminder. Requested only when you enable one. Optional. |
USE_BIOMETRIC, USE_FINGERPRINT |
The optional fingerprint or face unlock. Optional. |
VIBRATE |
Haptic feedback when you tap the keypad and save an entry. |
RECEIVE_BOOT_COMPLETED |
Re-registering your scheduled local reminders after the phone restarts, so they are not silently lost. |
READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE (Android 12 and older only) |
Saving an exported backup or CSV on older Android versions. Not requested on Android 13 or newer. |
INTERNET, ACCESS_NETWORK_STATE |
Declared by the React Native framework. The App makes no network requests — see section 9. |
WAKE_LOCK, SYSTEM_ALERT_WINDOW, launcher badge permissions,
c2dm.permission.RECEIVE |
Declared by bundled framework libraries (React Native, the notifications module and its messaging dependency). The App uses none of them for any feature, and does not register for push messages. |
The App requests no permission for location, contacts, camera, microphone, photos, SMS, call logs, calendar, or nearby devices, and cannot access any of them.
Because “offline” is the central promise of this App, here is exactly what that means:
You can verify this yourself: the App is fully functional in airplane mode, and a network monitor will show it making no connections.
The App integrates no third-party services, no SDKs that transmit data, and no payment processors. It is free and contains no purchases or subscriptions.
Two third parties are nonetheless worth naming because they sit around the App rather than inside it:
Open-source components bundled in the App — the Newsreader, Schibsted Grotesk, and Noto Sans Bengali typefaces under the SIL Open Font License, and the Lucide icon set under the ISC license — are static assets. They transmit nothing.
Your data is retained on your device for exactly as long as you keep it there. The developer retains nothing, because the developer never receives anything.
To delete your data you have full control at any time:
Deletion is permanent and cannot be undone by the developer, who has no copy. If you want your records to survive, export a backup first (section 6). If you have Android system backup enabled, also remove the backup from your Google account if you want no copy to remain.
What the App cannot protect against: a rooted or compromised device, malware with elevated privileges, someone who knows your PIN or can unlock your phone, and exported backup files that you place somewhere insecure. Keeping your device locked and your backups private is your part of the arrangement. No method of electronic storage is perfectly secure; the App is designed to minimise how much is at stake.
Data-protection laws such as the EU and UK GDPR, the California Consumer Privacy Act, and similar regimes give you rights of access, correction, deletion, portability, and objection to processing.
The App is architected so that you exercise all of them directly, without asking anyone: you hold the only copy, you can view and correct every field in the App, you can export it in a portable open format (JSON or CSV), and you can erase it completely. Since the developer is neither a controller nor a processor of any personal data you enter — none of it is ever received — there is no request that the developer is able to fulfil on your behalf, and no data sale or sharing to opt out of. The App does not sell or share personal information, and never has.
The App is not directed at children under 13 and does not knowingly collect any information from anyone, including children. There is no sign-up, no profile, no content from other users, and no advertising. A parent who has questions is welcome to get in touch.
If the App changes in a way that affects your privacy, this policy will be updated and the effective date at the top of the page revised. Material changes — anything that would alter the core promise that nothing leaves your device — will also be noted in the App's release notes. Previous versions will remain available on request. Continuing to use the App after an update means you accept the revised policy.
Questions about this policy, or about how the App handles data, can be sent to:
Cowrie: Expense Tracker — imran.cse.ku@gmail.com
Because the App collects nothing, the developer cannot look up, recover, restore, or delete anything on your behalf — but questions about how it works are always welcome.