Nothing you import ever leaves your machine.

Last updated 3 September 2026. Operated from the United Kingdom.

Start with the part that matters

The gains.tax app runs entirely in your browser. Transaction files you import, wallet addresses you scan, API keys you enter and every report you generate are processed and stored on your device only. They are never transmitted to us, and we could not read them if we wanted to.

You do not have to take that on trust. Open your browser's network tab, import a file, compute a year, and watch: no request carries your transactions anywhere. That is the whole claim, and it is checkable in under a minute.

Optional features you explicitly trigger do reach out, public block explorers for wallet scanning, market prices for valuations, and your exchange's API for read-only sync, routed through our relay. The relay forwards the request and retains nothing.

What we hold, why, and for how long

This is the complete list. If something is not here, we do not have it.

What Why How long Who processes it
Anything from the app itself, transactions, wallets, reports, API keys We do not. It never reaches us. Never held Nobody but you
Share ciphertext, if you create a share link for an accountant. An encrypted blob we cannot decrypt, plus its size and timestamps To hand the link's recipient the sealed file The expiry you pick when you create it, 7, 30 or 90 days, then automatic deletion. You can revoke it sooner with the delete token you were given Cloudflare R2 and KV, on our behalf
Chat messages you type into the assistant widget, and your IP address for rate limiting To answer you, and to stop one connection flooding the endpoint Conversations are not stored at all, they live in your own browser tab. The rate-limit counter is keyed to your IP and the current hour, and expires automatically about an hour later Cloudflare Workers AI, running a Llama model, on our behalf
Directory applications, practice waitlist signups, deadline reminder signups and contact form messages, the details you type plus your email and browser user agent To vet and run the professional directory, to send the reminders you asked for, and to reply to you As long as a listing is live or under review, and correspondence for as long as it takes to deal with. Ask and it goes sooner Cloudflare KV, and our email provider for the reply
Purchase records, if you buy a key To issue your licence key and meet tax and accounting obligations As long as UK law requires records of a sale to be kept Stripe, under Stripe's own privacy policy

Share links, precisely

A share link is end to end encrypted. The key lives in the URL fragment, the part a browser never sends to a server, so what we store is ciphertext, its size and its timestamps, and what we can read is nothing. Encrypted personal data is still personal data under UK GDPR, so we say plainly that we hold it: for a bounded period you choose, in a form we cannot open. We never hold readable tax data. See how sharing works for the mechanics.

The chat assistant

The chat widget on the site sends your message to Cloudflare Workers AI, which runs a Llama model to generate the reply. Conversations are not stored on our side, the history lives in your browser tab and is gone when you close it. Your IP address is read from the connection to count messages per hour and expires with that counter. Do not type anything into the chat you would not want a model provider to process, and it does not need your figures to be useful.

This website

The website sets no cookies and uses no advertising or fingerprinting trackers. Since 3 September 2026 the site uses Cloudflare Web Analytics, the cookieless kind, to count page views. What it records is aggregate: which pages are viewed, the referring site, the country, and the browser family. It sets no cookie, stores no identifier on your device, builds no profile of you, and cannot follow you to another site. We see counts, not people. Cloudflare processes the requests to produce those counts under its own privacy policy. This paragraph is the change the previous version of this page promised to make before any counting started.

If you pay

Payment is handled by Stripe on Stripe's own pages, under Stripe's privacy policy. We receive what a merchant needs, the fact of the purchase and the email your licence key is issued to. Those records are never linked to tax data, because no readable tax data exists on our side to link them to.

Who the controller is

The data controller for everything described above is the operator of gains.tax, working from the United Kingdom. The registered name and address will be published here the moment registration completes. Until then, the contact point for any privacy question, and the one that always works, is [email protected].

Your rights

UK GDPR rights apply to the little we do hold. Email [email protected] and we will show, correct, export or delete what we have about you. Share ciphertext you can delete yourself, immediately, with the delete token issued when you created the link. You may also complain to the Information Commissioner's Office, though we would rather you told us first and gave us the chance to fix it.