# NPV and IRR calculator (with MIRR and payback)

> Calculate NPV, IRR, modified IRR, payback and discounted payback for a series of periodic cash flows, with the NPV profile across rates.

Interactive version: https://www.calcopenly.com/finance/npv-irr-calculator
Subject: Finance calculators

NPV discounts each period's cash flow back to the start and adds them up: NPV = Σ CF_t ÷ (1 + r)^t, with the first flow at period 0. IRR is the discount rate at which NPV is exactly zero. MIRR instead assumes outflows are funded at a finance rate and inflows reinvested at a reinvestment rate. Payback counts the periods until cumulative cash turns positive, and discounted payback does the same with present values.

With the defaults, an outlay of 10,000 followed by 3,000, 4,200 and 6,800, discounted at 10%, the NPV is 1,307.29 and the IRR is 16.34%. The money comes back after 2.41 periods, or 2.74 periods counting the time value of money. MIRR, at a 10% finance rate and 12% reinvestment rate, is 15.15%.

A period can be a year, a quarter or a month, as long as the rate is for the same period. Flows that change sign more than once can have several IRRs; the result then warns you and MIRR is the better guide.

## Inputs

- **Cash flows, period 0 first**: One amount per period, separated by spaces, new lines or a comma and a space; 10,000 reads as ten thousand. Outflows are negative.
- **Discount rate (per period)**
- **Finance rate for MIRR**: Rate paid on the money used to fund the outflows.
- **Reinvestment rate for MIRR**: Rate earned when the inflows are reinvested.

## Results

- Net present value — main result
- Internal rate of return
- Modified IRR
- Payback period (periods)
- Discounted payback period (periods)
- Profitability index

## Formula

$$
NPV = \sum_{t=0}^{n} \frac{CF_t}{(1+r)^t},\qquad \sum_{t=0}^{n} \frac{CF_t}{(1+IRR)^t} = 0,\qquad MIRR = \left(\frac{FV_{\text{inflows}}}{-PV_{\text{outflows}}}\right)^{1/n} - 1
$$

## Worked examples

### Four-year project at 10%

- Cash flows, period 0 first: -10000, 3000, 4200, 6800
- Discount rate (per period): 10%
- Finance rate for MIRR: 10%
- Reinvestment rate for MIRR: 12%
- **Net present value: 1,307.29**
- **Internal rate of return: 16.34056%**
- **Modified IRR: 15.147134%**
- **Payback period: 2.41 periods**
- **Discounted payback period: 2.74 periods**
- Checked against: Python decimal (prec 50) script: textbook NPV, IRR by 300-step bisection, Excel MIRR definition. Microsoft's NPV example gives 1,188.44 for these flows with the first at t = 1; ×1.1 = 1,307.28

### Microsoft MIRR example, five years

- Cash flows, period 0 first: -120000 39000 30000 21000 37000 46000
- Discount rate (per period): 10%
- Finance rate for MIRR: 10%
- Reinvestment rate for MIRR: 12%
- **Modified IRR: 12.609413%**
- **Internal rate of return: 13.073554%**
- **Payback period: 3.81 periods**
- Checked against: Microsoft MIRR documentation: 12.61% (five years); Python decimal gives 12.6094130366 and IRR 13.0735539471

### Microsoft MIRR example, three years

- Cash flows, period 0 first: -120000 39000 30000 21000
- Discount rate (per period): 10%
- Finance rate for MIRR: 10%
- Reinvestment rate for MIRR: 12%
- **Modified IRR: -4.804466%**
- **Internal rate of return: -14.405951%**
- Checked against: Microsoft MIRR documentation: −4.80% after three years; Python decimal gives −4.8044655250

### Microsoft IRR example, five years

- Cash flows, period 0 first: -70000 12000 15000 18000 21000 26000
- Discount rate (per period): 10%
- Finance rate for MIRR: 10%
- Reinvestment rate for MIRR: 12%
- **Internal rate of return: 8.663095%**
- **Net present value: -2,683.31**
- Checked against: Microsoft IRR documentation: 8.7% after five years; Python decimal bisection gives 8.6630948037

### IRR exactly zero

