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
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
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
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
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
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.
Related Reading
Money and Tax- RNOR Explained: Who Qualifies and How Long It Lasts
RNOR is not an automatic two-year exemption. Review the residence tests, preceding-year history, special visitor rules and income-scope limits before your return.
- India-US DTAA Tie-Breaker Rules
When both India and the US claim you as resident in the move year, Article 4(2) of the India-US DTAA sets the order. Walk the hierarchy with worked examples.
- DTAA explained: How NRIs actually claim relief from double taxation
A plain-English walk-through of how India's Double Taxation Avoidance Agreements work in practice — credit vs exemption method, Form 67, Rule 128, and what NRIs and returnees need to file.