ForHosting KIT · Math

Chain discount / net price factor

Turn a chain of trade discounts into one net price: a list price of 100 with twenty percent and then ten percent off comes to 72, a net price factor of 0.72 that you can apply to any other list price. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
List price
100
Comma-separated cascade discounts %
20,10
Decimal places
4
You get
Discounts percent
20, 10
Net price factor
0.72
Net price
72
Equivalent discount percent
28

Cascade trade discounts to net price factor. Search intent: chained trade discount to net price factor. No network calls or random seeds are required. Failed jobs are not billed.

How a chain of discounts really works

A chain discount, also called a cascade or series discount, is a list of percentages taken one after another from a list price. Each discount applies to what is left after the previous one, never to the original price. To combine them, turn each percentage into the share it leaves behind, which is one minus the discount. Multiply those shares together and you get the net price factor. Multiply the list price by that factor and you get the net price. With a list price of 100 and discounts of twenty percent and ten percent, the factor is 0.72 and the net price is 72. One minus the factor, 28%, is the single discount that lands on the same price.

Mistakes that make a discount look bigger than it is

The most common error is adding the percentages. On paper, twenty percent and ten percent look like 30%, but the second discount works on a smaller base, so the real saving is 28%. A related slip is taking every discount from the original list price, which leads to the same wrong total. Rounding after each step is another trap: with several discounts in the chain, small differences build up. Here the full chain is calculated first and rounded half-up only once, at the end, and only when you ask for decimals. Finally, the order of the discounts does not change the result, so there is no need to worry about which one comes first.

Teaching

Pinned goldens.

Why can't I just add the discounts together?

Because each discount is taken from a price that is already reduced. Discounts of twenty percent and ten percent look like 30% on paper, but together they take off only 28%, so a list price of 100 ends at 72.

Does the order of the discounts matter?

No. The net price factor multiplies what each discount leaves behind, and multiplying in another order gives the same result. Taking ten percent first and twenty percent second still gives a factor of 0.72.

What is the equivalent single discount?

It is the one discount that would reach the same net price as the whole chain: one minus the net price factor, written as a percentage. A factor of 0.72 means a single discount of 28%.

How are the results rounded?

Only if you ask for decimals, and then only once, at the very end. The whole chain is worked out at full precision and rounded half-up a single time, so small errors never pile up from one discount to the next.

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.

POSThttps://api.kit.forhosting.com/math/chain-discount

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.

curl -X POST https://api.kit.forhosting.com/math/chain-discount \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"list_price":100,"discounts_percent":"20,10"}'
{
  "list_price": 100,
  "discounts_percent": "20,10"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "math.chain_discount",
  "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.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos.

How it works

Cascade trade discounts to net price factor. NPF=Π(1−dᵢ); net=list×NPF. No network calls or random seeds are required. Failed jobs are not billed. No network calls or random seeds are required. Failed jobs are not billed. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos.

Inputs, limits and rounding

Optional decimals use half-up once. Outputs echo inputs. No network calls or random seeds are required. Failed jobs are not billed. No network calls or random seeds are required. Failed jobs are not billed. Provide required JSON fields. Invalid types raise invalid_input. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos.

When to use it

Use when search intent matches. Cascade trade discounts to net price factor. No network calls or random seeds are required. Failed jobs are not billed. No network calls or random seeds are required. Failed jobs are not billed. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos.

Quick check

Free widget.

Automation

Same JSON via API.

Free?

Yes tier A.

Network?

No.

Bad input?

invalid_input.

API?

Yes.

Locales?

EN-only; Nitro hydrates.

Read the full KIT documentation →