{
  "id": "schengen",
  "version": "a1b7298f75ed",
  "status": "published",
  "name": "Schengen Calculator",
  "question": "How many days left in my 90 in 180?",
  "summary": "Counts the days you have used of the Schengen 90 days in any 180-day period from your trips, the days left on a date, and how long you could stay if you enter then.",
  "category": "days",
  "subcategory": "dates",
  "url": "https://www.acalculator.org/days/schengen-calculator",
  "markdown": "https://www.acalculator.org/days/schengen-calculator.md",
  "kind": "function",
  "method": "days used on day x = distinct days of stay from x − 179 to x (entry and exit days count); days left = 90 − days used on the check date; stay until = the last day d such that, staying from the check date to d, every day keeps 90 or fewer days used.",
  "assumptions": [
    "Every stay is in the Schengen area; the days of entry and exit count in full.",
    "Overlapping or repeated stays count each day once.",
    "Stays you list after the check date count toward the stay-until date, as planned trips.",
    "Visa-free short stays only: a long-stay visa or residence permit is not counted, and some countries have bilateral agreements."
  ],
  "inputs": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "stays": {
        "title": "Your stays",
        "description": "One row per stay in the Schengen area: the day you entered and the day you left.",
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "in": {
              "title": "Entry",
              "description": "The day you entered.",
              "type": "string",
              "format": "date"
            },
            "out": {
              "title": "Exit",
              "description": "The day you left.",
              "type": "string",
              "format": "date"
            }
          }
        }
      },
      "on": {
        "title": "Check on",
        "description": "The date to check, or the day you plan to enter. Today, unless you change it.",
        "type": "string",
        "format": "date"
      }
    }
  },
  "outputs": {
    "left": {
      "label": "Days left",
      "description": "90 − days used on the check date (0 when none are left).",
      "format": "integer"
    },
    "used": {
      "label": "Days used",
      "description": "Distinct days of stay in the 180 days that end on the check date.",
      "format": "integer"
    },
    "status": {
      "label": "Status",
      "description": "Whether the 90-day limit holds on the check date.",
      "format": "text"
    },
    "windowStart": {
      "label": "180-day period from",
      "description": "The first day of the 180-day period that ends on the check date (179 days before it).",
      "format": "date-long"
    },
    "stayUntil": {
      "label": "Stay until, entering on the check date",
      "description": "The last day you could stay without a break if you entered on the check date, with every day inside 90 in 180.",
      "format": "date-long"
    },
    "stayDays": {
      "label": "Longest stay from the check date",
      "description": "The days from the check date to that last day, both counted.",
      "format": "integer"
    }
  },
  "defaultAnswer": {
    "inputs": {
      "stays": [
        {
          "entry": "2026-05-01",
          "exit": "2026-05-30"
        },
        {
          "entry": "2026-07-10",
          "exit": "2026-08-08"
        }
      ],
      "on": "2026-10-05"
    },
    "outputs": {
      "left": 30,
      "used": 60,
      "status": "Within the 90 days",
      "windowStart": "2026-04-09",
      "stayUntil": "2026-12-03",
      "stayDays": 60
    },
    "text": "On October 5, 2026 you have used 60 of your 90 days, with 30 left."
  },
  "examples": [
    {
      "given": {
        "stays": [
          {
            "entry": "2026-05-01",
            "exit": "2026-05-30"
          },
          {
            "entry": "2026-07-10",
            "exit": "2026-08-08"
          }
        ],
        "on": "2026-10-05"
      },
      "expect": {
        "used": 60,
        "left": 30,
        "windowStart": "2026-04-09",
        "stayUntil": "2026-12-03",
        "stayDays": 60,
        "status": "Within the 90 days"
      },
      "source": "hand calculation in content.mdx; Regulation (EU) 2016/399 (Schengen Borders Code), Article 6(1): stays of no more than 90 days in any 180-day period, considering the 180-day period preceding each day of stay, https://eur-lex.europa.eu/eli/reg/2016/399/oj (retrieved 2026-10-05); European Commission, Migration and Home Affairs, Border crossing: the short-stay calculator; the days of entry and exit count as days of stay, https://home-affairs.ec.europa.eu/policies/schengen-borders-and-visa/border-crossing_en (retrieved 2026-10-05)"
    },
    {
      "given": {
        "stays": [
          {
            "entry": "2026-01-01",
            "exit": "2026-03-31"
          }
        ],
        "on": "2026-04-01"
      },
      "expect": {
        "used": 90,
        "left": 0,
        "status": "Within the 90 days; no days free to enter on this date"
      },
      "source": "hand calculation in content.mdx: 31 + 28 + 31 = 90; Regulation (EU) 2016/399 (Schengen Borders Code), Article 6(1): stays of no more than 90 days in any 180-day period, considering the 180-day period preceding each day of stay, https://eur-lex.europa.eu/eli/reg/2016/399/oj (retrieved 2026-10-05)"
    },
    {
      "given": {
        "stays": [
          {
            "entry": "2026-01-01",
            "exit": "2026-03-31"
          }
        ],
        "on": "2026-06-30"
      },
      "expect": {
        "used": 89,
        "left": 1,
        "windowStart": "2026-01-02",
        "stayUntil": "2026-09-27",
        "stayDays": 90
      },
      "source": "hand calculation in content.mdx; Regulation (EU) 2016/399 (Schengen Borders Code), Article 6(1): stays of no more than 90 days in any 180-day period, considering the 180-day period preceding each day of stay, https://eur-lex.europa.eu/eli/reg/2016/399/oj (retrieved 2026-10-05); European Commission, Migration and Home Affairs, Border crossing: the short-stay calculator; the days of entry and exit count as days of stay, https://home-affairs.ec.europa.eu/policies/schengen-borders-and-visa/border-crossing_en (retrieved 2026-10-05)"
    },
    {
      "given": {
        "stays": [
          {
            "entry": "2026-01-01",
            "exit": "2026-04-09"
          }
        ],
        "on": "2026-04-09"
      },
      "expect": {
        "used": 99,
        "left": 0,
        "status": "Over the limit by 9 days; no days free to enter on this date"
      },
      "source": "hand calculation in content.mdx; Regulation (EU) 2016/399 (Schengen Borders Code), Article 6(1): stays of no more than 90 days in any 180-day period, considering the 180-day period preceding each day of stay, https://eur-lex.europa.eu/eli/reg/2016/399/oj (retrieved 2026-10-05)"
    }
  ],
  "sources": [
    "Regulation (EU) 2016/399 (Schengen Borders Code), Article 6(1): 90 days in any 180-day period, considering the 180-day period preceding each day of stay. https://eur-lex.europa.eu/eli/reg/2016/399/oj (retrieved 2026-10-05)",
    "European Commission, Migration and Home Affairs, Border crossing: the short-stay calculator; entry and exit days count as days of stay. https://home-affairs.ec.europa.eu/policies/schengen-borders-and-visa/border-crossing_en (retrieved 2026-10-05)"
  ],
  "related": [
    "days-between-dates",
    "date",
    "citizenship-date"
  ],
  "changelog": []
}
