Legal
Privacy Policy
This policy explains what information Mizan collects, why, where it goes, and what you can do about it. It covers the Mizan mobile app and the website joinmizan.app. We have written it to match what the software actually does today; when the software changes in a way that matters to you, this policy changes with it and the date above moves.
1. The short version
- Mizan is self-custodial. Your keys are created on your device and controlled by you. We never have them, so we never have your funds. That is also why there is less of your data for us to keep than a typical finance app would.
- We collect what the app needs to work: a sign-in identity, your public wallet address, the public on-chain activity of your wallet so we can show it to you, crash reports with identifying details removed, and anonymous counts of how swap reviews go.
- We never see identity documents or payment details. If you buy SOL with a card, you do it on Stripe's own page. Your identity and payment details are collected on Stripe's checkout by Stripe and its crypto services provider, and they never reach us (section 5).
- We do not sell your personal information. If that ever changes, we will update this policy first, put an opt-out switch in the app before any sale begins, and tell you. Until then, you can record an opt-out today by email (section 7).
- The blockchain is public. Anything your wallet does on Solana is visible to anyone, forever, and that is true of every Solana wallet — not something Mizan adds or can remove.
2. What we never hold
- Your private keys or recovery material. Your wallet is an embedded wallet provided by Privy. Its key is split into pieces so that the full key exists only on your device, at the moment you use it; the piece Privy stores cannot sign anything on its own. Mizan never receives any piece of it. Mizan's servers cannot sign a transaction for you, cannot move your assets, and cannot recover your wallet.
- Your money. There are no Mizan balances, accounts, pooled wallets or IOUs. The only funds that reach us are the service fee on a swap, which lands in our own wallet on-chain.
- Identity documents, bank or card details. Card purchases happen on Stripe's page, and what you enter there goes to Stripe and its crypto services provider, not to us. The app never asks for these details, and we have built nothing that could receive them.
3. What we collect, and why
Everything in this table is either necessary to provide the app (the legal basis where one is required is performance of our contract with you or our legitimate interest in running a safe service) or clearly optional and off until you turn it on.
| Information | Where it comes from | Why we have it |
|---|---|---|
| Sign-in identity — an identifier from Apple or Google, the email address that comes with it, and the internal ID our sign-in provider (Privy) issues for it. If you sign in with Google, Privy also receives your name from Google; Mizan never reads or stores it. We do not receive your Apple or Google password. | You, when you sign in. | To know which wallet is yours and to keep anyone else out of it. |
| Wallet address — the public address of your Solana wallet. | Your device, when the wallet is created. | To show your holdings and history, to build swaps and sends you ask for, and to route the service fee correctly. |
| Profile — a handle, and if you add them a photo, a banner and a short bio; notes you write on your positions; who you follow; and your visibility setting (Public or Private; Public by default once you have seen how it works — see section 6). | You, if you choose. | So people can find and follow you. Who you follow decides what appears in your activity feed — it is how the feed is personalized for you. See section 6. |
| Country — a two-letter country code, derived from your IP address when you use the app. | Derived on our server from your connection, using a geolocation database (MaxMind). | Mizan is only available in some regions. We must know where a request comes from to apply that rule. The country is worked out for each request and is not kept on your account. The one place it is stored is the early-access list, below. |
| IP address. | Your connection. | To derive the country above, to limit how many requests one address can make in a short window (abuse protection), and — only when you start a card purchase — to pass to Stripe so it can check where you are buying from. Rate-limit counters are deleted within a day. Like every website, our hosting providers keep standard server logs for a limited time. |
| Device attestation — a key identifier that Apple's App Attest issues for your installation. | Your device, via Apple. | To confirm requests come from a genuine, unmodified copy of the app. It identifies an installation, not a person, and it is not used for advertising or tracking. |
| On-chain activity — the holdings, transactions and swaps of your wallet address. | The Solana blockchain, read through an indexing provider (Helius). | To show your balances and history quickly and to keep them accurate. This is public data; see section 4. |
| State you live in — the U.S. state or territory you choose before your first card purchase. | You, when you buy with a card for the first time; you can change it in Settings. | Card purchases are not offered everywhere: not in Hawaii, which Stripe's onramp terms exclude, and not in New York and U.S. territories, which we exclude while our legal review is pending. It is used for card purchases only — never for swaps, sends or anything else. |
| Card purchase records — each time you open Stripe's page from Mizan: an internal ID, Stripe's ID for the purchase, the status Stripe reports, the dollar and SOL amounts Stripe reports, and the blockchain transaction Stripe names as the delivery. | Our server when you start a purchase; Stripe, as the purchase goes on. | To show you how your purchase is going and to match it to the SOL arriving in your wallet. We never receive your card number, bank details or identity documents. |
| Send-address check — the address you enter when sending. | You, when you send. | Before a send, our server checks the destination against public sanctions lists (the U.S. OFAC list). The check runs and returns; it is not used to build a profile of you. |
| Push token — the device token used to deliver notifications. | Your device, only after you allow notifications. | To tell you when a transaction confirms. Turn notifications off in your phone's settings and the token stops being used. |
| Crash reports and app sessions — what went wrong in the app and the state of the app when it did; and, for each time the app is used, whether that session ended in a crash, with a random identifier for the installation. | The app, via Sentry. | To fix bugs and to know how often the app crashes. Not linked to you: personal details are switched off, wallet addresses and identifiers are scrubbed before reports leave the device, and performance tracing is off. See section 8. |
| App update checks — each time the app starts, it asks Expo's update server whether a newer, signed version of the app's code is available. The request carries a random identifier the app creates for this installation, the app version and the update it is running, the platform (iOS), and — only if the app's previous start failed — a short error message. | The app, via Expo (EAS Update), in versions from 1.2.0 (13). | To deliver fixes without waiting for an App Store release. Updates carry fixes only; new features still go through Apple's review. Every update must be signed with Mizan's own key, and the app refuses any that is not. The identifier is not linked to your account and Mizan does not read it; Expo uses it to roll a fix out to a share of phones first. See section 8. |
| Swap review counts — for each swap review: which network it was on, whether it was confirmed, whether it showed a price warning (and which) or an "out of date" warning, how many times it refreshed itself, and the app version. | The app, via PostHog. | To check that a swap review works first time, every time, and to find out why when it does not. No account, wallet address, amount, token, device name, location or IP address is attached. See section 8. |
| Early-access email — the address you give on this website or on the app's "not available in your region yet" screen; from the app, also your country (as above). | You; the country is derived from your connection. | To tell you, in one message, when Mizan launches in your region; and, from the country, to see where people are waiting, so we know where to open next (counts by country, not a profile of you). Nothing else. Stored in a table nobody can read from the internet. |
| Support messages — what you write to support@joinmizan.app. | You. | To answer you. |
We do not collect your contacts, your location beyond the country above, your photos, or anything from other apps. We do not use advertising identifiers and we do not have an advertising SDK in the app.
4. Public blockchain data
Solana is a public ledger. Every transaction your wallet makes — what you sent, received or swapped, when, and with which address — is recorded on the blockchain, visible to anyone, and cannot be edited or deleted by us or by anyone else. Mizan reads this data to show it to you; it does not create the exposure and cannot remove it. If you would rather a particular activity not be linked to an address people know is yours, use a different wallet for it.
5. Adding funds
There are two ways to add funds.
- Receive from another wallet. You give someone — or yourself — your wallet address. That transfer happens on the blockchain; Mizan sees it the same way it sees the rest of your wallet's public activity (section 4), and tells you when it arrives if you allow notifications.
- Buy SOL with a card, through Stripe (in the United States, where offered). Card purchases need a recent version of the Mizan app; earlier versions do not offer them. Mizan opens Stripe's own page. The purchase is processed by Stripe, the merchant of record (per Stripe's documentation), and the cryptocurrency services are powered by Zero Hash LLC and Zero Hash Liquidity Services LLC. Mizan does not sell the SOL. What Stripe receives from us: your public wallet address (so the SOL is sent to your wallet, and Stripe locks it so it cannot be changed), the IP address your request came from, and an internal ID for the purchase. What you give on Stripe's page: everything you enter there — your identity details, card or bank details, and Apple Pay. These are collected on Stripe's checkout by Stripe and its crypto services provider, under their own privacy policies and terms, and they never reach us. What we receive back from Stripe: the status of the purchase, the dollar and SOL amounts, and the blockchain transaction that delivered the SOL. We never receive your card number, bank details or identity documents.
Before your first card purchase we ask which U.S. state you live in, because card purchases are not offered everywhere (section 3). What the app shows about a purchase is what Stripe reports; your balance is what the blockchain shows.
6. Profiles and the activity feed
Mizan has a social layer. Who you follow decides what appears in your activity feed. The app first shows you, once, how it works, and you choose one of two settings. You can change it at any time in Settings → Privacy.
Public (the default). Once you choose a handle, anyone can find you, follow you and open your profile: your handle, and a photo, banner and short bio if you add them; your wallet value (the total of what you hold, and how it has changed); your gain or loss in dollars and your percentage return; your positions, with how much you hold of each and any notes you wrote on them; and your place on the leaderboard, which ranks people by measured gain in dollars. People who follow you see your swaps, with their amounts, in their activity feed.
Private. Other people can still find your profile and see your handle, photo, banner, bio and follower counts, and that your account is private. To see anything else they send a follow request, which you accept or decline; declining does not tell them. Only people you approve see your wallet value, gain, return, positions and swaps — the same things a Public account shows everyone. A Private account is never ranked on the leaderboard. Switching to Private keeps the followers you already have; you can remove a follower at any time, and they then stop seeing your account, including what was already in their feed. Switching back to Public accepts any requests still waiting.
An account marked as belonging to a minor is never shown publicly, whatever its settings. If you used Mizan before wallet values became visible, yours is not shown until the app has told you about it. Making a setting stricter applies immediately to what others can see; making it looser does not reveal activity from before, because it was never recorded for the feed. You can remove your handle at any time.
7. Selling personal information — and your opt-out
Today, we do not sell or share your personal information in the sense those words carry under U.S. state privacy laws such as the California Consumer Privacy Act, and we do not disclose it to third parties for their own marketing.
We may use and share aggregated, de-identified statistics — for example, "which screened assets are swapped most" or how many people use a feature in a month. These cannot reasonably be linked back to you, and we commit not to attempt to re-identify them.
If we ever decide to sell or share personal information at the individual level, we will, in this order: update this policy to say exactly what and to whom; add an opt-out switch inside the app; and give you notice before the first such sale.
You can record an opt-out now. There is no switch in the app yet because there is nothing to switch off. If you want your preference on file so it is honoured automatically should our practices change, email support@joinmizan.app with the subject "Do not sell or share my personal information" from the address on your account, or include your handle or wallet address. We will confirm within 15 business days and apply it without asking you to justify it.
8. Analytics and crash reports
Crash reporting goes through Sentry. It is configured so that personal details are not sent, wallet addresses and account identifiers are removed from reports before they leave your device, and performance traces are disabled. Sentry also counts app sessions — whether each one ended in a crash — using a random identifier for the installation, so we can see how often the app crashes; it is not linked to your account or to you. All of it is off entirely in development builds. Each report also says which version of the app's code was running — the app version and, if one is installed, which update — which is the same for everyone on that version.
App update checks go to Expo, the company behind the tools the app is built with. When the app starts it asks Expo's update server whether a fix is waiting, and downloads it in the background; it takes effect the next time the app is opened. The request carries a random identifier for this installation (created by the app, kept in the app's storage, deleted with the app), the app version and the update it is running, the platform, and — only if the previous start failed — a short error message. It carries no account, wallet address or email address, and Mizan does not receive or read the identifier. Every update is signed with Mizan's own key, and the app refuses any update that is not.
Swap review counts are the only analytics in the app, through PostHog. When a swap review ends, the app sends one record: which network the swap was on (Solana or another), whether you confirmed, whether a price warning or an "out of date" warning appeared (and which), how many times the review refreshed itself, and the app version. Nothing else. It carries no account, wallet address, amount, token, device name or model, language, time zone or location.
There is no individual side to this data. The app does not create a profile of you at PostHog, and the random identifier it uses is held only in memory — a new one every time the app starts — so two uses of the app cannot be linked to each other, let alone to you. Location lookup is switched off in the app itself, and PostHog is set to discard the IP address a request arrives from. Screen recording, automatic event collection and app-open tracking are all off. Because nothing links these records to a person, they cannot be found or deleted by account, and there is nothing in them for the opt-out in section 7 to act on. If we ever collect anything at the individual level, we will update this policy and the date above before that change ships.
9. Who processes data for us
We use a small number of providers to run Mizan. Each receives only what its job requires and is bound by terms that prohibit using the data for its own purposes.
| Provider | What they do | What they see |
|---|---|---|
| Privy | Sign-in and the embedded self-custodial wallet on your device. | Your Apple/Google sign-in identity and email address — and, if you sign in with Google, your name from Google (Mizan never reads or stores it) — the public wallet address, and one piece of the split key, which cannot sign on its own. The full key is assembled only on your device; Mizan never receives any piece of it. |
| Supabase | Our database and server functions. | The account and activity data in section 3. |
| Helius | Reads the Solana blockchain and tells us when your wallet's activity changes. | Your public wallet address and its public on-chain activity. |
| Jupiter | Finds the best route for a swap across Solana's markets. | The swap you ask for and your public wallet address, so the swap can be built for you to sign. |
| Stripe | Card purchases of SOL, on Stripe's own page (section 5). Purchases are processed by Stripe, the merchant of record (per Stripe's documentation). Stripe acts for itself here, not only for us: its own privacy policy covers what you give it. | From us: your public wallet address, the IP address of the request, and an internal purchase ID. From you, directly: whatever you enter on Stripe's page. Mizan does not receive that. |
| Zero Hash | Stripe's crypto services provider: the cryptocurrency services in a card purchase are powered by Zero Hash LLC and Zero Hash Liquidity Services LLC (section 5). It acts under its own terms and privacy policy, which you accept on Stripe's page. | Nothing from us directly. What you enter on Stripe's checkout may be collected by Zero Hash as Stripe's crypto services provider; Mizan does not receive it. |
| MaxMind | A geolocation database that runs on our server. | Nothing is sent to MaxMind; the lookup happens on our side. |
| Sentry | Crash reports (section 8). | Crash details with identifiers removed. |
| PostHog | Swap review counts (section 8), stored in the United States. | The counts described in section 8 and the app version. The IP address a request arrives from is discarded. |
| Expo | Delivers signed updates to the app's code — fixes — and hosts them (sections 3 and 8), from app version 1.2.0 (13). | Each time the app starts: the random installation identifier, the app version and the update it is running, the platform, the IP address the request comes from, and — only after a failed start — a short error message. No account, wallet address or email address. |
| Apple and Google | Sign-in, app distribution, push notifications, device attestation. | As described in their own policies for those services. |
We may also disclose information where the law requires it, to protect the rights and safety of users or the public, or as part of a merger, acquisition or sale of the business — in which case this policy continues to apply to the information transferred, and you will be told.
10. How long we keep things
- Account, wallet address, profile, country: for as long as you have an account; deleted immediately when you delete your account in the app, or within 30 days of an emailed request (section 11).
- Indexed on-chain activity: kept with the account so your history loads quickly; deleted with the account. The underlying blockchain record remains public regardless.
- Card purchase records and the state you live in: kept with the account so you can see your purchases; deleted with it. Stripe keeps its own records of the purchase under its own policy.
- IP-based rate-limit counters: deleted within one day.
- Device attestation keys: while that installation is signed in; a fresh sign-in creates a new one, and all of them are deleted with your account.
- Push tokens: until you disable notifications, sign out, or delete your account.
- Crash reports: 90 days at Sentry.
- Swap review counts: one year at PostHog. They are not linked to any account, so they cannot be deleted with one.
- Early-access emails (and the country stored with them): until Mizan is available in your region and we have sent the one message, or until you ask us to remove it.
- Support correspondence: up to two years, so we can follow up on earlier issues.
- Records we must keep by law (for example, tax records of the fees we received): for the period the law sets.
11. Your controls and rights
- Leave with your funds. From the first screen in Settings, you can send everything in your wallet to any other Solana wallet you control, with no fee from us. This works even when swaps are paused.
- Delete your account — in the app. Profile → Settings → Delete your account. The app first shows what deletion does and does not touch, points you to move any assets out, then asks you to type a confirmation. On confirmation, every record we keep about you (the account data in section 3) is deleted immediately, in one step, and you are signed out. If you cannot use the app, email support@joinmizan.app from the address on your account, or include your handle or wallet address, and we will do the same within 30 days and confirm to you. Deleting your Mizan account does not delete your wallet — its keys live with your Apple or Google sign-in, not with us — and it cannot delete anything on the public blockchain. Sign in again later and the same wallet returns under a fresh, empty account. Your public wallet address may remain on our indexing provider's watch list; nothing is recorded for it after deletion.
- Profile visibility. Change or remove your handle and visibility in Profile at any time.
- Notifications. Turn them off in your phone's settings.
- Access, correction, portability, objection. Email us and we will provide a copy of the information we have about you, correct it, or explain why we are keeping it. If you are in the EU, UK, California or another place whose law gives you specific rights over your data, you have them and we will honour them; we will not treat you differently for exercising them. You can also complain to your local data-protection authority.
- Opt out of any future sale or sharing. Section 7.
We will ask for enough to confirm the request comes from the account holder — normally an email from the address on the account — and nothing more.
12. Security
Your full key exists only on your device. Every request to our servers is authenticated and checked against the account it claims to be from; the database enforces row-level ownership so one account cannot read another's rows; secrets live only on the server; and every transaction is simulated before you are asked to sign it, so an unexpected drain is refused rather than signed. No system is perfectly secure, and no one at Mizan will ever ask you for your keys, recovery information or password. If you believe something has gone wrong with your account, write to support@joinmizan.app immediately.
13. Children
Mizan is for adults. You must be at least 18 to use it, and we do not knowingly collect information from anyone younger. If you believe a child has created an account, tell us and we will delete it.
14. Where data is stored
Our servers and providers are located in the United States. If you use Mizan from elsewhere, your information is transferred to and processed there. Where the law requires it, we rely on standard contractual clauses or an equivalent safeguard with our providers for that transfer.
15. Changes to this policy
When we change this policy in a way that matters, we will update the date at the top, note what changed, and tell you in the app before the change takes effect. Continued use after that date means the new version applies. Earlier versions are available on request.
22 October 2026: added app update checks through Expo (sections 3, 8 and 9), from app version 1.2.0 (13), and that crash reports name the version of the app's code that was running.
16. Contact
Apex AI Labs · support@joinmizan.app · joinmizan.app