Add sales tax calculator
At 8.25%, a pre-tax price of 100 carries 8.25 of tax and a gross of 108.25, and any known sales tax rate is added the same way. A 0% exempt line works too, and both amounts are 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
- Price
- 100
- Tax rate
- 8.25
- Rate decimal
- 0.0825
- Tax amount
- 8.25
- Gross
- 108.25
An add sales tax calculator answers the checkout question every invoice, cart, and quote must settle: if this line is still pre-tax, and the applicable rate is this many percent, how much tax do I add and what does the customer pay as the gross amount? Merchants, bookkeepers, marketplace sellers, and students all start from a net subtotal they already know—the shelf price, the service fee, the quote line—and need a single forward pass that applies the rate as a percentage, not as a reverse extract from a tax-inclusive ticket. This tool takes that pre-tax price and the rate, computes tax amount as price times rate over one hundred, then adds the rounded tax to the price to produce the gross total. Zero percent is a valid exempt line. A negative rate is rejected instead of being treated as a rebate.
How adding sales tax produces the tax amount and the gross
Adding sales tax is a forward percentage markup on a pre-tax price, not a reverse peel of tax that is already inside a ticket. If the shelf or quote line is still exclusive of tax, the tax amount is that price multiplied by the rate divided by one hundred, and the gross the buyer pays is the pre-tax price plus that tax amount.
Write the rate as a percent the way a cash register or a state form writes it: eight point two five means eight and a quarter percent, which is a decimal fraction of zero point zero eight two five. One hundred dollars at eight point two five percent therefore has a tax amount of eight dollars and twenty-five cents and a gross of one hundred eight dollars and twenty-five cents.
Zero percent is a real business case—tax-exempt resale, groceries in some states, or a promotional line—and it yields a tax amount of zero with a gross equal to the pre-tax price. Money fields are rounded half-up to two decimal places after the raw product is formed, which is the convention invoices and bank statements use. The calculator does not look up combined state, county, and city rates from a ZIP code, does not split a combined rate into jurisdictions, and does not reverse an inclusive total back to a net.
It only adds the tax you already know: tax amount equals price times tax rate over one hundred, and gross equals price plus tax amount.
Where adding sales tax comes up
Storefronts, invoicing tools, and marketplace listings need a reproducible add-tax step that starts from the net line they already store and produces the levy plus the gross the buyer will see at checkout. A publisher ranking for add sales tax calculator is targeting people who already have a pre-tax price and a known percent and want the forward add, not a reverse extract from a tax-inclusive receipt and not a ZIP-code lookup of combined rates.
Bookkeepers reconciling quotes against cash-register tapes use the same identity to confirm that each exclusive line plus its rate matches the printed tax and the printed total. Teachers of consumer math assign add-tax worksheets and need an oracle that marks a negative rate as invalid instead of inventing a rebate. Failed validation does not consume balance.
What you can do with it
Consumer-math homework on adding tax
Students add sales tax to practice prices and compare their hand-written levy and gross against a deterministic result before submitting the worksheet.
FAQ
How do I add sales tax to a pre-tax price?
Send the pre-tax price and the rate as a percent. Gross equals price plus tax amount. Example: 100 at 8.25% → tax 8.25, gross 108.25.
What happens if the tax rate is negative?
A negative sales tax rate is not allowed; zero percent is valid and yields zero tax and a gross equal to the pre-tax price.
Does this look up my city or ZIP sales tax rate?
No. You supply the rate. This calculator only adds a known percent to a pre-tax price; it does not resolve jurisdictions or reverse an inclusive total.
Should I type 8.25 or 0.0825 for an 8.25% rate?
Type 8.25, the way a register or a tax form writes it. The calculator divides the rate by one hundred for you, so typing 0.0825 would charge only a tiny fraction of the tax you meant.
Can it take tax out of a price that already includes it?
No. It only adds a rate you already know to a price that does not include tax yet. Pulling tax out of a tax-inclusive total is a reverse calculation, which calls for a different tool.
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/finance/sales-tax-add \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"price":100,"tax_rate":8.25}'const res = await fetch("https://api.kit.forhosting.com/finance/sales-tax-add", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"price": 100,
"tax_rate": 8.25
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/finance/sales-tax-add",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"price": 100,
"tax_rate": 8.25
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/finance/sales-tax-add", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"price":100,"tax_rate":8.25}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"price":100,"tax_rate":8.25}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/finance/sales-tax-add", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"price": 100,
"tax_rate": 8.25
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "finance.sales_tax_add",
"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_tax_rate_percent | 1000 |
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
How adding sales tax produces the tax amount and the gross
A negative rate is not a legal sales-tax input in this model; treating it as a discount would silently invert the meaning of tax, so the engine rejects it with invalid_input rather than returning a negative levy.
Input contract, response shape, and validation
Example: a one-hundred-dollar pre-tax line at eight point two five percent yields tax amount eight dollars and twenty-five cents and gross one hundred eight dollars and twenty-five cents. A forty-nine dollar ninety-nine cent line at seven percent exercises the half-up path: the raw product is three dollars and four thousand nine hundred ninety-three ten-thousandths, which rounds to three dollars and fifty cents, so the published gross is fifty-three dollars and forty-nine cents. POST a JSON body with two required finite numbers. price is the pre-tax subtotal in currency units and must be greater than or equal to zero; aliases pre_tax, amount, subtotal, and net are accepted so cart payloads and invoice rows do not need a rename step. tax_rate is the sales tax rate as a percentage—use 8.25 for eight and a quarter percent, not 0.0825—and must be a finite number greater than or equal to zero; aliases rate, percent, sales_tax_rate, and tax_percent are accepted. Absolute price must stay within one trillion and tax_rate must stay within one thousand percent 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 price, a negative tax rate, or a value outside those limits fail with invalid_input naming the field and are not billed. On success the body echoes rounded price and tax_rate, returns rate_decimal as the rate over one hundred, tax_amount as the half-up two-decimal levy, gross as the tax-inclusive total, and a formula string you can print next to the numbers. Prefer JSON numbers over currency-formatted strings; dollar signs and thousands separators are not parsed.
Where an add-sales-tax API earns its keep
Keep requests small, pin the rounded tax_amount and gross in tests, and you get stable add-tax arithmetic for widgets, quote checkers, and edge workers without standing up a tax-engine subscription or a jurisdiction database of your own.
Integration use cases
Checkout and invoice gross totals
Storefronts and billing tools send a pre-tax line and a known percent rate, then display tax_amount and the gross the customer pays without reimplementing percentage math in every client.
Regression tests for cart libraries
QA pins known-good add-tax cases plus deliberate negative-rate rejections so billing code cannot silently invert tax into a discount.
Technical questions
Should I enter 8.25 or 0.0825 for the rate?
Enter 8.25. The tax_rate field is a percentage (8.25 means 8.25%). The response also includes rate_decimal (0.0825) for convenience.
What does the add sales tax calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.