Mustafa Evleksiz
Privacy

Privacy policy — FinaX

Version 1.0 — 8 August 2026 · app version 0.2.155 · translation of the Turkish original

In short

You use FinaX to see your cash flow. The app stores the financial records you type into it on a server that belongs to your account, gives them to nobody, does not track you, and lets you delete everything whenever you want. The long version is below. Every sentence in this text was derived from the app's source code; if the code changes one day, this page changes too.

1. Who holds this data

FinaX is built and published by one person: Mustafa Evleksiz. In the language of data-protection law, that person is the data controller. Any privacy question goes straight to the e-mail address above; there is no support team in between. The data controller is Mustafa Evleksiz, acting as a natural person; FinaX is not published under a registered company. Contact runs through the e-mail address above.

  • E-mail: mustafa@mustafaevleksiz.com
  • Web: https://mustafaevleksiz.com

2. What FinaX does

FinaX is a budgeting ledger. You enter your accounts, income and expenses, recurring payments and instalment plans by hand; the app computes your cash flow for the days ahead from them. That has one important privacy consequence: FinaX has no connection to any bank. The app does not link to your bank account, does not pull statements, and uses no open-banking service. A credit card in FinaX is only a name, a limit and a statement day.

3. Data that goes to the server

When you sign in to your account, what you enter is written to the database in your Supabase project. By Apple's definition this is "collected data", because it leaves your device for somewhere the developer can reach — even though only you can read the rows. Your language choice does not leave the device. It is stored locally, because the sign-in screen, the lock screen and the widget are all drawn before your account is read — waiting for the server would mean showing those screens in the wrong language and then changing it. What is never collected. No card number, IBAN, CVV, bank password or any payment instrument is ever asked for, stored or transmitted. Nor is location, contacts, health data, photos, browsing history, advertising data or a device identifier.

  • Your e-mail address — the sign-in method itself. It is the only identifier you hand over; it sits in the profiles.email column.
  • Your name, if you want — so the app can greet you by it. Optional; you can leave it blank. profiles.display_name.
  • Your user ID — a UUID generated by the server (auth.users.id). It marks the owner of every row. It is not an advertising or device identifier.
  • Your financial records — the substance of the app: accounts, balances, card limits, transactions, ledger entries, recurring rules and their occurrences, payment plans, categories and ledgers.
  • Exchange rates — so amounts in different currencies can be added up in one currency; fx_rates. If you enter a rate by hand, that is stored here too.
  • Your preferences — theme, forecast horizon, safe-to-spend buffer, reminder lead days, the biometric-lock and "hide amounts" switches, widget privacy mode; plus timezone and base currency. Synced so the app looks the same when you move to a new device.

4. Data that never leaves your device

These stay on your phone, never reach the server, and never reach me:

  • Pending records (the outbox). Anything you record while offline waits in a file on the device and goes to the server, in order, when the connection returns.
  • The setup draft. If you abandon onboarding halfway, what you entered waits in an app folder that the system encrypts.
  • The widget snapshot. The summary shown by the home-screen and lock-screen widget is a local file shared between the app and the widget.
  • Diagnostic records. If the app crashes or hangs, iOS's own MetricKit service leaves a report. That report stays on your device and is never sent anywhere on its own — and the released app has no screen that could send it either: the Diagnostics screen that lists and shares the reports exists only in a development build. It contains no amounts, balances, e-mail address, user ID or session key — only the device model, iOS version, build number and event names stripped of any amounts.
  • Notifications. Upcoming-payment reminders are local notifications; the device itself schedules and shows them. The amount and description never touch Apple's push servers. The app registers no push token.
  • The biometric lock. Face ID / Touch ID is checked by iOS. Your fingerprint or face data never leaves the device and the app never sees it; iOS only answers "authenticated" or "not authenticated".
  • Files you export. When you take a CSV or JSON backup, the file is created on your device and handed to the share sheet. Where it goes is your decision; no copy comes to me.

5. What the app talks to

From your device, FinaX connects to two addresses only: It connects nowhere else. There is no ad network, attribution SDK, analytics SDK or crash-reporting service inside the app. What the rate function sends. fx-refresh sends the rate provider (openexchangerates.org) only currency codes — for example TRY,USD,EUR — plus its own server key. Your identity, your e-mail, your amounts and your balances do not go to the provider; the provider does not even see your IP address, because the request is made by the server and not by your phone. All the provider sees is that someone asked for the rates of these currencies.

  • Your own Supabase project — the database and sign-in.
  • The fx-refresh function that runs inside that same project — daily exchange rates.

