Take-home pay calculator
This take-home pay calculator estimates the amount left from one paycheck after federal, state, and payroll tax rates, along with fixed pre-tax and post-tax deductions.
Run — free
Enter the rates that apply to your situation rather than a filing status or location. The result separates every part of the calculation: gross pay, taxable pay, each estimated tax, total taxes, deductions, and final net pay. It is a transparent planning estimate, not a tax return or payroll system, and it does not infer brackets, credits, annual wage limits, or local taxes.
Start with the figures from one paycheck
Use gross pay for a single pay period, not annual salary, unless you deliberately want an annualized estimate. Then provide federal, state, and payroll tax rates as percentages. For example, enter 12 for a twelve-percent federal estimate, not 0.12. The calculator does not look up a rate from your location, filing status, allowances, or income bracket, so the quality of the estimate depends on the rates you supply. A recent pay stub is often the most practical source: divide each withholding amount by the relevant taxable pay and multiply by one hundred. If you are comparing a prospective job offer, use cautious estimated rates and test more than one scenario. All monetary inputs must use the same currency, although the calculator does not attach a currency symbol. Because this tool works on one paycheck at a time, it supports weekly, biweekly, semimonthly, monthly, bonus, or irregular pay as long as gross pay and fixed deductions refer to the same period.
Understand the order of deductions and taxes
The calculation first subtracts fixed pre-tax deductions from gross pay. The remaining amount is labeled taxable pay. Federal, state, and payroll tax estimates are calculated independently by multiplying that taxable pay by each supplied percentage. Their sum is total taxes. Finally, the calculator subtracts total taxes and fixed post-tax deductions to produce take-home pay. This consistent order makes the result easy to audit, but actual payroll rules can use different taxable wage bases for different taxes. A health benefit may reduce federal taxable wages without reducing payroll taxable wages, for example, and Social Security can have an annual wage ceiling. This estimator intentionally uses one shared taxable-pay basis because the requested inputs are rates and fixed deductions, not a complete jurisdictional payroll model. Currency results are rounded to two decimal places for display after calculations use unrounded values. The response includes every intermediate amount, allowing a spreadsheet, payroll review, or automated workflow to explain exactly how the estimate was formed.
Use the estimate responsibly
Treat the result as a budgeting and comparison tool. It can help you estimate the cash available from a raise, compare benefit contribution choices, or check whether a payroll projection is broadly reasonable. It cannot tell you the legally correct withholding because it does not know filing status, tax brackets, credits, dependents, local taxes, reciprocal state agreements, supplemental wage rules, annual caps, employer contributions, or rounding conventions used by a payroll provider. When accuracy affects a tax filing, employment decision, or financial obligation, compare the estimate with an official withholding calculator, a payroll professional, or jurisdiction-specific guidance. Invalid inputs are rejected instead of silently producing a misleading negative paycheck: rates must be non-negative and total no more than one hundred percent, pre-tax deductions cannot exceed gross pay, and post-tax deductions cannot exceed the amount remaining after estimated taxes. The same deterministic calculation powers browser and API use, with no network lookup, random value, or current-date dependency, so identical inputs reliably produce identical outputs.
What you can do with it
Plan a paycheck budget
Estimate spendable cash for one pay period after supplied withholding rates and recurring deductions.
Compare benefit contributions
Change a fixed pre-tax deduction to see its estimated effect on taxable pay, taxes, and net pay.
Review a payroll projection
Compare an auditable calculation with a preliminary pay stub or an offer-stage compensation estimate.
FAQ
How much does the calculator cost?
It is free in the browser. A successful API request costs $0.002.
Does it determine my correct tax rates?
No. You supply the federal, state, and payroll percentages; the calculator applies them without looking up tax law or personal filing details.
What is a pre-tax deduction here?
It is a fixed amount subtracted from gross pay before all three estimated tax rates are applied in this simplified model.
Why might my actual paycheck differ?
Payroll systems may use tax brackets, credits, local taxes, distinct taxable wage bases, annual caps, and provider-specific rounding that this estimator does not model.
Can I enter annual salary?
Yes, if every deduction also represents an annual amount, but the result is then an annual estimate rather than a paycheck estimate.
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/finance/take-home-pay \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"gross_pay":3000,"federal_tax_rate":12,"state_tax_rate":5,"payroll_tax_rate":7.65}'const res = await fetch("https://api.kit.forhosting.com/finance/take-home-pay", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"gross_pay": 3000,
"federal_tax_rate": 12,
"state_tax_rate": 5,
"payroll_tax_rate": 7.65
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/finance/take-home-pay",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"gross_pay": 3000,
"federal_tax_rate": 12,
"state_tax_rate": 5,
"payroll_tax_rate": 7.65
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/finance/take-home-pay", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"gross_pay":3000,"federal_tax_rate":12,"state_tax_rate":5,"payroll_tax_rate":7.65}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"gross_pay":3000,"federal_tax_rate":12,"state_tax_rate":5,"payroll_tax_rate":7.65}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/finance/take-home-pay", 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": 3000,
"federal_tax_rate": 12,
"state_tax_rate": 5,
"payroll_tax_rate": 7.65
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "finance.take_home_pay",
"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. |