How the ComplyEur Schengen calculator works
See the date rules, country treatment and verified boundary scenarios used by the ComplyEur 90/180-day calculator, including its limits.
By James Walsh, Founder, ComplyEur
- Published
- 07 September 2026
- Updated
- 07 September 2026
- Reading time
- 6 min read
The result should be inspectable rather than mysterious. These are the rules, examples and limits behind the calculation.
The calculation in plain English
For every date being checked, ComplyEur looks back over a 180-day period that includes that date. It counts each calendar day of qualifying Schengen presence once. The result is compliant when the total is 90 or fewer and a breach when it reaches 91.
Arrival and departure both count as full presence days. A same-day visit uses one day. Overlapping trip records do not count the same calendar day twice. There is no annual reset: an old presence day stops affecting the answer only when it moves outside the relevant rolling window.
The calculator performs date-only arithmetic. It does not use arrival times, departure times or the viewer's time zone, because those facts do not turn an arrival or departure date into a partial day under the published rule.
The rule implemented
The Schengen Borders Code defines a short stay as no more than 90 days in any 180-day period. It states that the date of entry is the first day of stay and the date of exit is the last. The European Commission's official short-stay calculator applies the same moving-window approach.
For a date D, the calculation is:
- Set the window start to
Dminus 179 calendar days. - Gather qualifying presence dates from the window start through
D, inclusive. - Remove duplicates caused by overlapping records.
- Count the unique dates.
- Compare that count with the 90-day limit.
For a proposed journey, the calculation repeats for every date from entry through exit. Checking only the proposed arrival is insufficient: a traveller can enter at 89 days and pass the limit during the stay.
Country treatment
The shared allowance covers the 29 formal Schengen countries. Ireland and Cyprus are European Union members but are outside this common short-stay calculation. The country guide lists the included and commonly confused destinations.
Bulgaria and Romania entered the Schengen calculation on 31 March 2024, when internal air and sea border controls were removed. Land-border controls were removed later, on 1 January 2025. A historical calculation must therefore count qualifying days in Bulgaria or Romania from 31 March 2024 rather than waiting until 2025.
Andorra is not a formal Schengen member and is treated as outside the common allowance. Transit through France or Spain still creates Schengen presence on the relevant dates and must be recorded separately.
Monaco, San Marino and Vatican City are not formal members either. ComplyEur currently uses a conservative operational assumption for journeys recorded to those destinations because travellers normally reach them through neighbouring Schengen countries without routine immigration control. A result involving one of these microstates needs manual review of the actual route and evidence; the calculator is not a legal determination of the person's status there.
Verified boundary scenarios
These examples make the behaviour testable without trusting a summary number.
| Scenario | Trips entered | Expected result |
|---|---|---|
| Same-day meeting | France, 10 March 2026 to 10 March 2026 | 1 presence day |
| Arrival and departure | Germany, 10–12 March 2026 | 3 presence days |
| Overlapping records | Spain, 1–5 April; Spain, 3–7 April | 7 unique days, not 10 |
| Exact limit | Netherlands, 5 January–4 April 2026 | 90 days on 4 April; no breach yet |
| First breach | The same stay continues to 5 April | 91 days on 5 April; breach by 1 day |
| Romania before accession | Romania, 20–24 March 2024 | 0 days in the common calculation |
| Romania across accession | Romania, 29 March–2 April 2024 | 3 days: 31 March, 1 April and 2 April |
| Outside Schengen | Ireland, 1–10 May 2026 | 0 Schengen days |
The exact-limit example is a useful check against an off-by-one error. From 5 January through 4 April 2026 there are 90 calendar days. The traveller becomes non-compliant on 5 April, not 4 April.
A rolling-window scenario
Suppose a traveller is present for 30 days in January, 30 in March and 30 in May 2026. They leave on 30 May with 90 days used.
On 29 June, 1 January remains inside the relevant window, so no day is available. On 30 June, 1 January has moved outside it. If the traveller enters that day, the newly used day replaces the old one and the total remains 90.
This can continue while January dates leave the window one at a time. It does not mean the allowance has reset. Another cluster of old dates can stop the trip later, which is why the guide to when Schengen days reset recommends testing the whole proposed stay.
What the calculator needs from you
The arithmetic is deterministic, but the answer is only as complete as the travel entered. Include:
- business and personal Schengen presence;
- arrival and departure dates;
- trips booked or approved for the forecast period;
- transit days that involved entry into Schengen; and
- corrected actual dates after travel.
Do not omit a holiday because the next trip is for work. The allowance belongs to the traveller and combines both purposes. If your records disagree with passport evidence or an official border record, investigate the difference rather than choosing the more convenient total.
What the result does not decide
ComplyEur calculates ordinary short-stay day use from supplied travel. It does not decide:
- whether an activity is permitted as a business visit;
- whether a visa, work permit or notification is required;
- how a residence permit or long-stay visa affects a particular stay;
- whether a bilateral arrangement applies;
- whether an authority will admit a traveller; or
- whether an EES record is complete or correct.
Those questions depend on the traveller's documents, nationality, activity and destination-country rules. Use the arithmetic as one part of a wider pre-trip compliance checklist and obtain qualified advice for unusual status or work-permission questions.
How the scenarios are checked
The product's calculation engine uses calendar-date values and has automated tests for inclusive endpoints, same-day journeys, rolling boundaries, overlaps, leap years, future travel and country effective dates. Published examples should be checked against the engine and the European Commission calculator where the official tool supports the scenario.
The two calculators may still appear to disagree when their inputs differ. Common causes are a missing personal trip, an entry or exit date excluded by mistake, a non-Schengen destination treated as Schengen, or a proposed stay entered in only one tool. Compare the underlying dates before treating the difference as a calculation fault.
Sources and review date
- Schengen Borders Code: 90 days in any 180-day period and inclusive entry and exit dates (opens in a new tab)
- European Commission short-stay calculator (opens in a new tab)
- Council of the EU: Bulgaria and Romania air and sea controls removed from 31 March 2024 (opens in a new tab)
- Council of the EU: land-border controls removed from 1 January 2025 (opens in a new tab)
Sources last checked: 2026-09-07.
This methodology explains the product's calculation policy. It is not legal or immigration advice, and a result does not grant entry or permission to work.
Check your dates with the free calculator or read the complete 90/180-day guide.
Read next
About the author
Founder, ComplyEur
Founder of ComplyEur. Built the deterministic 90/180-day calculation engine behind the product.
Put the guidance into practice
Review ComplyEur options or speak with the team about your travel process.