Developers

A free API for Indian tax calculations

Income tax, capital gains, HRA, TDS on salary, gratuity, EMI, GST and presumptive income as plain JSON. No sign-up, no key — just POST the figures and get the result with its full working.

Pure computation

Every figure comes from the Finance Act rate tables encoded in the engine. Nothing is fetched from government systems and nothing you send is stored.

The working, every time

Each response carries a trace: labelled steps with amounts and section references, so a result can be checked line by line.

Fair-use limits

60 requests a minute and 2,000 a day per IP address, reported in X-RateLimit-* headers. CORS is open for browser use.

Versioned rules

Responses include rulesVersion and a verified flag; a provisional year (such as a copy awaiting the next Finance Act) is marked false.

Quick start

One request

Base URL: /api/public/calc. All calculators are POST with a JSON body and return 200 with an envelope of ok, engine, result and terms.

Request

curl -s -X POST https://ca.lsync.io/api/public/calc/income-tax \
  -H 'Content-Type: application/json' \
  -d '{
    "fy": "2025-26",
    "age": 30,
    "regime": "both",
    "income": { "salary": 1800000, "savingsInterest": 12000 },
    "deductions": { "sec80C": 150000, "sec80D": { "self": 25000 } },
    "hra": { "basic": 900000, "hraReceived": 300000, "rentPaid": 240000, "metro": true }
  }'

Response (abridged)

{
  "ok": true,
  "engine": "1.0.0",
  "result": {
    "fy": "2025-26",
    "ay": "2026-27",
    "rulesVersion": "2025-26.1",
    "verified": true,
    "new": { "totalIncome": 1725000, "totalTax": 150800, "trace": [ ... ] },
    "old": { "totalIncome": 1211000, "totalTax": ..., "trace": [ ... ] },
    "recommended": "new",
    "savings": ...
  },
  "terms": "Estimates computed from published Finance Act rate tables, not tax advice. ..."
}

From a browser or Node

const res = await fetch("https://ca.lsync.io/api/public/calc/gst", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ amount: 1180, rate: 18, mode: "inclusive", supply: "intra" }),
})
const { result } = await res.json()
// result.taxableValue === 1000, result.cgst === 90, result.sgst === 90
// result.amountInWords === "Rupees One Thousand One Hundred Eighty Only"
Endpoints

What you can call

Field names and examples for each request are in the OpenAPI document.

MethodPathPurpose
POST/api/public/calc/income-taxIncome tax under the new and old regimes, with the recommended regime
POST/api/public/calc/capital-gainsGain and tax on one asset: equity, mutual funds, property, gold, bonds
POST/api/public/calc/hraHouse-rent-allowance exemption under Sec 10(13A)
POST/api/public/calc/tds-salaryMonthly TDS an employer should deduct under Sec 192
POST/api/public/calc/gratuityGratuity per the 1972 Act and the Sec 10(10) exemption
POST/api/public/calc/emiLoan EMI with a yearly or monthly amortisation schedule
POST/api/public/calc/gstGST split — inclusive or exclusive, CGST/SGST or IGST, amount in words
POST/api/public/calc/presumptiveDeemed income under Sec 44AD / 44ADA with the turnover tests
GET/api/public/calc/versionEngine version and the rate tables with their verification status
GET/api/public/calc/openapi.jsonOpenAPI 3.0 description of this API
Rate tables

Years covered

  • FY 2024-25AY 2025-262024-25.1verified

    Finance (No. 2) Act 2024; Income-tax Act 1961 as amended

    Rebate u/s 87A against STCG (111A) under the new regime was disputed for this year; this table allows it, matching the position taken in the revised ITR utilities.

  • FY 2025-26AY 2026-272025-26.1verified

    Finance Act 2025; Income-tax Act 1961 as amended

  • FY 2026-27AY 2027-282026-27.0-draftprovisional

    Copied from FY 2025-26 pending verification

    Verify against Finance Act 2026 / Income-tax Act 2025 before relying on this year. Section references below are to the 1961 Act; the 2025 Act renumbers them. CII for 2026-27 not yet encoded — indexation falls back to the latest index.

Limits & errors

Good to know

  • Rate limit. 60 requests a minute and 2,000 a day per IP. Over the limit you get 429 with a Retry-After header.
  • Validation. Bad input returns 400 with { ok: false, error, issues }.
  • Amounts are rupees as numbers; dates are YYYY-MM-DD; the financial year is written 2025-26.
  • Privacy. Requests are counted, not stored. We log the endpoint and status code only.

Terms

The calculators produce estimates from published rate tables. They are not tax advice and do not account for every provision of the Act. Verify results with a qualified professional before relying on them. The API is offered as-is and may change; the OpenAPI document is the reference.

The same engine runs inside the practice suite

Firms on LSync Practice Suite get these calculators with save-to-client, alongside filing trackers, registry lookups and billing. Register your firm at hub.lsync.io/register-firm.