Effective Date: April 23, 2026
This policy defines how VaultKeeper retains, archives, and deletes user data across its entire service surface: manually-entered financial records, bank connection data (Plaid / Teller), subscription state (RevenueCat / Apple), AI chat data (Anthropic), crash reports (Firebase Crashlytics), and operational logs (Cloudflare).
| Data Type | Retention Period | Notes |
|---|---|---|
| User account and financial data | Duration of account | Deleted immediately upon in-app account deletion (Settings → Delete Account) |
| Transactions, wallets, categories | Duration of account | User can delete individual records at any time via the app |
| Scheduled transactions | Duration of account | User can delete or deactivate |
| Bank access tokens (Plaid / Teller) | Until disconnected | Deleted from Cloudflare KV on disconnection + on account deletion. Plaid items are also revoked at Plaid on deletion. |
| Bank transaction data (imported) | Duration of account | Stored as regular transactions after import; subject to user deletion |
| Cached bank balances | 1 hour TTL, refreshed on foreground | Never persisted long-term; overwritten on each fetch |
| Subscription state (RevenueCat / Apple) | Duration of account | Written by RC webhook and Apple Server Notifications; deleted on account deletion |
| AI chat messages | Session only | Not persisted by VaultKeeper. Anthropic retains API payloads for up to 30 days for trust & safety, then deletes. |
| AI rate-limit counters | 45 days | Cloudflare KV TTL; covers current + following billing cycle |
| Wallet share tokens | Until revoked | Deleted on account deletion or manual revoke in-app |
| Authentication records | Until account deletion | Managed by Firebase Auth; deleted by user.delete() during account deletion flow |
| Household and invite data | Duration of membership | Removed when member leaves, is removed, or on account deletion |
| Crash reports | 90 days | Firebase Crashlytics default retention |
| Worker request logs | 30 days | Cloudflare operational logs for abuse prevention + debugging |
| Firebase Realtime Database backups | 3 years | Daily exports to our private GCS bucket. Account deletion is propagated to backups within 30 days of the next scheduled backup cycle. |
Users can delete data through several mechanisms, all self-serve:
shared/{token} mirror is deleted; the token is invalidated.users/{uid}/*, households/{uid}/* (if owner), household membership record (if member), wallet shares, pending invites; Cloudflare Worker cleanup of all KV tokens + Plaid item revocation; Firebase Auth user deletion.When a user requests account deletion:
POST /api/account/cleanup which the Worker uses to revoke Plaid items (so Plaid stops billing) and wipe all KV tokens under plaid:{uid}:*, teller:{uid}:*, ai_rate:{uid}:*, and ai_burst:{uid}:*.null.Auth.auth().currentUser?.delete() to remove the Firebase Auth record.Deletion propagates to Firebase's managed backups within 30 days. Anthropic's trust-and-safety retention continues for up to 30 days from the last API call regardless of our deletion. Cloudflare request logs age out independently at 30 days.
Before deletion, users can export all their transaction data via Settings → Export to CSV. The export is byte-compatible with the web version and includes: date, type, category, amount, currency, wallet, destination wallet (for transfers), exchange rate, converted amount, and note. Subscription state and app preferences are not included in the CSV; email info@vaultkeepermoney.com for a full data package.
Data retention and deletion practices are designed to comply with GDPR, CCPA, and Apple App Store requirements. Data subjects may exercise their rights by contacting us through the channels listed in the Privacy Policy. We respond within 30 days.
Backups are retained for operational recovery (e.g. ransomware, accidental data loss). A user whose account was deleted and who later requests restoration must contact us at info@vaultkeepermoney.com within 30 days of deletion. After 30 days we cannot guarantee the data is still in an accessible backup.
This policy is reviewed at least annually or when changes are made to data processing practices. The last substantive review was April 23, 2026.