6. We do not track you

This is not a slogan, it is the state of the code: On the App Store privacy label the answer to the "Tracking" question is No, and in the app's privacy manifest the list of tracking domains is deliberately empty.

  • No ad or attribution SDK, no IDFA, no App Tracking Transparency prompt (the app never asks for that permission, because it has nothing to ask for).
  • No analytics. Which screen you looked at and which button you tapped is written down nowhere.
  • Your data is not used for advertising, not sold to any data broker, and not matched against third-party data.

7. Who it is shared with

Nobody. I do not sell your data, do not hand it to anyone, and do not use it for advertising. There are three places whose infrastructure the app needs to work; these are not parties I "share" data with, they are services that carry or host it: And one forced case: if a valid legal demand arrives (a court order, say), I may have to give up as much as the law requires. If that happens and the law does not forbid it, I will tell you.

  • Supabase — the database, authentication and the rate function run here. The servers are in AWS eu-west-2 (London); that is where your data rests.
  • Apple — if you use "Sign in with Apple", Apple performs the authentication and the app receives only an identity token and (if you choose to share it) your e-mail address. Distribution of the app through the App Store is also subject to Apple's own rules.
  • Open Exchange Rates — sees currency codes only (see § 5).

8. Security

No system is flawless; I am not writing "your data is absolutely safe", because nobody can write that honestly. What I can write is which protections exist in the code today.

  • Row-level security. Every table on the server has force row level security enabled, and every policy checks the row's owner against the session identity. So if another user queries your rows, they get an empty result. Even the table owner's ability to bypass the check is switched off.
  • Encrypted transport. All traffic between the device and the server runs over HTTPS/TLS.
  • Your session keys live in the device's Keychain; the app writes them nowhere else.
  • On-device protection. If you want, you can turn on the biometric lock, hide amounts, and choose what the widget shows (amount / blurred / number only / off).
  • The rate provider's key lives on the server, not inside the app.

9. How long it is kept

Your data stays until you delete it. Nothing expires on its own; FinaX exists to remember your history. You control the ways of deleting it: There is no single "reset everything" button in the released app; that console exists only in a development build. The way to delete everything at once is to delete the account.

  • Deleting one thing at a time — every account, rule and plan can be deleted from its own screen, and the row on the server goes with it.
  • Delete my account (Settings → Delete account) — see below.

10. Getting your data out, and deleting it

Export. From Settings → My data you can take everything as CSV (tabular) or JSON (a full backup). The file is created on your device and handed to the share sheet; what you do with it is up to you. You can restore a backup from the same screen. Account deletion. On the Settings → Delete account screen you type SİL to confirm and it is done. This deletes the auth.users record on the server; the profile, the preferences and every financial row you own go with it down the database cascade. It is deletion, not deactivation, and it is irreversible. I recommend taking a backup first. Two things are not deleted, and both deserve to be said plainly: Also, deleted rows may remain for a short while in Supabase's routine database backups; those backups are overwritten on rotation.

  • The local files on your phone. Pending records, the setup draft, the widget snapshot and the diagnostic files are not removed from the device when the account is deleted; they go when you delete the app from the phone. None of them ever reached the server anyway.
  • System categories. Built-in categories like "Groceries" or "Rent" belong to nobody, are a shared list, and do not count as your data.

11. Your rights

Under the data-protection law where you live (KVKK in Turkey, GDPR in Europe) you have the right to access your data, correct it, delete it, restrict its processing and receive it in a portable format. In FinaX most of that already sits behind a button: access and portability → My data (CSV/JSON), correction → editing the record itself, deletion → Delete account. If something is missing, write to mustafa@mustafaevleksiz.com; I will reply within a reasonable time, at most 30 days. If you have a complaint, you can take it to the data protection authority in your country (in Turkey, the Personal Data Protection Authority — KVKK).

12. Children

FinaX is not a children's app, is not marketed to children, and does not knowingly collect data from anyone under 13. If I learn that such an account exists, I delete it.

13. If this policy changes

As the app changes, so does this text. Every version carries its date at the top; if something important changes it is also stated inside the app. Older versions remain in this repository's history.

14. Contact

For anything about privacy: mustafa@mustafaevleksiz.com

15. Governing law

This text is governed by the laws of the Republic of Türkiye; disputes fall to the courts and enforcement offices of Istanbul. Any rights that the consumer legislation of your own country grants you remain reserved.

Mustafa Evleksiz — Product Engineer · Mustafa Evleksiz