Cash back calculator
Spend 250 on a 2% card and you earn 5 back, so the purchase effectively costs 245. Enter what you spent and the reward rate to compare cards, check a statement or plan the rewards in a budget. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Amount
- 250
- Percent
- 2
- Rate decimal
- 0.02
- Cash back
- 5
- Net cost
- 245
Cash-back rewards turn everyday spending into a statement credit or deposit: a credit card, store card, or loyalty program pays a percentage of what you spent back in cash. This cash back calculator takes the amount spent on a purchase or a statement total and the reward percentage for that category or card, multiplies them, and returns the cash back earned so you can compare cards, check a statement, or plug the figure into a budget. Enter spend and percent; receive the cash-back amount, the decimal rate, and the net cost after the reward. Zero percent is allowed and yields zero cash back.
What cash back is and how it is worked out
Cash back is the share of a purchase that a credit card, store card or loyalty program returns to you as money, usually as a statement credit or a deposit, rather than as miles or merchandise. The arithmetic is simple: multiply the amount spent by the reward rate and divide by one hundred. A grocery card paying 2% on a 250 shop returns 5. Type the rate the way issuers print it on their offers, so 2 means two percent. The calculator also shows the same rate as a decimal, 0.02, for anyone who keeps a spreadsheet next to it.
Comparing cards and checking a statement
Run the same spend through each card or category you are weighing and compare the cash back side by side. A category with no bonus still belongs in that comparison: zero percent is accepted and returns zero, not an error. The net cost tells you what the purchase really cost after the reward. Amounts are rounded to two decimals, the way money is, so the figure matches what appears on a statement. A negative reward rate is refused, because it would be a charge, not a reward.
FAQ
How is cash back calculated from spend and a reward percent?
Send finite numbers amount (non-negative spend) and percent (non-negative reward rate, where 2 means 2%).
What happens if the reward percentage is negative?
A negative reward percentage is not allowed in this contract and is not billed. Zero percent is valid and yields zero cash back.
Should I enter 2 or 0.02 for a two-percent card?
Enter 2. percent is a percentage, not a fraction: two means two percent.
Can the purchase amount be zero?
A negative amount is rejected because purchase spend cannot be negative.
What is the net cost after cash back?
It is the amount you spent minus the cash back earned, which is what the purchase effectively costs once the reward posts as a statement credit. In the example, 250 spent at 2% leaves a net cost of 245.
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/cash-back \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"amount":250,"percent":2}'const res = await fetch("https://api.kit.forhosting.com/fin/cash-back", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"amount": 250,
"percent": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/cash-back",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"amount": 250,
"percent": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/cash-back", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"amount":250,"percent":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"amount":250,"percent":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/cash-back", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"amount": 250,
"percent": 2
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.cash_back",
"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
A negative reward percentage is rejected as invalid_input and is not billed.
How cash back turns spend and a reward percent into money
Cash back is the share of a purchase that a rewards program returns as money rather than as miles or merchandise. A two-percent grocery card on a two-hundred-fifty spend returns five; a one-and-a-half-percent rotating category on one hundred twenty-three dollars and forty-five cents returns one dollar and eighty-five cents after ordinary money rounding. Amount is the purchase spend in one currency; percent is the advertised reward rate typed the way issuers print it on marketing pages, so two means two percent, not two hundred percent. Zero percent is a legitimate outcome and returns zero cash back rather than an error: a category with no bonus still belongs in a comparison. You supply both numbers; the calculator multiplies them and rounds the cash-back amount half-up to two decimal places so goldens compare byte-for-byte across runtimes. The identity this calculator uses is cash_back equals amount times percent divided by one hundred. The decimal form of that rate is also returned as rate_decimal so a spreadsheet can keep a fraction next to the percent people type. Net cost is the spend after subtracting the cash-back amount: it is what the purchase effectively costs if the reward posts as a statement credit. A negative reward percentage is not a rebate in this contract and is rejected as invalid_input, because a rewards table that prints a minus sign is almost always a data error, not a fee you meant to model. This endpoint does not look up issuer category lists, does not convert currencies, does not split a basket across rotating five-percent caps, and does not time when the credit posts. A promotional one-hundred-percent match is allowed and then cash_back equals amount and net_cost is zero.
Input contract, response shape, and error behaviour
POST a JSON body with two required finite numbers. amount is the purchase spend in one currency unit; aliases spent, purchase, purchase_amount, and spend map to the same field so a statement export can keep its column names. percent is the reward rate as a percentage, not a fraction: two means two percent, five means five percent; aliases rate, reward_percent, cash_back_rate, and reward_rate are accepted. Each numeric field may arrive as a JSON number or a numeric string. Missing fields, empty strings, and non-finite values fail with invalid_input naming the field. Zero percent is valid and returns cash_back of zero. On success the body echoes amount rounded to two decimal places and percent, then reports rate_decimal as percent divided by one hundred, cash_back as the earned reward rounded to two decimal places, net_cost as amount minus cash_back, and a formula string restating the identity. Example: two hundred fifty of spend at two percent yields cash_back of five and net_cost of two hundred forty-five. Pair the JSON with your own rule for which purchases share a rate—groceries, gas, or a flat everything rate—because this endpoint multiplies the two numbers you send; it does not assign a merchant category, apply a quarterly cap, or convert currencies. Keep requests small, pin the rounded cash_back in tests, and you get a reproducible reward figure for worksheets, LMS plugins, and edge workers without standing up a card-rewards engine of your own.
Where a cash back calculator earns its keep
Households comparing a two-percent flat card against a rotating five-percent category use a cash back calculator to turn last month's grocery or gas spend into one comparable dollar figure before they apply. Cash back prices one spend against one reward percent and returns money. Failed validation does not consume balance. Quarterly bonus caps, foreign-transaction fees, and annual fees stay outside this identity on purpose: fold them in your own layer after you have the raw cash-back dollars. Budgeters drop a planned purchase amount and the published percent, then pin net_cost so the rest of the month's envelope already reflects the statement credit they expect. Product teams wire the same contract into offer pages and onboarding quizzes that must show cash_back for a sample basket without calling an issuer API. This is a different search and a different job from sales tax, from a rule-of-seventy-eight loan rebate, and from travel points value: those tools add a tax on a subtotal, rebate prepaid interest on an installment loan, or convert award miles into cents per point. Keep percent non-negative, pin the rounded cash_back in tests, and you get a reproducible reward amount for teasers, statement checks, and edge workers without standing up a rewards ledger of your own.
Integration use cases
Compare card offers on a typical monthly spend
Turn last month's grocery or gas total and each card's published percent into cash_back so a two-percent flat rate and a rotating bonus sit on the same dollar scale.
Check a statement category against the advertised rate
Drop the category spend from a statement and the issuer percent, then confirm cash_back matches the credit you expect before you dispute a missing reward.
Budget the net cost of a large purchase
Enter the ticket price and the reward percent, then pin net_cost so the rest of the month's envelope already reflects the statement credit.
Technical questions
What does the cash back calculator cost?
The browser tool is free. API requests use prepaid balance at $0.002 per successful call; invalid input is not billed.