Break even calculator
With fixed costs of 10,000, a price of 50 and a variable cost of 30, each unit contributes 20, so you break even at 500 units, or 25,000 in revenue. Add a profit target to see the volume that earns it. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Fixed cost
- 10,000
- Price
- 50
- Variable cost
- 30
- Target profit
- 0
- Contribution margin
- 20
- Break-even units
- 500
- Break-even revenue
- 25,000
free online
What the break-even point means
Every unit you sell first pays its own variable cost; what is left, the contribution margin, goes towards your fixed costs. The break-even point is the number of units whose combined margin exactly covers those fixed costs, with neither profit nor loss. With a price of 50 and a variable cost of 30, the margin is 20, and 10,000 of fixed costs are covered after 500 units. Multiplying those units by the price gives break-even revenue, 25,000 in this case. It is the classic cost, volume and profit calculation taught in every business course.
Use it to test a price
The most common use is checking a price before you commit to it: change the price, keep the costs and see how far the break-even volume moves. A lower price shrinks the margin per unit, so many more units are needed; a higher one does the opposite. Results show two decimals by default and units are not rounded, so round up yourself when you need a whole number of items. Keep in mind that the model is linear: one product, a constant price and a constant variable cost.
Interpreting the result and its assumptions
Break-even units are deliberately left fractional rather than rounded up to a whole unit, because the correct rounding depends on context: a factory ships whole pallets while a SaaS bills fractional seats, so round up yourself when you need a physical count. The model assumes a single product with a constant price and variable cost and a linear cost structure, which is the textbook assumption; step-fixed costs or volume discounts need a segmented run.
Because price must be positive and the contribution margin strictly positive, the division can never blow up, and there is no clock or randomness anywhere in the path.
What you can do with it
Pricing decisions
Test how a price change moves the break-even volume before committing to a new list price.
FAQ
Why are units fractional?
Break-even units keep decimals so you can round up yourself; whole-unit rounding depends on your product.
What is the contribution margin?
It is what is left from each sale after paying its variable cost: the price minus the variable cost per unit. That difference first covers your fixed costs and, once they are covered, becomes profit.
How many units do I need to sell to earn a specific profit?
Enter that amount as the profit target: it is added to the fixed costs before dividing by the contribution margin. Left empty, it counts as zero and you get the classic break-even point, where profit is exactly zero.
Why is a price at or below the variable cost refused?
Because the contribution margin would then be zero or negative and every sale would lose money, so no volume could ever cover the fixed costs. Instead of a meaningless figure, the calculator tells you about the problem.
Does it work for several products or volume discounts?
Not directly. The model assumes a single product with a constant price and a constant variable cost. If your fixed costs rise in steps or you give volume discounts, run a separate calculation for each segment.
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/dev/break-even \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"fixed_cost":10000,"price":50,"variable_cost":30}'const res = await fetch("https://api.kit.forhosting.com/dev/break-even", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"fixed_cost": 10000,
"price": 50,
"variable_cost": 30
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/break-even",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"fixed_cost": 10000,
"price": 50,
"variable_cost": 30
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/break-even", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"fixed_cost":10000,"price":50,"variable_cost":30}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"fixed_cost":10000,"price":50,"variable_cost":30}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/break-even", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"fixed_cost": 10000,
"price": 50,
"variable_cost": 30
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.break_even",
"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
Computes the break-even point from fixed_cost, price and variable_cost, returning the contribution margin, break-even units and break-even revenue, with an optional target_profit added to the goal.
The cost-volume-profit formula
The calculator uses standard cost-volume-profit arithmetic. First it derives the contribution margin per unit as price − variable_cost. If that margin is zero or negative the tool returns a typed invalid_input error, because no volume can ever cover fixed costs when each sale loses money. Break-even units are then (fixed_cost + target_profit) / contribution_margin, and break-even revenue is those units multiplied by price. target_profit defaults to 0, so omitting it gives the classic point where profit is exactly zero; supplying a positive value instead answers the related question of how many units are needed to earn that profit.
Inputs, rounding and returned fields
Inputs are validated up front: fixed_cost and variable_cost must be finite numbers of at least zero, price must be a finite number strictly greater than zero, and target_profit must be finite and may be negative. decimals is an integer from 0 to 4 and defaults to 2. The response echoes the four inputs (fixed_cost, price, variable_cost and target_profit) alongside the three computed fields, giving a self-contained record you can store or log without keeping the original request around.
Integration use cases
Startup planning
Feed fixed_cost and unit economics into the API to chart runway against sales targets.
Profit goals
Set target_profit to find the units needed to hit a quarterly margin, not just to zero out.
Technical questions
What is the contribution margin?
price minus variable_cost per unit. It must be positive, or the tool returns invalid_input.
Can I set a profit target?
Yes. target_profit is optional (default 0) and added to fixed_cost before dividing by the margin.
How is revenue computed?
break_even_units multiplied by price, rounded to the requested decimals (default 2, max 4).
Is it free?
Yes in the browser. The API uses prepaid KIT balance from $0.002; failed tasks are not charged.