Privacy Policy
SpendLens ("the App") is built on a simple principle: your finances are nobody's business but yours. This policy explains what information the App handles and — crucially — what it does not.
Summary in one paragraph
SpendLens has no accounts and no ads, and by default everything you enter — expenses, categories, notes, receipt images — stays on your iPhone (and, if you enable it, your own private iCloud container). SpendLens has one optional feature, Smart Parsing, which you must explicitly turn on. When it is on, the text of a bank SMS you capture is sent over an encrypted connection to our parsing service to extract the transaction details, then discarded. When it is off (the default), nothing you enter leaves your device through SpendLens. Because Smart Parsing can transmit transaction text when enabled, SpendLens declares this in its App Store privacy label rather than claiming 'Data Not Collected.'
Data storage
All data you enter into SpendLens — expenses, categories, notes, receipt images — is stored locally on your device using Apple's Core Data framework. The data lives inside the App's secure sandbox managed by iOS and is encrypted at rest by the operating system.
Data we do not collect
SpendLens does not collect, transmit, or store any of the following:
- Personal information (name, email, phone number, address)
- Bank login credentials — we never ask for them, do no bank linking, and cannot access your bank
- Device identifiers or advertising IDs
- Analytics or usage tracking data
- Crash reports linked to your identity
- Location data
- Cookies or web tracking pixels
- Contacts, photos (other than receipts you explicitly capture), or calendar events
iCloud sync
If you enable iCloud sync in the App's Settings screen, your expense data syncs across your Apple devices using Apple's CloudKit framework. This data is stored in your private iCloud container — the same one that backs apps like Reminders and Notes. SpendLens has no access to this data. Apple has no access to its contents either; it is encrypted in transit and at rest with keys tied to your Apple ID.
You can disable iCloud sync at any time in Settings. Disabling sync does not delete your local data. Removing the App from a device removes its local data on that device.
Camera access (optional)
SpendLens Pro includes an optional receipt scanning feature that uses your iPhone's camera. Camera access is only requested the first time you tap "Scan receipt" and is shown via the standard iOS permission prompt. All text recognition happens on-device using Apple's Vision framework — no images are uploaded or transmitted anywhere. The captured receipt image is stored only inside the linked expense in your local database. You can revoke camera access at any time via iOS Settings → Privacy → Camera.
Currency exchange rates
SpendLens fetches currency exchange rates from frankfurter.app, a free open-source service operated by the European Central Bank's published reference rates. These requests are anonymous HTTPS GET requests for a list of currency rates only. They contain no user data, device identifiers, or tracking information. Rates are cached locally for up to 4 hours to minimize requests.
In-app purchases
SpendLens uses Apple's StoreKit framework for one-time Pro unlocks and optional tip purchases. All payment processing is handled entirely by Apple under Apple's privacy policy. SpendLens never receives or stores your payment details, full name, or billing address.
Notifications
SpendLens uses local notifications to remind you about recurring expense reminders you have set up. These notifications are scheduled and delivered entirely on your device and do not involve any external push notification server. No notification data leaves your device.
Siri, Shortcuts & App Intents
SpendLens exposes App Intents to Siri and the Shortcuts app so you can voice-log expenses or check totals. When you use Siri, voice processing follows Apple's Siri privacy practices. SpendLens itself only receives the parsed parameters (e.g. amount, currency, merchant) and creates the expense locally on your device.
SMS Auto-Capture & Smart Parsing (v1.1+)
SpendLens can help you log transactions from your bank's SMS alerts. This is opt-in — it does nothing until you turn on Smart Parsing (off by default) and set up the automation yourself.
How it works. You create a Personal Automation in Apple's Shortcuts app that runs when you receive a message containing your account currency (for example "AED"). That automation hands the message text to SpendLens. SpendLens never reads your Messages app directly — iOS does not allow that, and the automation passes one message at a time.
What happens to the text. When Smart Parsing is on, the message text — together with your category names — is sent over an encrypted HTTPS connection to SpendLens's parsing service to extract the transaction (amount, merchant, date, and similar fields). The request is authenticated with an app-level token that is not tied to your identity or Apple ID. The result is returned to your device, where the transaction appears in your Inbox for review before it becomes an expense.
Where the text goes. Our parsing service runs on Cloudflare Workers and forwards the message text to Google's Gemini API to perform the extraction. We use a paid Google API tier under which your content is not used to train Google's models. Neither our service nor Google retains the message after the request is processed, and our service keeps no logs of message contents.
When Smart Parsing is off (the default), no message text is ever sent anywhere. You can turn Smart Parsing off at any time in Settings → Auto-Capture, and delete the Shortcuts automation at any time. Manual entry never touches the network.
Your consent. Smart Parsing is processed on the basis of your explicit consent, given by turning it on and withdrawable at any time by turning it off.
Children's privacy
SpendLens is not directed at children under 13 and does not knowingly collect any data from children. Since SpendLens collects no data from any user, there is no risk of children's data being collected.
Third-party services
By default, the only external service SpendLens contacts is the public exchange-rate endpoint at frankfurter.app, for anonymous currency-rate requests.
If you turn on Smart Parsing, SpendLens additionally contacts its own parsing service (hosted on Cloudflare Workers), which forwards the bank SMS text to Google's Gemini API for extraction, as described above. These are the only services that receive transaction text, and only when Smart Parsing is enabled.
SpendLens uses no advertising SDKs, no analytics SDKs, no crash reporters linked to your identity, and no third-party trackers of any kind.
Your rights
Because SpendLens does not collect or store any personal data on our side, traditional data-subject rights (access, deletion, portability) are exercised directly within the App: you control your data 100%. You can:
- Export your data as CSV or PDF from Settings → Data
- Delete all data instantly via Settings → Delete All Data
- Disable sync via Settings → iCloud Sync
- Revoke permissions for camera, notifications, or Siri at any time in iOS Settings
Changes to this policy
We may update this privacy policy if the App's functionality changes. Any updates will be reflected on this page with a new "Last updated" date. Since SpendLens collects no data, meaningful changes to this policy are unlikely.
Contact
If you have questions about this privacy policy, write to businessforzeeshan@gmail.com. We are a solo developer team and respond to every email personally.
The short version: Your spending stays on your device by default. The only thing that can ever leave is the text of a bank SMS you choose to capture — and only if you turn on Smart Parsing, only to extract the transaction, never stored or sold.