Privacy Policy
Portfolio Dashboard · Last updated: 1 November 2026
Portfolio Dashboard ("the App") is a personal investment tracking tool built for Indian investors. This policy explains what data we collect, where it is stored, and what we do — and don't do — with it. It covers the Android app, the web app at portfoliodashboard.pages.dev/app/, and the iOS, macOS and Windows builds given out directly rather than through a store, which handle your data the way the Android app does.
1. Data We Collect
| Data Type | Purpose | Stored Where |
|---|---|---|
| Email address | Google Sign-In for authentication and subscription management | Firebase Authentication |
| Broker API credentials | Fetching holdings and trades from your broker | Device Keychain/Keystore (native). In memory only, never persisted, in the web app |
| Portfolio data (holdings, trades, NAV, goals) | Displaying your portfolio, calculating P&L and returns | Your device. In the web app, your browser's local storage, which survives a reload |
| Subscription status | Managing your free trial or paid plan | Firebase Firestore, keyed by your email |
| Payment submission (plan, amount, timestamp) | Verifying a UPI payment you have made | Firebase Firestore |
| Backup files you choose to upload | Restoring your data on another device | Your Google Drive, or our Firebase Storage if you pick that destination |
| A shared portfolio, if you create or join one (encrypted), and who is in it (Google account ID, email, role) | Keeping one portfolio in sync between the people sharing it | In flexibility mode, our Firebase Firestore and Storage. In privacy mode, a file in your own Google Drive, and nothing on our servers |
2. How Your Data Is Stored
- Locally on your device — portfolio data (holdings, trades, mutual funds, NPS, EPF, gold, fixed deposits, small savings, insurance, goals, and the people you track) is stored on your device. It doesn't leave the device unless you export it, turn on a backup, or share it.
- Encrypted backups — full backups and credential exports are encrypted with AES-256 using a passphrase you choose. We cannot decrypt them. Keep the passphrase safe: without it, a backup cannot be recovered by anyone, including us.
- Broker credentials — held in your device's secure storage (iOS Keychain, Android Keystore, macOS Keychain) and never sent to our servers. In the web app they live in memory only and are gone on refresh: no API key, secret, password or TOTP seed is ever written to browser storage.
- In the web app, some data does persist — your trades, and the label and broker name of each account, so your holdings can still be shown after a reload. Credentials are the exception above, and they are what a reload discards; you re-supply them by importing your encrypted credentials file.
- Firebase — your email address, trial and expiry dates, plan, and payment submissions are stored in Firebase Authentication and Firestore. This is what the paywall checks.
- Firebase Storage (optional) — if you select app cloud storage as your backup destination, encrypted backup files are uploaded to our Firebase project under
backups/<your email>/. The contents are encrypted with your passphrase, so we can store the file but cannot read it. - Shared portfolios in flexibility mode (optional) — the shared portfolio is stored in our Firebase Firestore (and Storage, when it is large), encrypted with the passphrase the people sharing it chose, which we never see. To let members be invited and removed, we also store each member's Google account ID, email address and role, and the invite codes you create. Invites, membership changes and deleting a shared portfolio run as Firebase Cloud Functions. Invite codes expire after 7 days unless you choose otherwise, the safety copy kept before a shared portfolio is overwritten is deleted after 30 days, and a shared portfolio nobody has changed for 12 months is deleted automatically.
3. Google Drive Access
Drive backup and shared-portfolio sync are optional. When you enable either, the
App requests the drive.file scope, which is the narrowest Drive scope
Google offers: it grants access only to files the App itself creates, plus any file
you explicitly choose in the Google file picker. The App cannot list, read, or
modify the rest of your Drive.
- Automatic and manual full backups are written to your Drive encrypted with your passphrase.
- Some per-asset sync files (for example US stocks and mutual fund holdings) are written to your own Drive as plain JSON so you can inspect or move them yourself.
- A shared portfolio in privacy mode is a file in your Drive that you share with the people you choose. Sharing is done by you, in Drive, and can be revoked there. (Flexibility mode doesn't use Drive; it is described in section 2.)
- Drive files are yours. Deleting them in Drive removes them; we hold no copy.
- Drive backup works in the Android, iOS, macOS and Windows apps and in the browser. In the browser the Drive authorization itself is not stored, so you reconnect Drive each session.
4. What We Do NOT Do
- We do not sell, share, or rent your data to any third party.
- We do not use analytics or tracking SDKs. There is no Google Analytics, Firebase Analytics, Crashlytics, or Mixpanel in the App, and no analytics or cookies on this website.
- We do not display advertisements.
- We do not have access to your broker credentials, your passphrase, or the contents of your encrypted backups.
- We do not read your portfolio data. Where a file passes through infrastructure we run, it is encrypted with a key we don't hold.
5. Third-Party Services
- Firebase Authentication, Firestore, Storage and Cloud Functions — Google Sign-In; subscription records, payment submissions and requests to restore a purchase; optional backup storage; and flexibility-mode shared portfolios. Subject to Google's privacy policy.
- Google Drive — optional backup and privacy-mode shared portfolios, using the
drive.filescope described above. - Yahoo Finance — stock prices, the US dollar rate, the gold price, benchmark indices and stock splits. Only ticker symbols are requested; no personal data is sent.
- NSE and BSE — their public lists of listed securities, downloaded when an Upstox trade report or a file you map yourself needs them to identify its stocks. Each list is requested whole, never one stock at a time, so nothing about your holdings is sent.
- AMFI / MFAPI.in — mutual fund NAV data. Only scheme identifiers are requested.
- Broker APIs (mStock, Zerodha, Fyers, Groww, Upstox) — used to fetch your holdings and trades when you provide credentials. This traffic goes directly from your device to the broker.
- Public IP lookup (api.ipify.org, icanhazip.com, ifconfig.me) — the native app asks one of these for your public IP address, so it can show you the address a broker asks you to allowlist. They see your IP address and nothing else.
- This website — when you open Returns & Tax (under Goals & Gains), at most once a day, the app downloads a small public file of corrections to how funds are classified for tax. The request carries nothing about you or your portfolio.
- Cloudflare Pages — hosts this website and the web app, and handles standard request logging (including IP address) as part of serving traffic.
- Our CORS proxy — browsers block direct calls to Yahoo Finance, AMFI, NSE and BSE, so in the web app those requests are relayed through
/api/proxy/on this site: stock prices from Yahoo, fund NAVs from AMFI, NSE's equity list and BSE's daily bhavcopy. The relay sees the ticker or scheme being requested and the connection's IP address; for NSE and BSE it sees only which whole list is being downloaded, never which securities anyone holds. It carries no credentials and no portfolio data, and it is not used by the native apps. - Your UPI app — payments are made through your own UPI app. We never see your bank or card details; we only record that a payment for a plan was submitted.
6. Data Deletion
You can delete your data at any time:
- Sign out — ends your session and removes your portfolio, broker credentials and settings from that device. A shared portfolio is only disconnected on that device; the other members keep theirs. Back up first if you want to keep your data.
- Uninstall the App — removes locally stored data (portfolio, credentials, trade caches). Backups you uploaded remain until you delete them.
- Delete backups — remove the files from your Google Drive, delete them in the App (You → Backup → Advanced → Manage backup files), or ask us to delete anything under
backups/<your email>/in Firebase Storage. - Request account deletion — email problemsolverdeveloper@gmail.com and we will delete your Firebase account, subscription record, payment submissions, any Firebase Storage backups, and your membership of any shared portfolio within 7 days.
7. Children's Privacy
Portfolio Dashboard is not intended for use by children under 18. We do not knowingly collect data from minors. If you believe a child has provided us with personal information, contact us and we will delete it.
8. Changes to This Policy
We may update this policy from time to time. Changes will be posted on this page with an updated "Last updated" date. Continued use of the App after changes constitutes acceptance of the updated policy.
9. Contact
Questions about this policy or your data: problemsolverdeveloper@gmail.com