EVA calculator
With 150,000 of after-tax operating profit, 1,000,000 of invested capital and a 10% cost of capital, the capital charge is 100,000 and EVA is 50,000: the business earned more than its capital cost. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Nopat
- 150,000
- Invested capital
- 1,000,000
- Wacc percent
- 10
- Capital charge
- 100,000
- Eva
- 50,000
Economic value added, or EVA, is the residual-income line that asks whether a period's after-tax operating profit cleared the opportunity cost of the capital tied up to earn it. Analysts, operators, lenders, and compensation desks use that single number to tell value creation from accounting profit that still failed to cover the cost of funds. This EVA calculator takes three finite numbers in one currency and one period — net operating profit after tax, invested capital, and the weighted average cost of capital as a percent — multiplies invested capital by WACC to form the capital charge, subtracts that charge from NOPAT, and returns the EVA amount together with the capital charge. If the capital charge is not a representable finite number, the task also fails rather than returning Infinity.
How EVA turns NOPAT, invested capital, and WACC into residual income
Economic value added is residual income: NOPAT minus the capital charge, where the capital charge is invested capital times the weighted average cost of capital. NOPAT is after-tax operating profit for the period in one currency — earnings from operations after tax, before the financing mix that sits below the operating line. Invested capital is the capital employed to produce that NOPAT: typically operating working capital plus net property, plant, and equipment, or equivalently interest-bearing debt plus equity minus excess cash, depending on the adjustment set you already applied off-worksheet.
This calculator does not rebuild those adjustments; you send three finite numbers that already share one period and one currency. WACC is entered as a percent per period (ten means ten percent, not 0.10), matching the convention of a weighted-average-cost-of-capital calculator so a desk can paste the output of a WACC tool without converting it to a decimal by hand. EVA is NOPAT minus that charge.
A one-hundred-fifty-thousand NOPAT, one-million invested capital, and ten percent WACC print a capital charge of one hundred thousand and EVA of fifty thousand: the firm covered its cost of capital and added fifty thousand of economic value. An eighty-thousand NOPAT against the same million at twelve percent prints a capital charge of one hundred twenty thousand and EVA of negative forty thousand: accounting profit can still destroy value when the capital bill is larger than NOPAT. Zero WACC is allowed and yields a zero capital charge, so EVA equals NOPAT.
Negative NOPAT, negative WACC, and negative invested capital are accepted as finite numbers rather than hidden behind an absolute value — distressed prints and unusual signs still have a residual-income identity, and the difference follows them. This is a going-in EVA from the three-line identity, not a market-value-added figure, not a discounted-cash-flow present value, not an ROIC-minus-WACC spread expressed as a rate, and not a derivation of WACC from equity, debt, and tax.
Where an economic value added calculator earns its keep
Operators screening a monthly close use an EVA calculator to turn last period's NOPAT, a capital base, and a board-approved WACC into one residual-income line before they open a full value-based-management model. Compensation committees pin EVA next to a bonus pool so economic profit, not just operating margin, drives payouts and so a year that beat EBIT but missed the cost of capital does not look like a win.
Lenders and credit analysts re-run the same three fields when a year closes and they want to know whether earnings covered the opportunity cost of capital, not only whether they covered coupon interest. Valuation desks drop NOPAT from the filing, invested capital from the notes, and WACC from the cost-of-capital memo, and they compare that EVA with an ROIC-minus-WACC spread and a discounted-cash-flow case rather than treating any one of those as a substitute.
This is a different search and a different job from a WACC calculator, from a DCF present-value engine, from EBIT, from project NPV, and from business valuation by an earnings multiple: those tools start from different lines and answer different questions. Failed validation does not consume balance. Keep all three fields finite, pin the rounded EVA in tests, and you get a reproducible residual-income figure for teasers, LMS plugins, and edge workers without standing up a value-based-management engine of your own.
What you can do with it
Monthly close before a value-based pack
Turn last period's NOPAT, invested capital, and board WACC into one EVA line before you open a full residual-income model.
Compensation and bonus pools
Pin economic value added next to the bonus pool so payouts follow residual income rather than operating margin that still missed the cost of capital.
Credit memos and valuation teasers
Drop filing NOPAT, notes capital, and a WACC memo into one going-in EVA beside an ROIC spread and a discounted-cash-flow case.
FAQ
Is WACC entered as a percent or a decimal?
Feeding 0.10 would charge one-tenth of one percent of capital.
What happens if a field is missing or not a number?
NaN, Infinity, empty strings, and missing fields are rejected and are not billed.
What does it mean that the capital charge exceeds representable range?
The calculator rejects that case instead of returning Infinity.
How is economic value added calculated?
Multiply invested capital by the weighted average cost of capital to get the capital charge, then subtract that charge from net operating profit after tax. What remains is the value created, or destroyed, in the period.
Can a profitable company have a negative EVA?
Yes. If after-tax operating profit is smaller than the capital charge, EVA is negative: the company shows an accounting profit but did not earn enough to cover what its capital costs, so it destroyed value.
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/economic-value-added \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"nopat":150000,"invested_capital":1000000,"wacc_percent":10}'const res = await fetch("https://api.kit.forhosting.com/fin/economic-value-added", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"nopat": 150000,
"invested_capital": 1000000,
"wacc_percent": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/economic-value-added",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"nopat": 150000,
"invested_capital": 1000000,
"wacc_percent": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/economic-value-added", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"nopat":150000,"invested_capital":1000000,"wacc_percent":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"nopat":150000,"invested_capital":1000000,"wacc_percent":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/economic-value-added", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"nopat": 150000,
"invested_capital": 1000000,
"wacc_percent": 10
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.economic_value_added",
"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
Any input that is missing, empty, or not a finite number fails with invalid_input and is not billed.
How EVA turns NOPAT, invested capital, and WACC into residual income
The capital charge is then invested_capital times wacc_percent divided by one hundred.
Input contract, response shape, and error behaviour
Zero and negative amounts are allowed: a loss-making year, a zero cost of capital, or a credit still produce a finite EVA rather than an error. Example: one hundred fifty thousand of NOPAT, one million of invested capital, and ten percent WACC yield a capital charge of one hundred thousand and EVA of fifty thousand. POST a JSON body with three required finite numbers. nopat is period net operating profit after tax in one currency; aliases net_operating_profit_after_tax and nop map to the same field so a worksheet can keep its column names. invested_capital is the capital employed to earn that NOPAT, in the same currency; aliases capital, ic, and invested_capital_amount are accepted. wacc_percent is the weighted average cost of capital as a percent per period (ten means ten percent, not 0.10); aliases wacc, cost_of_capital, and weighted_average_cost_of_capital are accepted. Each numeric field may arrive as a JSON number or a numeric string. Missing fields, empty strings, and non-finite values — NaN, Infinity, or text that does not parse as a number — fail with invalid_input naming the field. Those failures are not billed. If invested capital times the WACC rate is not a finite IEEE number — for example a capital stock near the top of the float range multiplied by a large percent — the task fails with invalid_input saying the capital charge exceeds representable range, instead of returning Infinity or NaN as if they were money. On success the body echoes nopat, invested_capital, and wacc_percent, then reports capital_charge as invested capital times WACC as a decimal and eva as NOPAT minus that charge, both rounded half-up to two decimal places, plus a formula string restating the identity. Pair the JSON with your own rule for how you defined invested capital and NOPAT — excess-cash netting, operating-lease capitalization, or other residual-income adjustments — because this endpoint multiplies and subtracts the three numbers you send; it does not rebuild the balance sheet, choose an adjustment set, convert currencies, or compute WACC from component costs.
Technical questions
How is economic value added (EVA) calculated?
EVA is NOPAT minus the capital charge. The capital charge is invested_capital times wacc_percent divided by one hundred (ten means ten percent). The calculator returns capital_charge and eva, both rounded half-up to two decimal places.
What does the EVA calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.