Gross-up salary calculator
This gross-up salary calculator works backward from the amount someone needs to receive.
Run — free
Enter a target net amount and one combined percentage for taxes, payroll charges, benefits, or other deductions. The calculator divides the target by the share of gross pay that remains, then reports the required gross pay and estimated amount withheld. It is useful for payroll planning, contract negotiation, relocation packages, bonuses, and reimbursements when the final take-home amount matters more than the starting figure.
Work backward from the take-home target
Most payroll calculations begin with gross pay and subtract taxes or deductions to estimate take-home pay. A gross-up calculation reverses that direction. Start with the exact net amount the employee, contractor, or recipient should retain. Then enter the combined rate that represents every proportional amount expected to come out of gross pay. If the combined rate is 25 percent, the recipient retains 75 percent of gross pay. The calculator therefore divides the net target by 0.75. A target of 3,000 requires gross pay of 4,000, with an estimated 1,000 withheld. The returned retention rate makes that relationship visible and helps you check that the percentage was interpreted correctly. Results are rounded to two decimal places for practical currency use. The calculator does not choose a tax rate for you, identify a jurisdiction, or infer payroll rules. Its purpose is narrower: solve the arithmetic accurately once you have a defensible combined rate.
Build a realistic combined deduction rate
The quality of a gross-up estimate depends on the combined rate you supply. Include only deductions that are calculated as a percentage of gross pay and that genuinely reduce the amount delivered to the recipient. Depending on the situation, that may include estimated income tax withholding, employee payroll contributions, benefit deductions, pension contributions, or another proportional charge. Do not add fixed deductions directly to the percentage. If a payment has a fixed 50 fee as well as a 20 percent deduction, first gross up the desired net plus the fixed fee, or model the fixed component separately in your payroll system. Also avoid simply adding marginal tax brackets when the actual effective withholding rate is lower. For a quick scenario analysis, run the calculator with low, expected, and high combined rates. That range shows how sensitive the required budget is to the assumption and is more honest than presenting one uncertain rate as guaranteed. Always confirm the final rate with current payroll guidance or a qualified professional when money will actually be paid.
Interpret the result and its limits
The gross pay required is the amount before the stated proportional deductions. Estimated tax and deductions is the difference between that gross figure and the requested net amount. Because gross pay is rounded to cents, applying the percentage afterward can occasionally produce a net result that differs by a cent from the target; production payroll software may also use its own per-line rounding sequence. The model assumes one constant rate across the whole payment. Real tax systems can use brackets, allowances, caps, credits, filing status, year-to-date earnings, and employer-specific benefit rules, so a single combined percentage is an estimate rather than a payroll determination. The tool is strongest when the rate is already known, such as a flat withholding arrangement or a planning assumption supplied by payroll. It can also compare offers on a consistent basis, estimate the budget for a net bonus promise, or explain why the gross cost rises sharply as the deduction rate approaches 100 percent. Rates of 100 percent or more are rejected because no finite gross amount could deliver a positive net amount under that assumption.
What you can do with it
Budget a net bonus
Estimate the gross bonus allocation required when an employee has been promised a specific take-home amount.
Compare compensation scenarios
Test several combined deduction rates to see how much gross salary is needed for the same net income target.
Plan a grossed-up reimbursement
Calculate a starting payment intended to leave a recipient whole after proportional withholding.
FAQ
What formula does the calculator use?
It divides the target net amount by one minus the combined rate expressed as a decimal: gross pay = target net / (1 - rate).
What should I include in the combined rate?
Include proportional taxes and deductions that reduce the payment. Handle fixed fees separately because they cannot be represented accurately by one percentage.
Can I enter a rate of 100 percent?
No. At a 100 percent deduction rate, none of the gross payment remains, so no finite gross amount can produce a positive target net amount.
Is this an exact payroll tax calculation?
No. It is a deterministic gross-up calculation using the rate you provide. It does not model brackets, allowances, caps, credits, or jurisdiction-specific payroll rules.
How much does the API calculation cost?
Each API request costs $0.002. The browser calculator can be used directly on this page.
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/gross-from-net-income \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"target_net_amount":3000,"combined_rate_percent":25}'const res = await fetch("https://api.kit.forhosting.com/finance/gross-from-net-income", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"target_net_amount": 3000,
"combined_rate_percent": 25
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/finance/gross-from-net-income",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"target_net_amount": 3000,
"combined_rate_percent": 25
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/finance/gross-from-net-income", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"target_net_amount":3000,"combined_rate_percent":25}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"target_net_amount":3000,"combined_rate_percent":25}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/finance/gross-from-net-income", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"target_net_amount": 3000,
"combined_rate_percent": 25
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "finance.gross_from_net_income",
"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. |