India 2026-27: full income tax return (old vs new regime), net salary, gross for net, employer cost
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Take-home pay of a job in India (with the situation options of net_salary) next to a job in the Netherlands (2026, optionally with the 8% holiday allowance and the 30% ruling), in euros, with the difference a year.
Gross yearly salary in the Netherlands, in euros, without holiday allowance
Gross yearly salary in India, in INR
Age; changes the result here (young-worker reliefs, senior slabs, surcharges). Default 35.
EPF contribution: none = Not in this calculation; ceiling = 12% on basic up to ₹15,000/month; full = 12% on full basic. Default none.
HRA received (₹ / year). Default 0.
Own NPS, 80CCD(1B) (₹ / year). Default 0.
Rent paid (₹ / year). Default 0.
Metro city (Delhi, Mumbai, Kolkata, Chennai) Default false.
Tax regime: new = New regime (default); old = Old regime; best = Whichever is lower. Default new.
80C investments besides EPF. PPF, ELSS, life insurance, tuition fees, principal on a home loan. (₹ / year). Default 0.
80D health insurance premium (₹ / year). Default 0.
Professional tax (₹2,500/year). Charged by states such as Maharashtra, Karnataka, West Bengal. Default false.
Basic salary. Basic pay as a share of gross; EPF, HRA and NPS limits work on it. (% of gross). Default 50.
Home loan interest, 24(b) (₹ / year). Default 0.
Exchange rate: 1 euro = this many INR, for the euro amounts. Default 90 (indicative).
Yearly bonus in INR. Default 0.
Employer NPS. Deductible in both regimes: up to 14% of basic (new), 10% (old). (% of basic). Default 0.
The Dutch job pays 8% holiday allowance on top. Default true.
The 30% ruling applies in the Netherlands. Default false.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http salary-in https://nltaxcalculator.nl/dutch-tax/api/mcp/in
Take-home pay of a job in India (with the situation options of net_salary) next to a job in the Netherlands (2026, optionally with the 8% holiday allowance and the 30% ruling), in euros, with the difference a year.
| Argument | Type | Description |
|---|---|---|
| age | integer | Age; changes the result here (young-worker reliefs, senior slabs, surcharges). Default 35. |
| epf | string | EPF contribution: none = Not in this calculation; ceiling = 12% on basic up to ₹15,000/month; full = 12% on full basic. Default none. |
| hra | number | HRA received (₹ / year). Default 0. |
| nps | number | Own NPS, 80CCD(1B) (₹ / year). Default 0. |
| rent | number | Rent paid (₹ / year). Default 0. |
| metro | boolean | Metro city (Delhi, Mumbai, Kolkata, Chennai) Default false. |
| regime | string | Tax regime: new = New regime (default); old = Old regime; best = Whichever is lower. Default new. |
| sec80c | number | 80C investments besides EPF. PPF, ELSS, life insurance, tuition fees, principal on a home loan. (₹ / year). Default 0. |
| sec80d | number | 80D health insurance premium (₹ / year). Default 0. |
| prof_tax | boolean | Professional tax (₹2,500/year). Charged by states such as Maharashtra, Karnataka, West Bengal. Default false. |
| basic_pct | number | Basic salary. Basic pay as a share of gross; EPF, HRA and NPS limits work on it. (% of gross). Default 50. |
| home_loan | number | Home loan interest, 24(b) (₹ / year). Default 0. |
| fx_per_eur | number | Exchange rate: 1 euro = this many INR, for the euro amounts. Default 90 (indicative). |
| bonus_annual | number | Yearly bonus in INR. Default 0. |
| employer_nps | number | Employer NPS. Deductible in both regimes: up to 14% of basic (new), 10% (old). (% of basic). Default 0. |
| nl_gross_annual* | number | Gross yearly salary in the Netherlands, in euros, without holiday allowance |
| home_gross_annual* | number | Gross yearly salary in India, in INR |
| nl_holiday_allowance | boolean | The Dutch job pays 8% holiday allowance on top. Default true. |
| nl_thirty_percent_ruling | boolean | The 30% ruling applies in the Netherlands. Default false. |
{
"type": "object",
"required": [
"home_gross_annual",
"nl_gross_annual"
],
"properties": {
"age": {
"type": "integer",
"maximum": 90,
"minimum": 16,
"description": "Age; changes the result here (young-worker reliefs, senior slabs, surcharges). Default 35."
},
"epf": {
"enum": [
"none",
"ceiling",
"full"
],
"type": "string",
"description": "EPF contribution: none = Not in this calculation; ceiling = 12% on basic up to ₹15,000/month; full = 12% on full basic. Default none."
},
"hra": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "HRA received (₹ / year). Default 0."
},
"nps": {
"type": "number",
"maximum": 50000,
"minimum": 0,
"description": "Own NPS, 80CCD(1B) (₹ / year). Default 0."
},
"rent": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "Rent paid (₹ / year). Default 0."
},
"metro": {
"type": "boolean",
"description": "Metro city (Delhi, Mumbai, Kolkata, Chennai) Default false."
},
"regime": {
"enum": [
"new",
"old",
"best"
],
"type": "string",
"description": "Tax regime: new = New regime (default); old = Old regime; best = Whichever is lower. Default new."
},
"sec80c": {
"type": "number",
"maximum": 150000,
"minimum": 0,
"description": "80C investments besides EPF. PPF, ELSS, life insurance, tuition fees, principal on a home loan. (₹ / year). Default 0."
},
"sec80d": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "80D health insurance premium (₹ / year). Default 0."
},
"prof_tax": {
"type": "boolean",
"description": "Professional tax (₹2,500/year). Charged by states such as Maharashtra, Karnataka, West Bengal. Default false."
},
"basic_pct": {
"type": "number",
"maximum": 100,
"minimum": 20,
"description": "Basic salary. Basic pay as a share of gross; EPF, HRA and NPS limits work on it. (% of gross). Default 50."
},
"home_loan": {
"type": "number",
"maximum": 200000,
"minimum": 0,
"description": "Home loan interest, 24(b) (₹ / year). Default 0."
},
"fx_per_eur": {
"type": "number",
"description": "Exchange rate: 1 euro = this many INR, for the euro amounts. Default 90 (indicative)."
},
"bonus_annual": {
"type": "number",
"description": "Yearly bonus in INR. Default 0."
},
"employer_nps": {
"type": "number",
"maximum": 14,
"minimum": 0,
"description": "Employer NPS. Deductible in both regimes: up to 14% of basic (new), 10% (old). (% of basic). Default 0."
},
"nl_gross_annual": {
"type": "number",
"description": "Gross yearly salary in the Netherlands, in euros, without holiday allowance"
},
"home_gross_annual": {
"type": "number",
"description": "Gross yearly salary in India, in INR"
},
"nl_holiday_allowance": {
"type": "boolean",
"description": "The Dutch job pays 8% holiday allowance on top. Default true."
},
"nl_thirty_percent_ruling": {
"type": "boolean",
"description": "The 30% ruling applies in the Netherlands. Default false."
}
},
"additionalProperties": false
}What a salary in India costs the employer (employer social contributions itemised), or the reverse: the gross salary a total budget allows. Give gross_annual or budget_annual.
| Argument | Type | Description |
|---|---|---|
| age | integer | Age; changes the result here (young-worker reliefs, senior slabs, surcharges). Default 35. |
| epf | string | EPF contribution: none = Not in this calculation; ceiling = 12% on basic up to ₹15,000/month; full = 12% on full basic. Default none. |
| hra | number | HRA received (₹ / year). Default 0. |
| nps | number | Own NPS, 80CCD(1B) (₹ / year). Default 0. |
| rent | number | Rent paid (₹ / year). Default 0. |
| metro | boolean | Metro city (Delhi, Mumbai, Kolkata, Chennai) Default false. |
| regime | string | Tax regime: new = New regime (default); old = Old regime; best = Whichever is lower. Default new. |
| sec80c | number | 80C investments besides EPF. PPF, ELSS, life insurance, tuition fees, principal on a home loan. (₹ / year). Default 0. |
The gross yearly salary in India that leaves a given take-home pay, with the same situation options as net_salary. Use it to set a salary ask or check an offer.
| Argument | Type | Description |
|---|---|---|
| age | integer | Age; changes the result here (young-worker reliefs, senior slabs, surcharges). Default 35. |
| epf | string | EPF contribution: none = Not in this calculation; ceiling = 12% on basic up to ₹15,000/month; full = 12% on full basic. Default none. |
| hra | number | HRA received (₹ / year). Default 0. |
| nps | number | Own NPS, 80CCD(1B) (₹ / year). Default 0. |
| rent | number | Rent paid (₹ / year). Default 0. |
| metro | boolean | Metro city (Delhi, Mumbai, Kolkata, Chennai) Default false. |
| period | string | Whether net_target is per year or per month. Default year. |
| regime | string | Tax regime: new = New regime (default); old = Old regime; best = Whichever is lower. Default new. |
| sec80c |
The complete India income tax computation for 2026-27, as on the return. Covers: New and old regime, always both, with the better one; Salary: HRA, LTA, perquisites, employer contributions above ₹7.5 lakh, professional tax; House property: self-occupied, let out, deemed let out, loss set-off and carry-forward; Other income incl. 80TTA/80TTB, family pension, winnings at 30%; Capital gains: equity, property (indexation option), debt funds, crypto, exemptions, loss set-off; All Chapter VI-A deductions with their limits; Rebate with marginal relief, surcharge with its caps and marginal relief, cess, TDS and the balance; Presumptive business and professional income (44AD/44ADA); and more. Returns the tax, the balance still to pay or to be refunded after taxes already paid, every option the law offers compared, and each step with its legal reference. All amounts in INR; everything is optional, give only what applies. What is not modelled is listed in the result.
| Argument | Type | Description |
|---|---|---|
| age | number | Age on 31 March 2027 |
| paid | object | Tax already paid |
| other | object | Other income |
| filing | object | Filing and advance tax timing (for interest and the late fee) |
| regime | string | Regime to report on; both are always computed and compared. Default new |
| salary | object |
Take-home pay for an employee in India from a gross yearly salary in INR, with 2026 rules: every tax and contribution itemised with its local name, the effective and marginal rate, employer cost and the step-by-step workings. Covers: New and old regime side by side, or the better of the two; 87A rebate with marginal relief, surcharge with marginal relief, 4% cess; Old regime: HRA, 80C, 80D, 80CCD(1B), home loan interest, senior slabs; EPF (statutory ceiling or full basic), employer NPS, professional tax.
| Argument | Type | Description |
|---|---|---|
| age | integer | Age; changes the result here (young-worker reliefs, senior slabs, surcharges). Default 35. |
| epf | string | EPF contribution: none = Not in this calculation; ceiling = 12% on basic up to ₹15,000/month; full = 12% on full basic. Default none. |
| hra | number | HRA received (₹ / year). Default 0. |
| nps | number | Own NPS, 80CCD(1B) (₹ / year). Default 0. |
| rent | number | Rent paid (₹ / year). Default 0. |
| metro | boolean | Metro city (Delhi, Mumbai, Kolkata, Chennai) Default false. |
| regime | string | Tax regime: new = New regime (default); old = Old regime; best = Whichever is lower. Default new. |
The India rules the calculators apply (2026), the options they take, what is not modelled, and the official sources. Call it before answering a question the other tools may not cover.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 9, 2026.
| sec80d |
| number |
| 80D health insurance premium (₹ / year). Default 0. |
| prof_tax | boolean | Professional tax (₹2,500/year). Charged by states such as Maharashtra, Karnataka, West Bengal. Default false. |
| basic_pct | number | Basic salary. Basic pay as a share of gross; EPF, HRA and NPS limits work on it. (% of gross). Default 50. |
| home_loan | number | Home loan interest, 24(b) (₹ / year). Default 0. |
| fx_per_eur | number | Exchange rate: 1 euro = this many INR, for the euro amounts. Default 90 (indicative). |
| bonus_annual | number | Yearly bonus in INR. Default 0. |
| employer_nps | number | Employer NPS. Deductible in both regimes: up to 14% of basic (new), 10% (old). (% of basic). Default 0. |
| gross_annual | number | Gross yearly salary in INR |
| budget_annual | number | Total yearly employer budget in INR, to find the gross salary it allows |
{
"type": "object",
"properties": {
"age": {
"type": "integer",
"maximum": 90,
"minimum": 16,
"description": "Age; changes the result here (young-worker reliefs, senior slabs, surcharges). Default 35."
},
"epf": {
"enum": [
"none",
"ceiling",
"full"
],
"type": "string",
"description": "EPF contribution: none = Not in this calculation; ceiling = 12% on basic up to ₹15,000/month; full = 12% on full basic. Default none."
},
"hra": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "HRA received (₹ / year). Default 0."
},
"nps": {
"type": "number",
"maximum": 50000,
"minimum": 0,
"description": "Own NPS, 80CCD(1B) (₹ / year). Default 0."
},
"rent": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "Rent paid (₹ / year). Default 0."
},
"metro": {
"type": "boolean",
"description": "Metro city (Delhi, Mumbai, Kolkata, Chennai) Default false."
},
"regime": {
"enum": [
"new",
"old",
"best"
],
"type": "string",
"description": "Tax regime: new = New regime (default); old = Old regime; best = Whichever is lower. Default new."
},
"sec80c": {
"type": "number",
"maximum": 150000,
"minimum": 0,
"description": "80C investments besides EPF. PPF, ELSS, life insurance, tuition fees, principal on a home loan. (₹ / year). Default 0."
},
"sec80d": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "80D health insurance premium (₹ / year). Default 0."
},
"prof_tax": {
"type": "boolean",
"description": "Professional tax (₹2,500/year). Charged by states such as Maharashtra, Karnataka, West Bengal. Default false."
},
"basic_pct": {
"type": "number",
"maximum": 100,
"minimum": 20,
"description": "Basic salary. Basic pay as a share of gross; EPF, HRA and NPS limits work on it. (% of gross). Default 50."
},
"home_loan": {
"type": "number",
"maximum": 200000,
"minimum": 0,
"description": "Home loan interest, 24(b) (₹ / year). Default 0."
},
"fx_per_eur": {
"type": "number",
"description": "Exchange rate: 1 euro = this many INR, for the euro amounts. Default 90 (indicative)."
},
"bonus_annual": {
"type": "number",
"description": "Yearly bonus in INR. Default 0."
},
"employer_nps": {
"type": "number",
"maximum": 14,
"minimum": 0,
"description": "Employer NPS. Deductible in both regimes: up to 14% of basic (new), 10% (old). (% of basic). Default 0."
},
"gross_annual": {
"type": "number",
"description": "Gross yearly salary in INR"
},
"budget_annual": {
"type": "number",
"description": "Total yearly employer budget in INR, to find the gross salary it allows"
}
},
"additionalProperties": false
}| number |
| 80C investments besides EPF. PPF, ELSS, life insurance, tuition fees, principal on a home loan. (₹ / year). Default 0. |
| sec80d | number | 80D health insurance premium (₹ / year). Default 0. |
| prof_tax | boolean | Professional tax (₹2,500/year). Charged by states such as Maharashtra, Karnataka, West Bengal. Default false. |
| basic_pct | number | Basic salary. Basic pay as a share of gross; EPF, HRA and NPS limits work on it. (% of gross). Default 50. |
| home_loan | number | Home loan interest, 24(b) (₹ / year). Default 0. |
| fx_per_eur | number | Exchange rate: 1 euro = this many INR, for the euro amounts. Default 90 (indicative). |
| net_target* | number | Take-home pay wanted, in INR |
| bonus_annual | number | Yearly bonus in INR. Default 0. |
| employer_nps | number | Employer NPS. Deductible in both regimes: up to 14% of basic (new), 10% (old). (% of basic). Default 0. |
{
"type": "object",
"required": [
"net_target"
],
"properties": {
"age": {
"type": "integer",
"maximum": 90,
"minimum": 16,
"description": "Age; changes the result here (young-worker reliefs, senior slabs, surcharges). Default 35."
},
"epf": {
"enum": [
"none",
"ceiling",
"full"
],
"type": "string",
"description": "EPF contribution: none = Not in this calculation; ceiling = 12% on basic up to ₹15,000/month; full = 12% on full basic. Default none."
},
"hra": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "HRA received (₹ / year). Default 0."
},
"nps": {
"type": "number",
"maximum": 50000,
"minimum": 0,
"description": "Own NPS, 80CCD(1B) (₹ / year). Default 0."
},
"rent": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "Rent paid (₹ / year). Default 0."
},
"metro": {
"type": "boolean",
"description": "Metro city (Delhi, Mumbai, Kolkata, Chennai) Default false."
},
"period": {
"enum": [
"year",
"month"
],
"type": "string",
"description": "Whether net_target is per year or per month. Default year."
},
"regime": {
"enum": [
"new",
"old",
"best"
],
"type": "string",
"description": "Tax regime: new = New regime (default); old = Old regime; best = Whichever is lower. Default new."
},
"sec80c": {
"type": "number",
"maximum": 150000,
"minimum": 0,
"description": "80C investments besides EPF. PPF, ELSS, life insurance, tuition fees, principal on a home loan. (₹ / year). Default 0."
},
"sec80d": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "80D health insurance premium (₹ / year). Default 0."
},
"prof_tax": {
"type": "boolean",
"description": "Professional tax (₹2,500/year). Charged by states such as Maharashtra, Karnataka, West Bengal. Default false."
},
"basic_pct": {
"type": "number",
"maximum": 100,
"minimum": 20,
"description": "Basic salary. Basic pay as a share of gross; EPF, HRA and NPS limits work on it. (% of gross). Default 50."
},
"home_loan": {
"type": "number",
"maximum": 200000,
"minimum": 0,
"description": "Home loan interest, 24(b) (₹ / year). Default 0."
},
"fx_per_eur": {
"type": "number",
"description": "Exchange rate: 1 euro = this many INR, for the euro amounts. Default 90 (indicative)."
},
"net_target": {
"type": "number",
"description": "Take-home pay wanted, in INR"
},
"bonus_annual": {
"type": "number",
"description": "Yearly bonus in INR. Default 0."
},
"employer_nps": {
"type": "number",
"maximum": 14,
"minimum": 0,
"description": "Employer NPS. Deductible in both regimes: up to 14% of basic (new), 10% (old). (% of basic). Default 0."
}
},
"additionalProperties": false
}| Salary |
| foreign | array | Income from abroad (taxed only for residents who are ordinarily resident), at most 20 |
| business | object | Business or profession (residents can use the presumptive schemes) |
| residency | string | Residential status: ROR (resident and ordinarily resident), RNOR (resident but not ordinarily resident) or NR (non-resident). Default ROR |
| deductions | object | Deductions (old regime, except employer NPS and Agniveer) |
| properties | array | Houses you own (at most 20) |
| capital_gains | object | Capital gains: sales of shares, funds, property, gold and crypto |
| residency_facts | object | Optional: work out the residential status from these facts instead of `residency` |
{
"type": "object",
"properties": {
"age": {
"type": "number",
"default": 35,
"maximum": 120,
"minimum": 0,
"description": "Age on 31 March 2027"
},
"paid": {
"type": "object",
"properties": {
"tcs": {
"type": "number",
"minimum": 0,
"description": "TCS, rupees for the tax year"
},
"tds_other": {
"type": "number",
"minimum": 0,
"description": "TDS on other income (AIS / Form 26AS), rupees for the tax year"
},
"tds_salary": {
"type": "number",
"minimum": 0,
"description": "TDS on salary (Form 16), rupees for the tax year"
},
"advance_tax": {
"type": "number",
"minimum": 0,
"description": "Advance tax, rupees for the tax year"
},
"self_assessment": {
"type": "number",
"minimum": 0,
"description": "Self-assessment tax, rupees for the tax year"
}
},
"description": "Tax already paid",
"additionalProperties": false
},
"other": {
"type": "object",
"properties": {
"gifts": {
"type": "number",
"minimum": 0,
"description": "Gifts from non-relatives, if over ₹50,000 in total, rupees for the tax year"
},
"other": {
"type": "number",
"minimum": 0,
"description": "Any other income, rupees for the tax year"
},
"winnings": {
"type": "number",
"minimum": 0,
"description": "Lottery, game show, betting or online game winnings, rupees for the tax year"
},
"dividends": {
"type": "number",
"minimum": 0,
"description": "Dividends, rupees for the tax year"
},
"family_pension": {
"type": "number",
"minimum": 0,
"description": "Family pension, rupees for the tax year"
},
"other_interest": {
"type": "number",
"minimum": 0,
"description": "Other interest (bonds, NSC, P2P), rupees for the tax year"
},
"deposit_interest": {
"type": "number",
"minimum": 0,
"description": "Fixed and recurring deposit interest, rupees for the tax year"
},
"savings_interest": {
"type": "number",
"minimum": 0,
"description": "Savings account interest, rupees for the tax year"
}
},
"description": "Other income",
"additionalProperties": false
},
"filing": {
"type": "object",
"properties": {
"filing_date": {
"type": "string",
"description": "Date the return is filed, YYYY-MM-DD. Default 2027-07-31 (the due date)"
},
"advance_by_due_date": {
"type": "array",
"items": {
"type": "number",
"minimum": 0,
"description": "Amount paid in that quarter"
},
"description": "Advance tax paid by 15 June, 15 Sept, 15 Dec 2026 and 15 March 2027: four amounts"
}
},
"description": "Filing and advance tax timing (for interest and the late fee)",
"additionalProperties": false
},
"regime": {
"enum": [
"new",
"old"
],
"type": "string",
"description": "Regime to report on; both are always computed and compared. Default new"
},
"salary": {
"type": "object",
"properties": {
"da": {
"type": "number",
"minimum": 0,
"description": "Dearness allowance, rupees for the tax year"
},
"hra": {
"type": "number",
"minimum": 0,
"description": "House rent allowance received, rupees for the tax year"
},
"basic": {
"type": "number",
"minimum": 0,
"description": "Basic salary, rupees for the tax year"
},
"bonus": {
"type": "number",
"minimum": 0,
"description": "Bonus, rupees for the tax year"
},
"rent_paid": {
"type": "number",
"minimum": 0,
"description": "Rent paid for your home, rupees for the tax year"
},
"lta_exempt": {
"type": "number",
"minimum": 0,
"description": "Leave travel allowance exempt for a journey this year (old regime), rupees for the tax year"
},
"metro_city": {
"type": "boolean",
"description": "Living in Delhi, Mumbai, Kolkata or Chennai (HRA 50% instead of 40%)"
},
"perquisites": {
"type": "number",
"minimum": 0,
"description": "Taxable value of perquisites (car, accommodation, ESOPs at exercise), rupees for the tax year"
},
"employer_epf": {
"type": "number",
"minimum": 0,
"description": "Employer EPF contribution, rupees for the tax year"
},
"employer_nps": {
"type": "number",
"minimum": 0,
"description": "Employer NPS contribution, rupees for the tax year"
},
"other_allowances": {
"type": "number",
"minimum": 0,
"description": "Other taxable allowances, rupees for the tax year"
},
"professional_tax": {
"type": "number",
"minimum": 0,
"description": "Professional tax paid to the state, rupees for the tax year"
},
"special_allowance": {
"type": "number",
"minimum": 0,
"description": "Special allowance, rupees for the tax year"
},
"epf_interest_taxable": {
"type": "number",
"minimum": 0,
"description": "Taxable interest on own EPF contributions above ₹2.5 lakh, rupees for the tax year"
},
"employer_superannuation": {
"type": "number",
"minimum": 0,
"description": "Employer superannuation contribution, rupees for the tax year"
}
},
"description": "Salary",
"additionalProperties": false
},
"foreign": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"amount"
],
"properties": {
"kind": {
"enum": [
"salary",
"interest",
"dividends",
"other"
],
"type": "string",
"description": "salary, interest, dividends or other"
},
"amount": {
"type": "number",
"minimum": 0,
"description": "Amount in rupees (SBI TT buying rate), rupees for the tax year"
},
"country": {
"type": "string",
"description": "Country"
},
"tax_paid": {
"type": "number",
"minimum": 0,
"description": "Tax paid on it abroad, in rupees, rupees for the tax year"
}
},
"description": "An item",
"additionalProperties": false
},
"description": "Income from abroad (taxed only for residents who are ordinarily resident), at most 20"
},
"business": {
"type": "object",
"properties": {
"scheme": {
"enum": [
"none",
"44AD",
"44ADA"
],
"type": "string",
"description": "none, 44AD (business: 6% of digital / 8% of cash turnover, up to ₹3 crore) or 44ADA (profession: 50% of receipts, up to ₹75 lakh)"
},
"cash_receipts": {
"type": "number",
"minimum": 0,
"description": "Cash turnover or receipts, rupees for the tax year"
},
"declared_profit": {
"type": "number",
"minimum": 0,
"description": "Profit from your books, if higher or when the scheme does not apply, rupees for the tax year"
},
"digital_receipts": {
"type": "number",
"minimum": 0,
"description": "Turnover or receipts through banks or digital modes, rupees for the tax year"
}
},
"description": "Business or profession (residents can use the presumptive schemes)",
"additionalProperties": false
},
"residency": {
"enum": [
"ROR",
"RNOR",
"NR"
],
"type": "string",
"description": "Residential status: ROR (resident and ordinarily resident), RNOR (resident but not ordinarily resident) or NR (non-resident). Default ROR"
},
"deductions": {
"type": "object",
"properties": {
"own_nps": {
"type": "number",
"minimum": 0,
"description": "Your own NPS contribution, rupees for the tax year"
},
"agniveer": {
"type": "number",
"minimum": 0,
"description": "Agniveer Corpus Fund contribution, rupees for the tax year"
},
"donations": {
"type": "array",
"items": {
"type": "object",
"required": [
"amount"
],
"properties": {
"amount": {
"type": "number",
"minimum": 0,
"description": "Amount, rupees for the tax year"
},
"limited": {
"type": "boolean",
"description": "Subject to the 10% of income limit"
},
"percent": {
"enum": [
"100",
"50"
],
"type": "string",
"description": "Deductible share: 100 or 50 percent"
}
},
"description": "A donation",
"additionalProperties": false
},
"description": "Donations"
},
"health_self": {
"type": "number",
"minimum": 0,
"description": "Health insurance premium for you, spouse, children, rupees for the tax year"
},
"employee_epf": {
"type": "number",
"minimum": 0,
"description": "Your own EPF contribution, rupees for the tax year"
},
"medical_80ddb": {
"type": "number",
"minimum": 0,
"description": "Treatment of specified illnesses, rupees for the tax year"
},
"health_parents": {
"type": "number",
"minimum": 0,
"description": "Health insurance premium for parents, rupees for the tax year"
},
"parents_senior": {
"type": "boolean",
"description": "Parents are 60 or older"
},
"disability_self": {
"enum": [
"none",
"normal",
"severe"
],
"type": "string",
"description": "Own disability"
},
"investments_80c": {
"type": "number",
"minimum": 0,
"description": "PPF, ELSS, life insurance, tuition fees, SSY, 5-year FD, NSC, rupees for the tax year"
},
"preventive_checkup": {
"type": "number",
"minimum": 0,
"description": "Preventive health check-ups, rupees for the tax year"
},
"disability_dependant": {
"enum": [
"none",
"normal",
"severe"
],
"type": "string",
"description": "Disabled dependant"
},
"education_loan_interest": {
"type": "number",
"minimum": 0,
"description": "Education loan interest, rupees for the tax year"
}
},
"description": "Deductions (old regime, except employer NPS and Agniveer)",
"additionalProperties": false
},
"properties": {
"type": "array",
"items": {
"type": "object",
"required": [
"use"
],
"properties": {
"use": {
"enum": [
"self",
"let",
"vacant"
],
"type": "string",
"description": "self (you live there), let (rented out) or vacant (a third house, taxed as if rented)"
},
"rent": {
"type": "number",
"minimum": 0,
"description": "Rent received, or the expected rent of a vacant house, rupees for the tax year"
},
"label": {
"type": "string",
"description": "Name, e.g. \"Flat in Pune\""
},
"share": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Your ownership share, 0 to 1. Default 1"
},
"interest": {
"type": "number",
"minimum": 0,
"description": "Interest on the home loan, incl. 1/5 of pre-construction interest, rupees for the tax year"
},
"municipal_tax": {
"type": "number",
"minimum": 0,
"description": "Municipal taxes paid, rupees for the tax year"
},
"principal_repaid": {
"type": "number",
"minimum": 0,
"description": "Home loan principal repaid, rupees for the tax year"
},
"lower_interest_cap": {
"type": "boolean",
"description": "Self-occupied loan for repairs, or construction took over 5 years (interest cap ₹30,000)"
}
},
"description": "A house",
"additionalProperties": false
},
"description": "Houses you own (at most 20)"
},
"capital_gains": {
"type": "object",
"properties": {
"sales": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"bought",
"sold",
"cost",
"sale_price"
],
"properties": {
"cost": {
"type": "number",
"minimum": 0,
"description": "Cost, rupees for the tax year"
},
"sold": {
"type": "string",
"description": "Date sold, YYYY-MM-DD"
},
"type": {
"enum": [
"listedEquity",
"otherListed",
"property",
"unlisted",
"debtFund",
"vda"
],
"type": "string",
"description": "listedEquity (listed shares, equity funds), otherListed (listed bonds, gold ETFs), property (land, buildings), unlisted (unlisted shares, gold, jewellery), debtFund (debt funds/market-linked debentures bought from April 2023), vda (crypto)"
},
"label": {
"type": "string",
"description": "What was sold"
},
"bought": {
"type": "string",
"description": "Date bought, YYYY-MM-DD"
},
"expenses": {
"type": "number",
"minimum": 0,
"description": "Brokerage, legal fees and other selling expenses, rupees for the tax year"
},
"fmv_2001": {
"type": "number",
"minimum": 0,
"description": "Bought before 1 April 2001: value on 1 April 2001, rupees for the tax year"
},
"fmv_2018": {
"type": "number",
"minimum": 0,
"description": "Listed equity bought before 1 Feb 2018: value on 31 Jan 2018, rupees for the tax year"
},
"bonds_54ec": {
"type": "number",
"minimum": 0,
"description": "Long-term gain on land or building invested in specified bonds, rupees for the tax year"
},
"sale_price": {
"type": "number",
"minimum": 0,
"description": "Sale price, rupees for the tax year"
},
"improved_on": {
"type": "string",
"description": "Date of the improvement, YYYY-MM-DD"
},
"improvement": {
"type": "number",
"minimum": 0,
"description": "Cost of improvement (property), rupees for the tax year"
},
"residential": {
"type": "boolean",
"description": "Property is a residential house"
},
"reinvest_house": {
"type": "number",
"minimum": 0,
"description": "Long-term gain reinvested in a residential house, rupees for the tax year"
}
},
"description": "A sale",
"additionalProperties": false
},
"description": "Each sale (at most 50)"
},
"brought_forward_ltcl": {
"type": "number",
"minimum": 0,
"description": "Long-term capital losses brought forward, rupees for the tax year"
},
"brought_forward_stcl": {
"type": "number",
"minimum": 0,
"description": "Short-term capital losses brought forward, rupees for the tax year"
}
},
"description": "Capital gains: sales of shares, funds, property, gold and crypto",
"additionalProperties": false
},
"residency_facts": {
"type": "object",
"properties": {
"days_in_india": {
"type": "number",
"maximum": 366,
"minimum": 0,
"description": "Days in India this tax year"
},
"indian_income": {
"type": "number",
"minimum": 0,
"description": "Income from Indian sources, rupees for the tax year"
},
"citizen_or_pio": {
"type": "boolean",
"description": "Indian citizen or person of Indian origin"
},
"left_for_employment": {
"type": "boolean",
"description": "Left India this year for a job abroad"
},
"days_preceding_4_years": {
"type": "number",
"minimum": 0,
"description": "Days in India in the 4 preceding tax years together"
},
"days_preceding_7_years": {
"type": "number",
"minimum": 0,
"description": "Days in India in the 7 preceding tax years together"
},
"liable_to_tax_elsewhere": {
"type": "boolean",
"description": "Liable to tax in another country by residence or domicile"
},
"non_resident_years_of_10": {
"type": "number",
"maximum": 10,
"minimum": 0,
"description": "Of the 10 preceding years, how many as a non-resident"
}
},
"description": "Optional: work out the residential status from these facts instead of `residency`",
"additionalProperties": false
}
},
"description": "An individual's income tax return for India, tax year 2026-27 (1 April 2026 – 31 March 2027). Every amount is in rupees for the whole year; leave out what does not apply.",
"additionalProperties": false
}| sec80c | number | 80C investments besides EPF. PPF, ELSS, life insurance, tuition fees, principal on a home loan. (₹ / year). Default 0. |
| sec80d | number | 80D health insurance premium (₹ / year). Default 0. |
| prof_tax | boolean | Professional tax (₹2,500/year). Charged by states such as Maharashtra, Karnataka, West Bengal. Default false. |
| basic_pct | number | Basic salary. Basic pay as a share of gross; EPF, HRA and NPS limits work on it. (% of gross). Default 50. |
| home_loan | number | Home loan interest, 24(b) (₹ / year). Default 0. |
| fx_per_eur | number | Exchange rate: 1 euro = this many INR, for the euro amounts. Default 90 (indicative). |
| bonus_annual | number | Yearly bonus in INR. Default 0. |
| employer_nps | number | Employer NPS. Deductible in both regimes: up to 14% of basic (new), 10% (old). (% of basic). Default 0. |
| gross_annual* | number | Gross yearly salary in INR, without bonus |
{
"type": "object",
"required": [
"gross_annual"
],
"properties": {
"age": {
"type": "integer",
"maximum": 90,
"minimum": 16,
"description": "Age; changes the result here (young-worker reliefs, senior slabs, surcharges). Default 35."
},
"epf": {
"enum": [
"none",
"ceiling",
"full"
],
"type": "string",
"description": "EPF contribution: none = Not in this calculation; ceiling = 12% on basic up to ₹15,000/month; full = 12% on full basic. Default none."
},
"hra": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "HRA received (₹ / year). Default 0."
},
"nps": {
"type": "number",
"maximum": 50000,
"minimum": 0,
"description": "Own NPS, 80CCD(1B) (₹ / year). Default 0."
},
"rent": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "Rent paid (₹ / year). Default 0."
},
"metro": {
"type": "boolean",
"description": "Metro city (Delhi, Mumbai, Kolkata, Chennai) Default false."
},
"regime": {
"enum": [
"new",
"old",
"best"
],
"type": "string",
"description": "Tax regime: new = New regime (default); old = Old regime; best = Whichever is lower. Default new."
},
"sec80c": {
"type": "number",
"maximum": 150000,
"minimum": 0,
"description": "80C investments besides EPF. PPF, ELSS, life insurance, tuition fees, principal on a home loan. (₹ / year). Default 0."
},
"sec80d": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "80D health insurance premium (₹ / year). Default 0."
},
"prof_tax": {
"type": "boolean",
"description": "Professional tax (₹2,500/year). Charged by states such as Maharashtra, Karnataka, West Bengal. Default false."
},
"basic_pct": {
"type": "number",
"maximum": 100,
"minimum": 20,
"description": "Basic salary. Basic pay as a share of gross; EPF, HRA and NPS limits work on it. (% of gross). Default 50."
},
"home_loan": {
"type": "number",
"maximum": 200000,
"minimum": 0,
"description": "Home loan interest, 24(b) (₹ / year). Default 0."
},
"fx_per_eur": {
"type": "number",
"description": "Exchange rate: 1 euro = this many INR, for the euro amounts. Default 90 (indicative)."
},
"bonus_annual": {
"type": "number",
"description": "Yearly bonus in INR. Default 0."
},
"employer_nps": {
"type": "number",
"maximum": 14,
"minimum": 0,
"description": "Employer NPS. Deductible in both regimes: up to 14% of basic (new), 10% (old). (% of basic). Default 0."
},
"gross_annual": {
"type": "number",
"description": "Gross yearly salary in INR, without bonus"
}
},
"additionalProperties": false
}