TDS on interest calculator
On 50,000 of interest with 10% TDS, 5,000 is withheld and 45,000 net reaches your account. Enter the gross interest and the rate from your bank advice to see both figures, rounded to two decimals. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Interest amount
- 50,000
- Tds rate
- 10
- Rate decimal
- 0.1
- Tds amount
- 5,000
- Net interest
- 45,000
Tax deducted at source on interest income is the levy a bank, a company, or another payer withholds before crediting the remaining interest to the recipient. Depositors, bond holders, and private lenders need two figures from every coupon or credit: how much tax was taken, and how much net interest actually arrives in the account. This TDS on interest calculator accepts the gross interest amount and the applicable TDS rate written as a percentage, multiplies the interest by the rate over one hundred to produce the deducted tax, then subtracts that tax from the gross interest to produce the net interest. Zero percent is a valid exempt case and yields zero tax with net interest equal to the gross amount.
How tax deducted at source is formed from interest and a percent rate
Tax deducted at source on interest is a forward percent of a known gross interest amount, not a reverse peel of tax already baked into a credit slip and not a lookup of a statutory table. If the line is still the full interest the payer computed before withholding, the deducted tax is that interest multiplied by the TDS rate divided by one hundred, and the net interest the recipient receives is the gross interest minus that tax.
Write the rate the way a withholding certificate, a bank advice, or a finance dashboard writes it: ten means ten percent, which is a decimal fraction of zero point one. Fifty thousand of interest at ten percent therefore has a deducted tax of five thousand and a net interest of forty-five thousand. Zero percent is a real business case—below-threshold deposits, a declared exemption, or an instrument that is not withheld in that jurisdiction—and it yields a tax of zero with net interest equal to the gross amount.
One hundred percent is also a closed-interval edge: the entire interest is withheld and net interest is zero. Money fields are rounded half-up to two decimal places after the raw product is formed, which is the convention bank statements and withholding certificates use. The calculator does not look up statutory rates from a tax identification number, does not apply a threshold before withholding, and does not reverse a net credit back to gross interest.
It only applies the rate you already know to the interest you already know: deducted tax equals interest times TDS rate over one hundred, and net interest equals interest minus deducted tax.
When a TDS on interest check helps
People who type tds on interest already have a gross coupon and a known withholding percent. They want the deducted tax and the net credit, not a lookup of statutory slabs from a tax identification number and not a reverse extract from a net-of-tax advice. Banks, treasurers, and marketplace lenders store the gross interest line and need a reproducible withhold step that produces the tax deducted plus the net interest the recipient will see on the statement.
Bookkeepers reconciling Form-style certificates against deposit ledgers use the same identity to confirm that each gross coupon minus its rate matches the printed TDS and the printed net credit. Teachers of personal finance assign withholding worksheets and need an oracle that marks a rate of one hundred and ten percent as invalid instead of inventing a levy larger than the interest. Failed validation does not consume balance.
Pair a reverse-extract tool when you start from a net-of-tax credit; keep this surface focused on the forward pass from gross interest to deducted tax and net interest.
What you can do with it
Personal-finance homework on withholding
Students compute tax deducted at source on practice interest amounts and compare their hand-written levy and net credit against a deterministic result before submitting the worksheet.
FAQ
How do I compute TDS on interest and the net amount credited?
Send the gross interest amount and the TDS rate as a percent. Net interest equals interest minus deducted tax. Example: 50000 at 10% → TDS 5000, net 45000.
What happens if the TDS rate is outside 0 to 100 percent?
A rate below zero or above one hundred is not allowed; zero percent is valid and yields zero tax with net interest equal to the gross amount, and one hundred percent withholds the entire coupon.
Does this look up the statutory TDS rate for my country, PAN, or section?
No. You supply the rate. This calculator only applies a known percent to a gross interest amount; it does not resolve jurisdictions, identification numbers, thresholds, or reverse a net credit.
What does a 0% TDS rate mean?
It is the exempt case, for example a deposit below the threshold or a declared exemption. The tax deducted is zero and the net interest equals the gross interest.
Can I work back from the net interest I received to the gross amount?
No. The calculator only applies a known rate to a known gross interest figure. It does not turn a net credit back into gross, and it does not apply any threshold before withholding.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/fin/tds-interest \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"interest":50000,"tds_rate":10}'const res = await fetch("https://api.kit.forhosting.com/fin/tds-interest", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"interest": 50000,
"tds_rate": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/tds-interest",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"interest": 50000,
"tds_rate": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/tds-interest", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"interest":50000,"tds_rate":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"interest":50000,"tds_rate":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/tds-interest", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"interest": 50000,
"tds_rate": 10
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.tds_interest",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_abs | 1000000000000 |
max_tds_rate_percent | 100 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
A rate outside the closed interval from zero to one hundred percent is rejected as invalid_input rather than treated as a rebate or as a levy larger than the interest itself.
How tax deducted at source is formed from interest and a percent rate
A rate below zero or above one hundred is not a legal TDS input in this model; treating a negative rate as a rebate or a rate above one hundred as a levy larger than the interest would silently invert or over-withhold, so the engine rejects it with invalid_input.
Input contract, response shape, and validation
Example: fifty thousand of interest at ten percent yields deducted tax five thousand and net interest forty-five thousand. A one thousand two hundred thirty-four dollars and fifty-six cents coupon at seven point five percent exercises the half-up path: the raw product is ninety-two dollars and five thousand nine hundred twenty ten-thousandths, which rounds to ninety-two dollars and fifty-nine cents, so the published net interest is one thousand one hundred forty-one dollars and ninety-seven cents. POST a JSON body with two required finite numbers. interest is the gross interest income in currency units before withholding and must be greater than or equal to zero; aliases amount, interest_amount, gross_interest, and gross are accepted so bank extracts and coupon rows do not need a rename step. tds_rate is the applicable TDS rate as a percentage—use 10 for ten percent, not 0.10—and must be a finite number between zero and one hundred inclusive; aliases rate, percent, tax_rate, and tds_percent are accepted. Absolute interest must stay within one trillion so intermediate products remain finite in IEEE double precision on the Worker and in the browser. Missing fields, empty strings, non-finite values, a negative interest amount, a rate below zero or above one hundred percent, or an interest figure outside those limits fail with invalid_input naming the field and are not billed. On success the body echoes rounded interest and tds_rate, returns rate_decimal as the rate over one hundred, tds_amount as the half-up two-decimal levy, net_interest as the amount credited after withholding, and a formula string you can print next to the numbers. Prefer JSON numbers over currency-formatted strings; currency marks and thousands separators are not parsed. Successful items are billed at $0.002.
Where a TDS-on-interest API earns its keep
Keep requests small, pin the rounded tds_amount and net_interest in tests, and you get stable TDS-on-interest arithmetic for widgets, statement checkers, and edge workers without standing up a tax-engine subscription or a jurisdiction database of your own.
Integration use cases
Bank and deposit statement checks
Treasurers and depositors send a gross interest coupon and a known TDS percent, then display tds_amount and the net interest credited without reimplementing percentage withholding in every client.
Regression tests for payout libraries
QA pins known-good TDS cases plus a deliberate out-of-range rate rejection so payout code cannot silently over-withhold or invert tax into a rebate.
Technical questions
Should I enter 10 or 0.10 for the TDS rate?
Enter 10. The tds_rate field is a percentage (10 means 10%). The response also includes rate_decimal (0.1) for convenience.
What does the TDS on interest calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.