How Your Data Is Protected
- Anonymous by default: We start every user with anonymous sign-in. Your Firebase UID is a random ID, not your name or email. This guest account backs up your data to our servers too, with the field encryption described next.
- Encrypted on your phone before sync: The sensitive fields in your personal tracking (amounts, notes, merchants, category names, labels and goals) are encrypted on your device before they sync. Our servers store the encrypted result plus basic metadata like timestamps. This protects those fields in storage. It is not end-to-end encryption. See “What We Store, and What We Can Read” below.
- No personal info in your spending records: We do not store your email, name, or identifiers in your spending records.
- Cross-device, same key: When you sign in on another device, Firebase gives the same UID, so the same key is derived and your data decrypts on that device. No backup phrases needed. The trade-off is that the key comes from your UID and a value built into our code, not from a password only you know.
What We Store, and What We Can Read
- What we store: Your anonymous UID, timestamps, non-sensitive metadata (like transaction type), and the encrypted values themselves.
- Encrypted in our database, but not out of our reach: the amounts, notes, merchants, category names, labels and goals in your personal tracking are stored encrypted, so they do not sit in our database as readable text. Because the key is derived from your UID and a value in our code, CentsCheck can decrypt them. The only part of our service that does so is AI Link, when an assistant you connected asks for them (see below).
- Shared and business pools are the exception: a pool is something you share with other people, so pool entries are stored readable rather than encrypted—that is what lets the server total a pool the same way for every member. That covers amounts, notes and merchant, and in business pools the client, project and invoice number. If you keep business books in a pool, they are protected by who can access the pool, not by encryption.
- Identity: For your personal tracking we see only a random UID. A linked email, if you add one, is held by Firebase Auth and is not stored with your spending data. RevenueCat also receives an available email and display name for a signed-in account to help us identify its subscription. If you use pools, the pool stores a display name next to your UID so members can see who added what. If your account has no display name set, a pool you create uses the first part of your email address as that name; a pool you join lists you as ‘Member’. A pool's member list can also hold a member's email address, and AI Link shows it to a connected assistant when that member has no display name.
How Sync Works
You can use CentsCheck without signing in. The app still backs up your data to our servers under your anonymous guest account, with the same field encryption. A guest account backs up whenever the app is online, and there is no setting to turn that off. Sign in with Google or Apple to sync across devices and restore your data on a new phone. We use Firebase Authentication and Firestore to sync it. The app encrypts your personal tracking on your device before it uploads, and decrypts it on your device when it syncs back. What the server holds for it is encrypted values and basic metadata like timestamps. If you connect AI Link, our server also decrypts the fields your assistant asks for, as described next.
If you sign out, new data stays on your device. To delete synced data, visit https://centscheck.com/delete-account-and-data.
AI Link: Connecting an AI Assistant
AI Link lets an AI assistant you choose, such as Claude, ChatGPT, Grok or Cursor, read and change your CentsCheck data. It is off until you connect one. To connect, you sign in with Google or Apple on a CentsCheck page and approve the request, or you paste a connection token that you create in the app.
- What the assistant can read. Your personal transactions (amounts, categories, notes, merchants and dates), budgets, savings goals, recurring bills, labels, brokers and recorded trades, your currency, income and budget settings, and the insights the app works out for you. It can also read the shared and business pools you belong to, including other members' entries and their display names (or, for a member with no display name, their email).
- What the assistant can change. It can add, edit or delete transactions, including in pools you can edit; set budgets, goals and recurring bills; record a stock or crypto trade you already made; and draft plans that change nothing until you approve them in the app. It cannot move money or place trades, and CentsCheck has no bank or broker connection.
- How our server handles it. To answer your assistant, our server decrypts the personal fields that request needs and sends the result to the assistant. This is the one case where our server reads your personal spending data.
- Your assistant's provider. What the assistant reads is processed by the company that runs it (for example Anthropic, OpenAI, xAI or Cursor) under that company's own privacy policy and settings, not ours.
- The action log. Transactions an assistant logs show a ✨ in the app, and every change it makes is listed in AI Link activity. Your assistant can undo it within 5 minutes, and you can undo it later from the app. To make that possible, we keep a log of each change in your account. The log stores the details of the change, such as amount, category, currency, merchant and notes, without the field encryption described above, plus a copy of the item before and after the change. It is kept until you delete your account.
- Connection records. We keep which assistant is connected, when it last connected and a hashed copy of its access token, never the token itself. Our server logs each AI Link tool call with your account ID, the tool name, whether it worked and how long it took, but not what the tool read or wrote. Those logs expire after about 30 days.
- Disconnect. In CentsCheck, open Settings, then AI Link, and choose “Disconnect all assistants”. That ends every assistant's access at once. Entries already made stay in your account.
- Delete. Deleting your account at centscheck.com/delete-account-and-data removes your AI Link connections, tokens and action log along with your other synced data.
We do not sell AI Link data or use it for ads.
Creator Codes
If you enter a creator's code, or open CentsCheck from a creator's link, we store the code on your device and send it to RevenueCat with your purchase, so we can pay that creator a commission. On Android, the code can arrive through Google Play's install referrer. To work out commissions, we keep a record of Pro purchases and refunds on our servers, linked to your account ID. Creators only see totals, never who you are.
This Website
On centscheck.com we count page views, taps on the App Store and Google Play buttons, and finished sums on the safe-to-spend calculator, so we can see which pages lead people to the app. We use Vercel Web Analytics and Google Analytics for this. Neither sets cookies or stores anything on your device. Your browser sends these counts to our own server, which passes Google Analytics only the page address, which button was tapped, the calculator's currency and the kind of answer it gave (money to spend, nothing to spend, short, or a payday already past), the country you are in and a random ID that lasts only while the page is open. The amounts and dates you type into the calculator stay in your browser. Google does not receive your IP address, and the ID is never linked to a CentsCheck account.
To show prices in your currency, the pricing page asks our server which country you are in. The server reads it from your IP address and does not keep it.
Third-Party Services
The Application uses the following third-party services, which have their own privacy policies:
- Firebase Authentication & Firestore
Provided by Google. Used for sign-in (anonymous, Apple, Google, or email) and to sync your data. Firebase Auth holds your email only if you add one. Firestore stores your personal spending fields encrypted and pool entries readable, as described above, plus metadata like timestamps.
Privacy Policy: https://firebase.google.com/support/privacy - RevenueCat
Manages subscriptions and purchases. For in-app purchases, RevenueCat receives device and purchase details needed to verify your subscription. If you sign in, it also receives your account ID and any email and display name available on your account so we can find your subscription when you need support. Guest accounts do not send those contact details. For subscriptions bought on the web, it also receives the email address you enter at checkout and your CentsCheck account ID, and sends you the purchase and billing emails. It does not receive your spending data.
Privacy Policy: https://www.revenuecat.com/privacy - Firebase Analytics & Crashlytics
Provided by Google. Analytics receives app interactions, account-linked identifiers and app/device identifiers so we can understand feature use. Crashlytics receives crash reports, device and app details, and diagnostic events so we can fix errors. We do not send transaction amounts to Analytics.
Privacy Policy: https://firebase.google.com/support/privacy - Receipt processing & storage
If you choose Smart Scan, the receipt image is sent to a Firebase cloud function for Google Cloud Vision to read. If you attach a receipt to a synced transaction, its image is encrypted before upload to Firebase Storage. If you allow location access, the app may use your device location to infer a receipt currency through the device's geocoding service; we do not save your coordinates with the receipt. - Stripe
Processes payments for subscriptions bought on the web. Your card or wallet details go to Stripe, not to us; we never receive or store card numbers. Stripe does not receive your spending data.
Privacy Policy: https://stripe.com/privacy - AI assistants you connect (AI Link)
Only if you connect one. What the assistant reads from CentsCheck is processed by its provider under that provider's privacy policy. See “AI Link” above.
We do not sell ads or share your identifiable data for advertising or tracking. If we must share data (for example, to comply with law or protect users), we share the minimum required.
Opt-Out Rights
You can stop all collection of information by uninstalling the Application. Use standard uninstall processes available on your mobile device or app marketplace.
To stop online sync for a signed-in account, sign out in the app settings. New data then stays on your device unless you sign in again. A guest account backs up whenever the app is online. Uninstalling the app stops it.
To delete your synced data: Visit https://centscheck.com/delete-account-and-data for more information and instructions.
Data Retention Policy
We keep your synced data while you use the app. You can request deletion any time at hello@centscheck.com or by using the deletion link above. Firebase removes deleted auth records within its standard timelines; RevenueCat retains purchase records only as long as needed for compliance. The AI Link action log is kept until you delete your account.
Children
The Application does not knowingly collect data from or market to children under 13. If the Service Provider discovers a child under 13 has provided personal information, it will be deleted immediately. Parents/guardians aware of such data should contact the Service Provider.
Security
Data is encrypted in transit (HTTPS), and encrypted at rest by our hosting provider. On top of that, your personal spending fields are encrypted on your device before they sync. That extra layer is not end-to-end encryption. The key is derived from your UID, so our server can decrypt those fields, and it does so for AI Link. Pool entries are stored readable, because a pool is shared with its members.
Changes
This Privacy Policy may be updated from time to time. Changes will be posted on this page. Continued use of the Application after changes constitutes acceptance.
Contact Us
For privacy questions or to exercise rights (access, deletion, etc.), contact: