Methodology
How we verify rules
A residency day counter is only worth as much as the rules behind it. This page describes exactly how those rules are researched, stored, tested and kept current — so you can check the claim rather than take it.
Rules are data, not code
Every rule is a JSON file — not a function buried in an app. Each one carries the jurisdiction, the counting conventions that apply to it, its parameters, a link to the responsible authority's own guidance, the date we last verified it against that source, and the range of dates it is effective for.
Because rules are data, the same file drives the iOS app, this website's calculators, and the guides you read here. There is no second implementation to fall out of step.
Every fact on this site is injected, never typed
When a guide states a threshold, that number is read from the rule file as the page is built. Writers cannot hand-copy a figure: the build refuses to complete if a page cites a field the rule does not carry, and an automated check rejects a literal day count written into prose. The failure mode we care about is not a typo, it is a page that stays subtly wrong for a year after a rule changes.
Correctness is pinned by golden vectors
Counting conventions are where residency rules actually bite, and they differ in ways that are easy to get wrong: the UK counts days you are present at midnight, Cyprus counts the day you arrive but not the day you leave, the Schengen area counts both, and New York counts any part of a day. Each of these is encoded as a test case with a known answer.
We hold 119 rule-evaluation vectors across 52 fixture files, including the worked examples published in the European Commission's short-stay calculator manual and the IRS's own guidance. Every engine — the app's, this site's — must reproduce all of them identically, and the tests run with the machine's clock set to an adversarial timezone so that a result can never depend on where the code happens to run.
Rules are versioned, not edited
When a jurisdiction changes its law, we add a version with its own effective dates rather than overwriting the old one. Cyprus removed a limb of its 60-day rule with effect from 1 January 2026; both versions exist, and a 2025 period is evaluated against the 2025 wording. Guides show the current version and note what changed.
What we will not do
- We do not present a generated 183-day indicator as if it were researched law. Countries without a full rule set get an explicitly advisory counter, labelled as such.
- We do not issue verdicts. Residency often turns on facts a day counter cannot see — a home, an intention, a centre of interests — so the app reports rule conditions and the evidence behind them, never a conclusion about your status.
- For Austria, France, Germany, Hong Kong SAR China, Israel, Japan, Netherlands, Puerto Rico, and Switzerland — where residence is decided on facts and circumstances rather than a day threshold — counts are advisory only and say so permanently on the page. A further handful of individual rules are advisory inside otherwise determinative jurisdictions, such as the UK's temporary-non-residence charge and California's employment safe harbour; 14 of our 51 researched rules carry that status.
Check it yourself
Machine-readable
The rules are published as JSON: /rules/index.json lists every rule with its version, source and verification date, and each rule has its own endpoint. The data is licensed CC BY 4.0 — use it, with attribution to Residay — residay.com. See terms for what the licence does and does not cover.
Common questions
Where do Residay's day-count rules come from?
Each rule is researched from the responsible authority's own published guidance — HMRC, the IRS, the European Commission, national tax departments — and stored as a versioned JSON file carrying that source URL and the date it was last verified. Nothing is paraphrased from secondary commentary.
How do you know the calculations are correct?
Every rule is pinned by golden test vectors: 119 rule-evaluation cases, many of them the official worked examples published by the authorities themselves. Both the iOS app and this website's calculators must reproduce every vector identically before anything ships.
How do you stop the website and the app disagreeing?
They read the same rule files. Thresholds and conventions shown on a guide page are injected from that rule's JSON when the site is built, so a figure cannot be typed by hand — and if a page references a rule field that does not exist, the build fails rather than publishing a blank.
What happens when a rule changes?
Rules are versioned with effective date ranges rather than edited in place. Cyprus changed its 60-day rule with effect from 1 January 2026, so both versions exist and each period is evaluated against the wording that applied at the time.
Can I use Residay's rule data?
Yes. The rule data is published as JSON at /rules/index.json and licensed CC BY 4.0, which requires attribution to Residay — residay.com. Our test fixtures and written guides are not covered by that licence.