Simplified take-home pay estimate
From 5000 gross with 20% tax, 5% retirement and 3% insurance, 1400 is withheld and 3600 reaches your bank. Enter the flat rates you already know and see each deduction as an amount. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Gross pay
- 5,000
- Tax pct
- 20
- Retirement pct
- 5
- Insurance pct
- 3
- Total withholding pct
- 28
- Tax amount
- 1,000
- Retirement amount
- 250
- Insurance amount
- 150
Gross pay is what your offer letter or timesheet shows before money leaves for tax, retirement contributions, and insurance premiums. Net take-home is what actually lands in the bank. Job seekers comparing offers, freelancers setting a safe draw, and product teams building budget widgets all need a fast, transparent estimate that does not require a full payroll engine or progressive tax tables. This simplified take-home pay estimate accepts a gross amount plus three flat percentages—tax, retirement, and insurance—multiplies each rate by gross, subtracts the total withheld, and returns the net figure with a clear line breakdown.
What simplified take-home means and how the math works
A full payroll system models progressive tax brackets, pre-tax versus post-tax deductions, employer matching, social contributions that cap at annual thresholds, and jurisdiction-specific credits. That depth is essential for compliance but is overkill when someone only wants a ballpark net from a handful of flat rates they already know—for example twenty percent combined tax, five percent into a retirement plan, and three percent for health insurance. Zero is allowed for any percentage when that bucket does not apply; zero gross is allowed and yields zero net.
Negative values are rejected. The design deliberately omits progressive tables so the contract stays a single deterministic function of four numbers—ideal for education, quick offer comparisons, and SEO landings that promise a transparent calculator rather than a tax-authority substitute.
When a quick net pay estimate helps
Budgeting apps and freelancing dashboards often already store a planned tax percent, a retirement percent, and a benefits percent; posting those four numbers once fills a paycheck card with line items and a retained ratio for charts. Educators teaching personal finance can seed classroom examples that show how raising retirement contributions lowers net immediately even when long-term wealth rises, without standing up a payroll vendor.
Content teams can illustrate the hard fail when rates sum past one hundred percent so readers understand that invalid combinations are rejected rather than silently clamped. Failed validation does not consume balance. Keep percentages non-negative and under a combined one hundred, pin the rounded money fields in tests, and you get reproducible simplified take-home figures for widgets, LMS modules, and edge workers without a full tax stack of your own.
What you can do with it
Offer and salary comparison pages
Let visitors enter gross pay plus flat tax, retirement, and insurance rates to see estimated net take-home side by side across job offers.
Budgeting apps and paycheck cards
Turn stored gross and planned withholding percents into line amounts, total withheld, and net for a period summary without a payroll engine.
Personal-finance education
Show how changing retirement or insurance percentages moves net pay with a deterministic oracle for worksheets and LMS checks.
FAQ
How is simplified take-home pay calculated?
The three percents must total 100 or less.
Does this use progressive tax brackets?
No. All three rates are flat percentages of gross.
What if my three rates add up to more than 100%?
The estimate is refused instead of showing a negative paycheck. Tax, retirement and insurance together cannot take more than the whole gross amount, so check the three rates and enter them again.
Can I set a deduction to zero?
Yes. Use zero for any bucket that does not apply to you, such as insurance you do not pay through work. A gross of zero is also accepted and gives a net of zero.
Why does a bigger retirement contribution lower my take-home pay?
Because every percent is taken from gross before the money reaches you. In the example, 5% for retirement removes 250 from the paycheck, even though your long-term savings grow.
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/take-home-pay-estimate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"gross_pay":5000,"tax_pct":20,"retirement_pct":5,"insurance_pct":3}'const res = await fetch("https://api.kit.forhosting.com/fin/take-home-pay-estimate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"gross_pay": 5000,
"tax_pct": 20,
"retirement_pct": 5,
"insurance_pct": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/take-home-pay-estimate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"gross_pay": 5000,
"tax_pct": 20,
"retirement_pct": 5,
"insurance_pct": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/take-home-pay-estimate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"gross_pay":5000,"tax_pct":20,"retirement_pct":5,"insurance_pct":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"gross_pay":5000,"tax_pct":20,"retirement_pct":5,"insurance_pct":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/take-home-pay-estimate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"gross_pay": 5000,
"tax_pct": 20,
"retirement_pct": 5,
"insurance_pct": 3
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.take_home_pay_estimate",
"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.
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
If the three percentages add up to more than one hundred percent the request fails with invalid_input instead of inventing a negative paycheck. The same pure arithmetic powers the free browser tool and the paid API path, so landing-page previews and production automations never disagree on a two-decimal net.
What simplified take-home means and how the math works
This capability implements exactly that simplified model: treat each input as a percent of gross, convert each percent into a currency amount, sum the amounts into total_withheld, and set net_pay equal to gross_pay minus total_withheld. Equivalently, net_pay equals gross times one minus total_withholding_pct over one hundred. The response echoes every input, reports total_withholding_pct, the three line amounts, total_withheld, net_pay, and a take_home_ratio between zero and one so charts can show the retained share without dividing again.
Input contract, response shape, and error behaviour
Example: gross five thousand, tax twenty, retirement five, insurance three yields total withholding twenty-eight percent, tax one thousand, retirement two hundred fifty, insurance one hundred fifty, total withheld one thousand four hundred, and net three thousand six hundred. Pair the breakdown with your own progressive tax engine if you need legal withholding; start here when the product question is a transparent flat-rate estimate for UI demos, coaching worksheets, or offer-side calculators. POST a JSON body with four required finite numbers: gross_pay (currency units for the pay period, greater than or equal to zero; aliases gross, salary, pay), tax_pct (flat tax percent such as twenty for twenty percent; aliases tax, tax_percent, tax_rate), retirement_pct (retirement contribution percent; aliases retirement, retirement_percent, pension_pct), and insurance_pct (insurance withholding percent; aliases insurance, insurance_percent, health_pct). Each field may arrive as a JSON number or as a numeric string. Missing fields, empty strings, non-finite values, and negatives fail with invalid_input naming the field and are not billed. On success the body includes gross_pay, tax_pct, retirement_pct, insurance_pct, total_withholding_pct, tax_amount, retirement_amount, insurance_amount, total_withheld, net_pay, take_home_ratio, and a short formula string restating the model.
Where a take-home pay estimate API earns its keep
HR onboarding tools and offer-letter generators can call the same pure module from the browser for free previews and from the API when storing scenarios, guaranteeing that the net a candidate saw on a landing page matches the net stored after they save a scenario.
Technical questions
What if tax, retirement, and insurance add up to more than 100%?
The task fails with invalid_input. Withholdings that exceed gross cannot produce a sensible paycheck, so the request is rejected and not billed.
Can I set one of the percentages to zero?
Yes. Zero is valid for tax_pct, retirement_pct, or insurance_pct when that withholding does not apply for the scenario you are modelling.
What does the take-home pay estimate cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.