Nomads & Expats · Compliance
Tax residency & Schengen day tracker
Stay one day too long and you can owe a whole year of tax — or trigger a Schengen overstay. Log your trips once and see both at a glance: the 90/180 tourist limit, each country's own residency threshold (183 days, or Cyprus's 60), the US and UK tests, and what crossing costs.
Tax Residency & Schengen Tracker
Log your stays once. This flags the Schengen 90/180 tourist limit, each country's own tax-residency threshold (183 days — or Cyprus's 60-day rule), the US Substantial Presence Test and the UK tax-year test, plus what springing a trap would cost. Runs entirely in your browser — your dates are never sent anywhere or stored on our servers.
🇪🇸 Spain 121 / 183 days · 62 safe left
🇨🇾 Cyprus 25 / 183 days · 158 safe left
About to trigger residency somewhere? Get it right before you cross:
Early-warning day math — not tax advice. Treaties, ties, domicile and income type change outcomes. Links may be affiliate links.
The rules, briefly
- What is the 183-day rule?
- Most countries treat you as tax-resident once you spend 183+ days there in the relevant period (a calendar year in most places; the UK uses an April 6 tax year; some use any rolling 12 months). Days count inclusively — entry and exit days both count. This tool applies each country's own threshold and basis, not a blanket 183.
- How is this different from the Schengen 90/180 rule?
- They're separate limits. Schengen 90/180 is a tourist-VISA cap (max 90 days of presence in any rolling 180 across the whole Schengen Area) — overstaying risks entry bans. Tax residency is about which country taxes your worldwide income. This tracker checks both from the same itinerary, because a nomad has to respect both at once.
- What is Cyprus's 60-day rule?
- Cyprus lets you become tax-resident on just 60 days — but only if you're not tax-resident anywhere else (and not 183+ days in another country), you run a business / are employed / hold a directorship in Cyprus, and you keep a home there. Because the tracker counts your days in every country, it only flags the 60-day rule when the 'not resident elsewhere' condition actually holds.
- How does the US Substantial Presence Test work?
- You're a US tax resident if you spend 31+ days there this year AND current-year days + ⅓ of last year's + ⅙ of the year before reach 183. The tracker computes the weighted total automatically.
- What does triggering residency cost?
- Add your annual income and, for any country you're at or over the threshold in, the tracker estimates the tax on your full income at the standard resident rate versus any expat regime (Spain's Beckham law, Portugal's IFICI, Cyprus/Malta non-dom, territorial systems…), and flags the cheaper route.
- Is my travel data stored anywhere?
- No. The math runs entirely in your browser; your dates are kept only in your own browser's local storage so the tracker remembers them between visits. Nothing is sent to a server unless you deliberately call the JSON API yourself.
For AI agents: POST /api/residency-tracker with { stays: [{ country, entry, exit }], income? } — Schengen, per-country residency and tax cost in one call. The single-purpose endpoints /api/visa-check, /api/residency-check and /api/tax-trap.json still work. See /llms.txt.