- Cash flows, period 0 first: -100 50 50
- Discount rate (per period): 0%
- Finance rate for MIRR: 10%
- Reinvestment rate for MIRR: 12%
- **Internal rate of return: 0%**
- **Net present value: 0.00**
- **Payback period: 2.00 periods**
- **Discounted payback period: 2.00 periods**
- Checked against: Inflows sum to the outlay, so NPV(0) = 0 by definition

### One period

- Cash flows, period 0 first: -100 110
- Discount rate (per period): 5%
- Finance rate for MIRR: 10%
- Reinvestment rate for MIRR: 12%
- **Internal rate of return: 10%**
- **Modified IRR: 10%**
- **Net present value: 4.76**
- **Payback period: 0.91 periods**
- **Profitability index: 1.0476**
- Checked against: 110/100 − 1 = 10%; NPV = −100 + 110/1.05 = 4.7619048; payback 100/110 (Python decimal)

## Questions

### How do you calculate NPV?

Divide each cash flow by (1 + r)^t, where t is its period, and add the results, counting the initial outlay at t = 0. At 10%, the flows −10,000, 3,000, 4,200 and 6,800 are worth −10,000 + 2,727.27 + 3,471.07 + 5,108.94 = 1,307.29. A positive NPV means the project earns more than the discount rate.

### Why does Excel's NPV function give a different answer?

Excel's NPV treats the first value in its range as arriving at the end of period 1, not at period 0. Putting all four default flows into =NPV(10%, …) returns 1,188.44, which is 1,307.29 ÷ 1.1. To get the usual NPV, leave the initial outlay out of the function and add it separately: =NPV(10%, 3000, 4200, 6800) − 10000.

### How is IRR calculated?

IRR is the rate that makes NPV zero, and it has to be found by trial: there is no general formula beyond four periods. For the default flows it is 16.34%. Excel's IRR starts from a 10% guess and returns #NUM! if it has not converged after 20 tries; here the search scans rates from −99.9% to 1,000% and then refines the root.

### What is the difference between IRR and MIRR?

IRR implicitly assumes every inflow is reinvested at the IRR itself; MIRR uses a stated reinvestment rate and finance rate, and it always has a single answer. In Microsoft's example, −120,000 followed by 39,000, 30,000, 21,000, 37,000 and 46,000 has an IRR of 13.07% but an MIRR of 12.61% at a 10% finance rate and 12% reinvestment rate.

### What is the difference between payback and discounted payback?

Payback counts plain cash; discounted payback counts present values, so it is always longer when the rate is positive. For the default flows, cumulative cash is −2,800 after two periods and the third period's 6,800 covers it in 0.41 of a period, a payback of 2.41. At 10% the discounted payback is 2.74 periods. Neither measure counts cash after the payback point.

### How accurate is the NPV and IRR calculator?

Accuracy depends on your inputs and the method's assumptions. Decimal arithmetic uses 50 significant digits, but estimates, numerical methods and source data can be less precise; the displayed rounding does not remove those limits. It is checked against 6 worked examples whose answers come from independent sources; for example, “Four-year project at 10%” is checked against Python decimal (prec 50) script: textbook NPV, IRR by 300-step bisection, Excel MIRR definition. Microsoft's NPV example gives 1,188.44 for these flows with the first at t = 1; ×1.1 = 1,307.28.

### Where does the method come from?

Microsoft Excel IRR function; Microsoft Excel MIRR function; Microsoft Excel NPV function; Brealey, Myers & Allen — Principles of Corporate Finance, ch. 5 (NPV and other investment criteria).

## Sources

- [Microsoft Excel IRR function](https://support.microsoft.com/office/irr-function-64925eaa-9988-495b-b290-3ad0c163c1bc)
- [Microsoft Excel MIRR function](https://support.microsoft.com/office/mirr-function-b020f038-7492-4fb4-93c1-35c345b53524)
- [Microsoft Excel NPV function](https://support.microsoft.com/office/npv-function-8672cb67-2576-4d07-b67b-ac28acf2a568)
- Brealey, Myers & Allen — Principles of Corporate Finance, ch. 5 (NPV and other investment criteria)

_Note: financial information, not professional advice._
