Skip to main content
Open the calculator

How the Window Planner is tested

5 of 5 cases match; 0 warnings

These reference cases run through the same functions as the calculator when this page is built. A mismatch fails the build. Passing examples are not a legal review of every possible situation.

Last verified against the linked primary sources: 2026-09-11.

What is not modelled

The planner compares monthly arrival dates, not tax bills. NR and RNOR are distinct statuses, not blanket foreign-income exemptions. It assumes zero India days in gaps, continuous India residence after arrival, and unchanged citizenship, income and foreign-tax-liability facts. Unseen earlier years are assumed non-resident. It does not determine treaty residence or FEMA account status.

Ten non-resident years, landing 1 April

Income-tax Act 2025 s.6, including s.6(13); historical years use the 1961 Act s.6 and its visitor exception.

Reference inputs
{
  "pastDays": [
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0
  ],
  "pastEndYear": 2026,
  "arrivalFyEndYear": 2027,
  "isReturningCitizenOrPIO": true,
  "isIndianCitizen": true,
  "isPIO": false,
  "nonForeignSourceIncomeINR": 0,
  "liableToTaxAbroad": "yes",
  "candidateArrival": "2026-04-01"
}

Expected

{
  "days": 365,
  "statuses": [
    "RNOR",
    "RNOR",
    "ROR",
    "ROR",
    "ROR"
  ],
  "rnorYears": 2,
  "nrOrRnorYears": 2,
  "lastRnorDay": "2028-03-31",
  "warnings": []
}

Actual

{
  "days": 365,
  "statuses": [
    "RNOR",
    "RNOR",
    "ROR",
    "ROR",
    "ROR"
  ],
  "rnorYears": 2,
  "nrOrRnorYears": 2,
  "lastRnorDay": "2028-03-31",
  "warnings": []
}

Same history, landing 1 October

Income-tax Act 2025 s.6, including s.6(13); historical years use the 1961 Act s.6 and its visitor exception.

Reference inputs
{
  "pastDays": [
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0
  ],
  "pastEndYear": 2026,
  "arrivalFyEndYear": 2027,
  "isReturningCitizenOrPIO": true,
  "isIndianCitizen": true,
  "isPIO": false,
  "nonForeignSourceIncomeINR": 0,
  "liableToTaxAbroad": "yes",
  "candidateArrival": "2026-10-01"
}

Expected

{
  "days": 182,
  "statuses": [
    "RNOR",
    "RNOR",
    "RNOR",
    "ROR",
    "ROR"
  ],
  "rnorYears": 3,
  "nrOrRnorYears": 3,
  "lastRnorDay": "2029-03-31",
  "warnings": []
}

Actual

{
  "days": 182,
  "statuses": [
    "RNOR",
    "RNOR",
    "RNOR",
    "ROR",
    "ROR"
  ],
  "rnorYears": 3,
  "nrOrRnorYears": 3,
  "lastRnorDay": "2029-03-31",
  "warnings": []
}

Same history, landing 1 February

Income-tax Act 2025 s.6, including s.6(13); historical years use the 1961 Act s.6 and its visitor exception.

Reference inputs
{
  "pastDays": [
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0
  ],
  "pastEndYear": 2026,
  "arrivalFyEndYear": 2027,
  "isReturningCitizenOrPIO": true,
  "isIndianCitizen": true,
  "isPIO": false,
  "nonForeignSourceIncomeINR": 0,
  "liableToTaxAbroad": "yes",
  "candidateArrival": "2027-02-01"
}

Expected

{
  "days": 59,
  "statuses": [
    "NR",
    "RNOR",
    "RNOR",
    "ROR",
    "ROR"
  ],
  "rnorYears": 2,
  "nrOrRnorYears": 3,
  "lastRnorDay": "2029-03-31",
  "warnings": []
}

Actual

{
  "days": 59,
  "statuses": [
    "NR",
    "RNOR",
    "RNOR",
    "ROR",
    "ROR"
  ],
  "rnorYears": 2,
  "nrOrRnorYears": 3,
  "lastRnorDay": "2029-03-31",
  "warnings": []
}

Seven visiting years, 840 days in the preceding seven years

Income-tax Act 2025 s.6, including s.6(13); historical years use the 1961 Act s.6 and its visitor exception.

Reference inputs
{
  "pastDays": [
    365,
    365,
    365,
    120,
    120,
    120,
    120,
    120,
    120,
    120
  ],
  "pastEndYear": 2026,
  "arrivalFyEndYear": 2027,
  "isReturningCitizenOrPIO": true,
  "isIndianCitizen": true,
  "isPIO": false,
  "nonForeignSourceIncomeINR": 0,
  "liableToTaxAbroad": "yes",
  "candidateArrival": "2026-10-01"
}

Expected

{
  "days": 182,
  "statuses": [
    "ROR",
    "ROR",
    "ROR",
    "ROR",
    "ROR"
  ],
  "rnorYears": 0,
  "nrOrRnorYears": 0,
  "lastRnorDay": null,
  "warnings": []
}

Actual

{
  "days": 182,
  "statuses": [
    "ROR",
    "ROR",
    "ROR",
    "ROR",
    "ROR"
  ],
  "rnorYears": 0,
  "nrOrRnorYears": 0,
  "lastRnorDay": null,
  "warnings": []
}

High-income visitor history includes resident years from 2020-21

Income-tax Act 2025 s.6, including s.6(13); historical years use the 1961 Act s.6 and its visitor exception.

Reference inputs
{
  "pastDays": [
    120,
    120,
    120,
    120,
    120,
    120,
    120,
    120,
    120,
    120
  ],
  "pastEndYear": 2026,
  "arrivalFyEndYear": 2027,
  "isReturningCitizenOrPIO": true,
  "isIndianCitizen": true,
  "isPIO": false,
  "nonForeignSourceIncomeINR": 2000000,
  "liableToTaxAbroad": "yes",
  "candidateArrival": "2026-10-01"
}

Expected

{
  "days": 182,
  "statuses": [
    "ROR",
    "ROR",
    "ROR",
    "ROR",
    "ROR"
  ],
  "rnorYears": 0,
  "nrOrRnorYears": 0,
  "lastRnorDay": null,
  "warnings": []
}

Actual

{
  "days": 182,
  "statuses": [
    "ROR",
    "ROR",
    "ROR",
    "ROR",
    "ROR"
  ],
  "rnorYears": 0,
  "nrOrRnorYears": 0,
  "lastRnorDay": null,
  "warnings": []
}

Was this correct?

Educational only. RebaseNest is not a SEBI-registered investment adviser and does not give tax, legal or investment advice. Rules change; confirm your position with a qualified chartered accountant before acting. Full disclaimer.

Money and Tax
RNOR Status Calculator