Privacy Policy
1. Who we are and what Spendly is
Spendly is a personal budgeting and expense-tracking app with optional AI help. It helps you record expenses, see what’s safe to spend, set budgets, and ask Spendly AI about your own numbers.
Spendly is operated by Ibrahim Bayyari as an individual, not through a company. Ibrahim Bayyari decides how and why the personal data described in this policy is processed (the “controller”). You can reach him at hello@spendlyapp.me; a postal address is available on request.
Spendly is not a bank, lender, broker, or licensed financial advisor. It does not hold your money, connect to your bank accounts, or move funds. Guidance in the app is educational and general in nature only (see Section 9).
2. Our privacy approach: local-first
Spendly is local-first. By default, your data is stored on your device and stays there. Cloud backup and sync are optional and only happen if you create an account and sign in (see Section 4). You can use Spendly without an account.
3. What data we collect and where it lives
a) Data you create in the app (stored on your device)
- Expenses you add: amount, merchant or description, category, date, how it was added (for example typed, voice, receipt or Auto-Track), and an optional note.
- Settings: display currency, monthly budget, savings goal, per-category budgets, whether Spendly AI is on, and dark mode.
- Learned merchant-to-category preferences (for example, that you file a given merchant under a given category).
- Spendly AI chat messages and replies, and your choice about sharing data with Spendly AI. If you have agreed to AI data sharing, the message you send — with a few of your most recent messages from the same conversation — is also sent for processing as described in Section 6.
- App state: whether you’ve completed onboarding, and a saved copy of your subscription status so Pro features keep working briefly offline.
- The receipt-scan counter, kept in your iPhone’s Keychain (see Section 6).
This data stays on your device unless you sign in and it is synced (see c) below).
b) Account data (only if you create an account)
Accounts are provided by [Supabase], our hosting and authentication provider. You can sign up with an email and password, with Sign in with Apple, or with Google. We receive and store:
- your email address (with Sign in with Apple, this can be an Apple private-relay address);
- a system-generated account ID;
- your name, only if your sign-in provider shares it — Apple shares it once, the first time you sign in, if you choose to; Google shares the basic profile details on your Google account; and
- for email accounts, a password, which is handled by [Supabase] and never stored by Spendly in readable form.
We do not require your phone number, address, or government ID.
c) Data synced to the cloud (only if you sign in)
If you’re signed in, the following is synced to your account so you can back it up and use it across devices:
- your expenses,
- your profile settings (currency, monthly budget, savings goal, and whether Spendly AI is on), and
- your category budgets.
Not synced (kept on your device only): dark mode, onboarding status, learned merchant-to-category preferences, your AI data-sharing choice, AI chat history, the receipt-scan counter, and the saved copy of your subscription status. Your chat history is never uploaded to your account.
d) Usage analytics (only if you are signed in)
When you are signed in, Spendly sends a small set of app events to our own backend so we can understand how the app is used and keep the AI service within its limits: app opened, sign-up and sign-in completed, expense added, AI request started, succeeded, failed or limited, on-device fallback used, paywall viewed, upgrade tapped, trial started, purchase completed, and export used. Each event can carry which AI feature was involved, a coarse error type, how long a request took, AI token counts and estimated cost, your platform, app version, and whether you are on Free or Pro.
Events never contain a message, an amount, a merchant, a note, or your email address. They are stored against a one-way scrambled code derived from your account ID — not the ID itself. Signed-out use sends no events. We keep these records until you delete your account (Section 10).
e) Crash reports
If Spendly crashes or hits an error, a crash report is sent to [Sentry]. It contains the error, where it happened in the app, and your device model, operating system and app version. Before it is sent, it is stripped of your account and email, request contents, and anything you typed, and financial values are removed. Crash reports are not linked to your account. Like any server, Sentry may record the network (IP) address a report was sent from.
f) Data we do NOT collect
- We do not connect to your bank, read your SMS messages, or access your transactions automatically.
- We do not collect audio or photos. Voice entry and receipt scanning are processed on your device and are not sent to us or to anyone else (see Section 6).
- We do not sell your data, and we do not use it for advertising.
- We do not knowingly collect data from children (see Section 12).
4. Accounts and authentication
- Accounts are optional. Without one, Spendly runs on your device only.
- Authentication is provided by [Supabase]. Sign in with Apple and Google sign-in are handled by Apple and Google under their own privacy policies; Spendly receives only the details listed in Section 3b.
- Only a public key ships in the app, and each account can only access its own data, enforced by database row-level security.
- Signing out ends your cloud session but keeps your data on your device.
5. Payments and subscriptions
- Spendly offers an optional paid “Spendly Pro” subscription. Prices are shown by the App Store before you buy.
- We do not process or store your payment details — no card number ever reaches us. Purchases are handled by the Apple App Store and managed through our subscription provider [RevenueCat], under their own privacy policies.
- RevenueCat receives your purchase and subscription records from the store. Before you sign in, it uses a random identifier generated in the app; when you sign in, we link your purchases to your Spendly account ID (never your email or your name). Our backend also checks your plan with RevenueCat using your account ID, to apply the right AI limits.
- From RevenueCat we receive your subscription status — whether Pro is active, when it renews or expires, and whether you have had a free trial. We use this only to unlock what you paid for and to show your plan.
6. AI features
Spendly AI (chat answers, “Add with AI”, and the safe-to-spend explanation) sends your request to Spendly’s own backend, which passes it to our AI provider, OpenAI, to generate a reply. OpenAI processes the request in the United States. Cloud AI is used only when you are signed in and have agreed (see “Your permission” below); otherwise Spendly answers with its built-in on-device logic.
What is sent
- the message you type, today’s date, and your app currency;
- for chat, so Spendly AI can follow the conversation: up to your last 8 messages and replies from the past two hours, each shortened to at most 600 characters (3,000 in total);
- a budget summary: safe to spend today, this month’s and this and last week’s totals, budget left, the share spent on food delivery, the total of your recurring subscriptions, your biggest spending category and its total, and — once there is enough data — your Money Age score, streak and its short reasons (which can mention your savings goal).
What is never sent to our AI provider
- your email address, your name, your password, your account ID, your device identifiers, your location, your list of expenses, merchant names, notes, or older messages — your full chat history is never sent.
Your permission
We ask you first. The first time you use Spendly AI we show you what is sent and you choose Continue or Not now. Nothing is sent to our backend or our AI provider until you choose Continue. If you choose Not now, the rest of Spendly works normally.
Changing your mind
Turn AI data sharing off in Settings → Privacy & Permissions at any time. Future AI requests stop immediately. The conversation already on your phone stays there until you clear it — there is a Clear AI chat history button on the same screen, and it does not touch your expenses. If we materially change what is sent, we will ask you again.
How you are identified
Our backend checks your sign-in token to confirm you are signed in and to apply your plan’s limits. It does not pass your account ID or email to OpenAI: OpenAI receives only a one-way scrambled code derived from your account ID, so it can enforce its abuse limits. That code cannot be turned back into your identity.
Why
Solely to generate the reply or the expense suggestion you asked for. We do not use it for advertising, we do not sell it, and we do not use it to build a profile of you.
Retention
Spendly does not store your AI messages on our server, and we ask OpenAI not to store them (OpenAI may still keep requests for a limited period for abuse monitoring, under its own API terms and privacy policy). To enforce daily and monthly limits we keep usage counters — numbers of requests, tokens and estimated cost — against the same scrambled code, never with message content. They are deleted when you delete your account. Your chat history stays on your device.
Voice and receipts
Voice entry and receipt scanning run on your device. When you use Voice, Spendly uses your microphone and your phone’s on-device speech recognition to turn what you say into an expense draft — the audio is not recorded, not stored, and not sent to Spendly, our AI provider, or anyone else. When you take or choose a receipt photo, your phone’s on-device text recognition reads it — the text and where it sits on the receipt — to fill in the total, merchant and date. The photo is never uploaded. Spendly works on its own temporary copy and deletes it when you finish — or, if the app was closed during a scan, the next time Spendly opens. A photo taken with the camera is not saved to your Photos, and a photo you choose from Photos is left exactly as it was. The recognised text is used only to fill in the draft and is not stored. Nothing is saved until you confirm the expense. Auto-Track reads bank messages that you paste, on your device; automatic SMS reading is not available.
Receipt-scan counter: to count the Free plan’s receipt scans, Spendly stores the current month and the number of scans used in your iPhone’s Keychain. It contains nothing else, it stays on this iPhone (it is not synced or backed up to another device), and — unlike Spendly’s other data — it is not removed when you delete the app, so deleting and reinstalling does not reset the monthly allowance.
AI output is general educational guidance, not personalized financial, legal, or tax advice (see Section 9), and it can be inaccurate — always check it yourself.
7. How and why we use data
We use your data to run the app’s features (tracking, budgets, safe to spend, Money Age), provide optional backup and sync, operate accounts, generate Spendly AI replies and expense suggestions when you use them (Section 6), process subscriptions through the providers in Section 5, fix crashes (Section 3e), and understand app usage and AI costs (Section 3d). We do not use your financial data for advertising and do not sell it, and we do not use it for any purpose other than those described here.
Legal bases
- Providing the service you asked for (our agreement with you): your account, cloud sync, subscriptions, and account deletion.
- Your consent: sending your requests to Spendly AI (Section 6), and using the microphone, camera and photos for voice entry and receipt scanning. You can withdraw consent at any time; this does not affect processing that has already happened.
- Legitimate interests in keeping Spendly working, secure and affordable: crash reports, usage analytics, AI usage limits and abuse prevention, using the minimum data described above.
- Legal obligations, where a law requires us to keep or disclose data.
What is required and what is optional
Nothing is required to use Spendly on your own device. An email address (or a Sign in with Apple or Google account) is required only to create an account; without one you cannot back up or sync your data. Agreeing to AI data sharing is optional; without it, Spendly AI answers with built-in on-device logic. Microphone, camera and photo access are optional; without them, you can still type expenses.
8. Sharing and third parties
We share data only with service providers strictly needed to run features you use:
- [Supabase] — accounts, authentication and cloud sync (only if you sign in), and the database for our AI usage counters and usage analytics.
- [Railway] — hosts Spendly’s backend in the United States (US West), which passes AI requests to OpenAI without storing their content.
- [OpenAI] — Spendly AI (only when you are signed in and have agreed). Your message, a little of your recent conversation, and the budget summary in Section 6 are processed by OpenAI in the United States under its API terms.
- [Apple] / [Google] — Sign in with Apple and Google sign-in, if you use them; and App Store purchases.
- [RevenueCat] — subscription management (Section 5).
- [Sentry] — crash and error reporting (Section 3e), processed in the European Union (Germany).
Each provider processes data under its own privacy policy and terms. We use only providers whose terms commit them to protect the data they process for us at least as well as this policy describes, and only for the purposes above. We do not otherwise share, rent, or sell your data.
9. No financial, legal, or tax advice
Spendly provides budgeting tools and general educational guidance only. It is not a licensed financial, investment, legal, or tax advisor, and nothing in the app is personalized professional advice. You are responsible for your own financial decisions; consider a qualified professional for advice specific to your situation.
10. Data retention and deletion
- On your device: your data stays until you delete it. Settings → Delete transaction data removes your expenses (and, if you are signed in, removes them from your synced account at the next sync); your budgets and settings remain. Settings → Reset this phone clears the expenses, settings and AI chat on this phone. Deleting the app removes all of Spendly’s data from the phone except the receipt-scan counter in the Keychain (Section 6).
- Your account: you can delete your account from inside the app at Settings → Account → Delete my account, after confirming who you are. This deletes your account and the data synced to it, deletes the AI usage counters and usage analytics kept against your scrambled code, signs you out, and clears the data on this device. You can also email hello@spendlyapp.me; we process verified requests within 30 days.
- Subscriptions: deleting your account does not cancel a subscription. Cancel it in your Apple ID subscription settings. Apple and RevenueCat keep their own purchase records under their policies.
- Crash reports are kept by Sentry under its retention policy and are not linked to you.
- Where law requires limited retention, we keep only what it requires.
- A copy of your data: Spendly Pro includes exporting your expenses to a CSV file. Anyone can request a copy of their account data at hello@spendlyapp.me.
11. Data security
- Data in transit to our providers is protected with encryption (HTTPS); providers encrypt data at rest.
- Only a public key ships in the app; access to your account data is restricted to your own account by row-level security. No secret keys are embedded in the app.
- No method of storage or transmission is 100% secure; we cannot guarantee absolute security.
12. Children’s privacy
Spendly is intended for adults aged 18 and over and is not intended for anyone under 18. We do not knowingly collect personal data from anyone under 18. If you believe a child has provided us data, contact us and we will delete it.
13. Your rights
Depending on where you live, you have rights to be told how your data is used (this policy), to access it, to receive a copy in a readable format, to have it corrected, completed or updated, to have it deleted, and to withdraw your consent. You can withdraw AI consent in the app at any time (Section 6) and delete your account in the app (Section 10). For anything else, contact hello@spendlyapp.me; we may need to verify your identity first, and we respond within 30 days. You may also complain to the data-protection authority where you live.
14. International users
Your data is processed outside the country where you live — for example outside Saudi Arabia and the United Arab Emirates — in the places listed here. Where required, we rely on appropriate safeguards. Your account, synced data, AI usage counters and usage analytics are hosted by Supabase in ap-northeast-1 (Tokyo). When you use Spendly AI, your request passes through Spendly’s backend, hosted by Railway in the United States (US West), and is processed by OpenAI in the United States. Crash reports are processed by Sentry in the European Union (Germany). RevenueCat, Apple and Google process subscription and sign-in data under their own policies.
15. Changes to this policy
We may update this policy. Material changes will be posted here with a new effective date, and where required we’ll seek your consent before new data uses take effect.
16. Contact
Questions or requests: hello@spendlyapp.me
Spendly is operated by Ibrahim Bayyari, an individual (not a company). Postal address available on request.