Privacy Policy
Last updated: 19 October 2026 · Version 1.1
1. Who is responsible for your data
Taxinger (Unipessoal, Lda), registered office Avenida Do Atlântico n 16, 14 piso, escrit. 8, 1990-019 Lisboa PT, registered at
Conservatória do Registo Comercial de Lisboa under NIPC 519706161 — "Taxinger", "we" — is the controller of the personal
data described here.
- Questions, requests, complaints:
owner@taxinger.com - Supervisory authority: Comissão Nacional de Proteção de Dados (CNPD), Portugal. You may also complain to the authority of the EU country where you live.
2. The short version
- We hold what is needed to compute your crypto taxes: the addresses you give us, the statements you upload, your answers, the results, and the way you sign in.
- We never ask for a private key, a seed phrase or an exchange API key. We cannot move your assets. A wallet signature in Taxinger only proves who you are.
- There is no advertising and no tracking cookie on this site, and nothing here follows you to another one. We do count visits — how many people read a page and how far they get — and that counting stores nothing in your browser and keeps no IP address (cookie notice). Three cookies exist and all three are needed to run the site.
- We do not sell your data and we do not share it for anyone else's marketing, and we store no IP addresses with your account.
- When you upload an exchange statement, an automated model reads only which column is which — from the header and a few rows whose values are masked first. Your amounts, names, ids and addresses are not sent to it (§7).
- Blockchain data is public and we keep it in a shared store that identifies nobody by itself. When you delete your account, the link between you and any address goes with it.
3. What we process, why, and on what legal basis
"GDPR 6(1)(b)" means the processing is necessary to perform our contract with you; "6(1)(c)" a legal obligation; "6(1)(f)" our legitimate interest; "6(1)(a)" your consent.
| What | Specifically | Why | Basis | Kept |
|---|---|---|---|---|
| Account | your user record, the language you chose, your tax country, and what you accepted of the terms, with the version and when | to run your account, compute for the right country, and show what you agreed to | 6(1)(b); 6(1)(c) for the record of acceptance | until you delete the account |
| Sign-in identities | email address (lowercased), EVM or Solana address, Telegram user id — whichever you link | so you can sign in, and so an identity is not claimed twice | 6(1)(b) | until you unlink it or delete the account |
| Sessions | a hashed session token and your browser's user-agent string. No IP address is stored | to keep you signed in and to show you where your account is signed in | 6(1)(b), and 6(1)(f) for security | 30 days from sign-in; 10 minutes for a session waiting for its passkey |
| Sign-in challenges | the hash of an email link, a wallet nonce or a passkey challenge | so a link or a signature works once, and only in the browser that asked | 6(1)(b), 6(1)(f) | 5–15 minutes, then deleted |
| Passkeys and recovery codes | the passkey's public key and its metadata; recovery codes stored only as hashes | second factor, and a way back into your account | 6(1)(b) | until you remove them |
| Wallets and addresses | the addresses you ask us to read, the names you give wallets, exchange accounts, and smart wallets derived from your addresses | this is what we read your history from | 6(1)(b) | until you remove them or delete the account |
| Blockchain history | transactions, transfers, traces and balances of those addresses, read from public chains | to reconstruct what happened and compute tax | 6(1)(b); the shared store also 6(1)(f) | the chain data itself stays in a shared store (§6); your link to it goes when you delete the account |
| Exchange statements | the file name, the rows exactly as uploaded, and the format fingerprint of the header | to turn a statement into transactions, and to read it again correctly after a fix | 6(1)(b) | until you delete the account or remove the exchange account |
| Tax data | the ledger we build, lots, results, form lines, items needing attention, your answers and corrections, your notes on transactions | the service itself | 6(1)(b) | until you delete the account |
| Payments | the checkout session, subscription and payment identifiers our payment provider gives us, the pack or the plan, the amount and currency, whether the plan renews and what its next year bills, refunds and disputes. We never receive or store your card details | to sell and account for packs and plans | 6(1)(b); 6(1)(c) for accounting | invoice and payment records: 10 civil years, as Portuguese tax law requires (CIVA art. 52) |
| Messages we send you | the channel, the recipient (your email address or Telegram chat id) and the message's parameters | to tell you a scan finished, to send a sign-in link, to confirm a purchase | 6(1)(b); 6(1)(c) for the purchase confirmation | parameters are cleared once the message is sent; a sign-in notice expires with its token, a scan notice after a week |
| Assistants (MCP) | which client you connected, the scopes you granted, hashed access and refresh tokens, when you consented | so your own assistant can read your reports or answer for you | 6(1)(b) | access tokens 1 hour, refresh tokens 90 days from last use, until you revoke |
| Announcements | your email address, if you ask to be told when a new chain or country is added | to send that announcement | 6(1)(a) — withdraw any time, link in every message | until you withdraw |
| Security and abuse | server logs of requests and errors, which may contain the IP address a request came from, failed sign-in attempts, rate-limit counters | to keep the service and your account safe | 6(1)(f) | 30 days |
| Aggregated statistics | counts and measurements with no identifier of you or your addresses | to see how the product performs and improve it | 6(1)(f) | indefinitely, because it is no longer personal data |
We do not process special categories of data, and we do not ask for any.
4. Where your data comes from
From you (your account, addresses, statements, answers), from the public blockchains and their data providers for the addresses you gave us, from price sources and official central-bank rates for values, and from our payment provider for the status of a payment. If you sign in with Telegram we receive the identifiers Telegram signs for that purpose. We do not buy data about you and we do not enrich your profile from anywhere.
5. Who processes data for us
We use service providers, and each is a processor acting on our instructions under a data processing agreement; each receives only what its job needs. We describe them by category rather than by name, because naming the services a system is built from tells an attacker where to look:
| Category | What it receives |
|---|---|
| Hosting and infrastructure — servers, database, message queue, cache | everything we store, as our infrastructure |
| Blockchain data providers — the node and indexing services we read each chain through | the addresses whose history we read, as query parameters |
| Our payment provider — the checkout page you are taken to, whose name you see there | your email address and the payment data you enter there; we never see your card |
| Email delivery | your email address and the text of the message |
| Telegram — only if you linked it | your Telegram chat id and the message |
| An AI model provider, outside the EEA — reads a statement's layout once (§7) | column headers and a few sample rows, masked before they are sent |
| Network egress — how our requests to the providers above leave our infrastructure | those requests |
| Error reporting — records what breaks in our own systems, so we find it and fix it; its servers are in the EU; nothing of it runs in your browser | the moment and the place in our code that failed, the message of the failure, and the identifier of the account the work was for. The same server logs §3 names, held where we can read them. Never your request's contents, never the address of a page — only the name of the route that failed — and never your card or your passwords |
| Site analytics — counts visits, stores nothing in your browser; its servers are in the EU | a number its servers compute from the day's secret, your IP address and your browser's description, which cannot be turned back into either and differs tomorrow; the page you read, its language, and the country your connection suggests. Nothing from your account, and never your address itself |
Who does not receive your personal data: the sources of crypto-asset prices and the national central banks whose official exchange rates we use — we ask them about assets and currencies, never about you. The services we read a smart contract's published interface from receive the address of a contract, never yours.
You can always ask who exactly holds your data. Write to owner@taxinger.com and we will
name the specific providers that process your personal data, as GDPR art. 15(1)(c) entitles
you to know.
We also disclose data where the law requires it — a court order, a lawful request from an authority — and to our accountants and lawyers under professional confidentiality. If the business is ever transferred, your data goes with it and you will be told beforehand.
6. Blockchain data, and what deletion can and cannot do
Blockchain transactions are public and permanent on the chains themselves; we cannot change or erase anything there. In our own systems, the data of a chain is stored once and shared across accounts — it is a cache of a public ledger, keyed by chain and transaction, and by itself it names nobody.
What is personal is the link between you and an address, and everything built on it: your ledger, your results, your answers. When you delete your account, those links and everything derived from them are deleted. The shared chain data stays, as does the fact that some address was once searched — not that it was yours.
7. Your statements and the automated model
When you upload a statement in a layout we have not seen before, we need to know which column is the date, which is the amount, and what each operation label means. For that:
- We send the column headers and a handful of sample rows to an AI model provider outside the EEA.
- Before sending, every sample is masked: digits are replaced by random digits, and the letters of long tokens — ids, addresses, IBANs — and of anything containing "@" are replaced too; free-text columns are masked whole. Labels survive, because the label is what has to be understood. Your amounts, names, counterparties, ids and addresses do not leave in readable form.
- This happens once per statement layout and account, not per upload.
- The rows themselves are always parsed by our own code, never by a model.
- Nothing else in Taxinger sends your data to any language model. If you would rather this did not happen at all, do not upload statements: addresses alone work.
8. Decisions
Taxinger computes figures; you decide what to file. We do not make automated decisions with legal or similarly significant effects for you within the meaning of GDPR art. 22, and we do not profile you.
9. Transfers outside the EEA
Some of the categories in §5 include providers outside the EEA. Where they do, the transfer
rests on the European Commission's standard contractual clauses, or on an adequacy decision
where one covers the provider. Ask us at owner@taxinger.com which mechanism applies to the
provider processing your data.
10. How long we keep things
The table in §3 gives the period per category. Three rules behind it:
- While your account lives, we keep what the service needs — otherwise a recalculation would lose your corrections and your history.
- When you delete your account, we delete it, except invoice and payment records, which Portuguese tax law makes us keep for ten civil years (CIVA art. 52), and anything a live legal claim obliges us to preserve.
- Shared public chain data is not deleted, because it is not personal to you (§6).
11. Your rights
You can, at any time: see what we hold (art. 15), correct it (16), have it deleted (17), get a copy in a machine-readable form (20), object to processing based on our legitimate interest (21), ask us to restrict processing (18), and withdraw consent where consent is the basis (7(3)) — withdrawing it does not undo what was lawful before.
How: export and account deletion are in your account settings and work immediately; for
anything else write to owner@taxinger.com. We answer within one month, and tell you if we need
longer. We never charge for this, and we never make you explain why.
If you think we have it wrong, complain to us first — then, if that does not settle it, to the CNPD or your own country's authority.
12. How we protect it
Session, sign-in and OAuth tokens are stored only as hashes; cookies are httpOnly, Secure
and host-locked; passkeys are supported as a second factor with recovery codes behind them; all
traffic to us and to our providers is over TLS; access to production is limited to the people
who operate it. We hold no private keys, no seed phrases and no exchange API keys, so there is
nothing in Taxinger with which to move your assets.
If a breach of your personal data happens and it is likely to risk your rights, we notify the CNPD within 72 hours of becoming aware and tell you where the law requires it.
13. Children
Taxinger is for adults. You must be 18 or older to use it, and we do not knowingly process the data of anyone younger.
14. Changes
When this policy changes materially, we tell you by email and on the site before the change takes effect, and keep the previous versions readable at their own addresses.