Sales tax calculator
A purchase of 100 at 8.25% sales tax carries 8.25 in tax and a total of 108.25 at checkout. Type the pre-tax price and the rate as a percentage, and every step is shown for checking a receipt or homework. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Pre-tax price
- 100
- Tax rate
- 8.25
- Total
- 108.25
- Rate percent
- 8.25
- Rate decimal
- 0.0825
- Tax amount
- 8.25
A sales tax calculator turns a pre-tax price and a local rate into the two numbers every checkout needs: how much tax is due and what the customer pays after tax. Enter a non-negative subtotal and a tax rate as a percentage—for example one hundred dollars at eight point two five percent—and the tool returns tax amount equals price times rate over one hundred, total equals price plus tax, a decimal form of the rate, and step-by-step substitution you can trust in a receipt check, a cart total, or a homework worksheet.
What sales tax amount and total mean
Sales tax is a percentage of the taxable pre-tax price collected at the point of sale. If the shelf or cart subtotal is the pre-tax price and the applicable rate is given as a percent, the tax amount is that price multiplied by the rate divided by one hundred, and the amount due is the pre-tax price plus the tax amount.
For example, a one-hundred-dollar purchase at eight point two five percent sales tax has tax amount eight dollars and twenty-five cents and a total of one hundred eight dollars and twenty-five cents. The rate may also be written as a decimal fraction—zero point zero eight two five for eight point two five percent—but this tool accepts the percentage form people type on a receipt or in a spreadsheet cell labeled “tax %.”
Zero percent is a valid rate for tax-exempt lines or jurisdictions with no sales tax: tax amount is zero and total equals the pre-tax price.
Practical tips, limits, and related searches
Enter the rate as a percent, not as a fraction: eight point two five means eight point two five percent, not eight hundred twenty-five percent. If your source gives the rate as zero point zero eight two five, multiply by one hundred before calling. Keep the pre-tax price non-negative; free samples at price zero are allowed and yield zero tax and zero total.
Prefer this capability when you already know the pre-tax amount and the percent rate and only need tax amount plus total; if your source is a receipt photo, extract those numbers first.
What you can do with it
Consumer-math homework and worksheets
Students compute sales tax on practice prices and compare hand-written tax and total against a deterministic result before submitting.
FAQ
What happens if the tax rate is negative?
A negative sales tax rate is not allowed; zero percent is valid and yields zero tax.
Does this look up my city or ZIP sales tax rate?
No. You supply the rate. This calculator only applies the arithmetic for a known percent; it does not resolve jurisdictions.
Is the sales tax calculator free?
The browser tool is free and runs locally.
How do I calculate sales tax on a price?
Multiply the pre-tax price by the rate and divide by 100 to get the tax, then add it to the price for the total. At 8.25%, a price of 100 carries 8.25 in tax and comes to 108.25.
Should I enter the rate as 8.25 or 0.0825?
Enter 8.25. The calculator expects the rate as a percentage, the way it appears on a receipt, so 8.25 means 8.25 percent. If your source shows 0.0825, multiply it by 100 first.
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/life/sales-tax \
-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/life/sales-tax", {
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/life/sales-tax",
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/life/sales-tax", 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/life/sales-tax", 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": "life.sales_tax",
"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
A negative tax rate is rejected with invalid_input instead of inventing a rebate; zero percent is allowed and yields a total equal to the pre-tax price.
What sales tax amount and total mean
A negative rate is not a physical or legal sales-tax input in this model; it would reverse the meaning of tax into a subsidy, so the API rejects it rather than returning a negative tax amount that would confuse cart software. This calculator does not look up state, county, or city rates for a ZIP code, does not split combined rates into components, and does not apply exemptions, caps, or inclusive-tax reverse calculation. It only applies the arithmetic: tax amount equals price times tax rate over one hundred, total equals price plus tax amount.
How to call the API and what comes back
The tax rate must be non-negative; negative values are rejected. Prefer numbers over currency-formatted strings; string numbers are accepted only when they match a strict finite numeric pattern without dollar signs or commas. Send a JSON body with two required finite numbers: price (aliases pre_tax, amount, subtotal, net), the non-negative pre-tax subtotal, and tax_rate (aliases rate, percent, sales_tax_rate, tax_percent), the sales tax rate as a percentage such as eight point two five for eight point two five percent. Absolute values for 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. On success the response echoes rounded price and tax_rate, sets rate_percent to the same rate value, rate_decimal to rate over one hundred, tax_amount to the rounded tax, total to price plus tax, formula to the documented string, message to a short English summary, and steps to an ordered array of substitution lines. Failed validation—missing fields, non-finite numbers, values outside absolute limits, a negative price, a negative tax rate, or a non-finite computed tax or total—returns invalid_input and is never charged. Pricing is a flat $0.002 per successful request with unit item and zero marginal unit price.
Practical tips, limits, and related searches
When teaching or testing, pair examples: one hundred at eight point two five percent for a classic positive tax case; fifty at zero percent for a tax-exempt line; a fractional price such as nineteen point nine nine at seven percent for retail rounding checks; and a deliberately negative tax rate to demonstrate the hard invalid_input path. This landing targets people searching for a sales tax calculator, tax amount from rate, or total price with sales tax online; it is not a ZIP-code tax API, not a VAT inclusive-to-exclusive converter, and not a multi-jurisdiction nexus engine. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when developers deliberately send a negative rate. Round-trip checks are easy: recompute price times rate over one hundred by hand and confirm it equals the published tax_amount within the same twelve-decimal rounding, then confirm that price plus tax_amount equals the published total.
Integration use cases
Checkout and cart total checks
Storefronts and invoice tools send pre-tax subtotal and local percent rate, then display tax_amount and total without reimplementing percentage math in every client.
Unit tests for billing code
QA and engineering generate known-good tax cases plus deliberate negative-rate rejections for golden expected values in cart libraries.
Technical questions
How is sales tax calculated?
Tax amount = pre-tax price × (tax rate percent ÷ 100). Total = pre-tax price + tax amount. Example: $100 at 8.25% → tax $8.25, total $108.25.
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.