PocketFi! Get the app →
Security & data

Where your money data actually lives.

The non-legal version of our privacy policy. Plain-English explanation of what data we collect, where it sits, how it's protected, and how to get it out.

block
No ads, no trackers.

The app has no analytics SDK, no ad SDK, no third-party tracker. The marketing site doesn't run any either — verifiable from the open-source repo.

visibility_off
No selling your data.

We don't sell, rent, or transfer your data to any third party. There is no business model in which this changes — the app stays free.

lock
Encrypted in transit and at rest.

All Firebase traffic is TLS 1.3. Cloud Firestore encrypts data at rest in Google Cloud. Your phone's local cache uses platform-native encryption.

phone_iphone
OCR runs on your phone.

Receipt images stay on-device — the ML model runs locally and only the extracted text fields ever leave your phone. Read why →

delete_outline
One-tap account deletion.

Settings → Account → Delete. Removes your auth record, all transactions, all wallets you own, and Storage receipt images within 24 hours.

download
Export anytime.

Settings → Export. CSV of every transaction across every wallet. Coming Q3 2026: .xlsx and per-wallet exports.

What we store

The full inventory.

Google account email
Firebase Auth
Sign-in and account recovery.
Display name + avatar URL
Firebase Auth
Shown next to your transactions in shared wallets.
Transactions (amount, date, category, note)
Cloud Firestore
The core of the app — visible only to wallet members.
Wallet membership
Cloud Firestore
Knowing who can see which wallet.
Receipt images (optional)
Firebase Cloud Storage
You attach them; we store them privately scoped to your account.
Device push token
Firebase Messaging
Bill-reminder notifications. Removable in Settings.
Crash / error reports
Firebase Crashlytics
Stack traces only. No transaction content.

That's it. There is no other database, no analytics warehouse, no marketing tool. Source: firestore.rules in the app repository.

How access is enforced

You can read the rules.

Firestore enforces a single source of truth: only authenticated members of a wallet can read or write its transactions. Here's the actual rule that gates it (excerpt):

match /wallets/{walletId} {
  allow read, update, delete: if request.auth != null
    && request.auth.uid in resource.data.memberIds;

  match /transactions/{txId} {
    allow read, write: if request.auth != null
      && request.auth.uid in get(
           /databases/$(database)/documents/wallets/$(walletId)
         ).data.memberIds;
  }
}

Even if a bug in our app code tried to read someone else's wallet, Firestore would reject the request server-side.

Found a vulnerability?

Tell us privately first.

Email hello@pocketfi.app with details and reproduction steps. We aim to acknowledge within 48h, patch within 14d, and credit you in the changelog.

mail_outline hello@pocketfi.app
Audit yourself

It's all open source.

Every Firestore rule, every line of Dart, every Cloud Function — auditable on GitHub. Open an issue with anything that looks off.

GitHub repo Read full privacy policy