Enter cash flows in the form you have
Start by choosing the timing that matches your data. By period uses a period number and Period length (years); By calendar date uses each Date and a Valuation date. The result shows the NPV alongside the timing, discount factor, and present value for each cash flow.
- Select By period (Year 0, 1, 2, ...) or By calendar date.
- For period entries, set Period length (years), then fill in Period, Label (optional), and Amount ($). Select Add cash flow for another row.
- For dated entries, set Valuation date, then enter each Date, Label (optional), and Amount ($).
- Enter negative amounts for outflows and positive amounts for inflows. Fill in Annual discount rate (%), then select Calculate.
- Check the result, then select Copy result, Download result (.txt), or Reset.
How timing changes the NPV formula
The calculator applies one Annual discount rate (%) with annual discrete compounding. Each amount is multiplied by its discount factor, and the discounted amounts are added.
Discount factor = 1 / (1 + r)^t
NPV = sum of (cash flow x discount factor)
With Period length (years) set to 1 and Annual discount rate (%) set to 8, this period series produces these displayed values:
Period Amount ($)
0 -10000
1 4000
2 4000
NPV: -$2,866.94
Discount factor at period 1: 0.92593
Discount factor at period 2: 0.85734
With By period, the calculator multiplies each nonnegative Period by Period length (years). With By calendar date, it converts the gap between each Date and Valuation date into years using a 365.25-day year.
Input rules that stop a calculation
Annual discount rate (%) must be greater than -100%. Period length (years) must be greater than zero. By period needs one completed cash flow with a Period of 0 or more. By calendar date needs a valid Valuation date and at least two completed cash flows with valid Dates and Amounts.
A row with both timing and Amount ($) blank is skipped. If only one is filled, the calculator shows an error. A Date before Valuation date is accepted and produces a negative Time (years) value in the result.
The calculation runs in the browser using the values entered on the page. It does not fetch live rates or market data, and the Annual discount rate (%) comes from you.
What to inspect in the result
- For an initial investment, enter a negative Amount ($) at Period 0 and positive later receipts. The table marks each amount as an Inflow or Outflow.
- For a regular schedule, use By period and compare each Time (years), Discount factor, and Present value with the final NPV.
- For irregular timing, use By calendar date and review the Time (years) calculated from each Date and Valuation date.
Choose a related financial calculator
See Financial Calculators for other calculations. Use the IRR Calculator for the return rate implied by a dated cash-flow series. Use the Cash Flow Valuation Calculator when you need present value, future value, NPV, and IRR for one-time, recurring, or dated cash flows. For one future amount, use the Present Value Calculator.
Frequently asked questions
How do I calculate NPV with a cash-flow series?
Select By period (Year 0, 1, 2, ...) or By calendar date. Enter the timing and Amount ($) for each row, use negative amounts for outflows and positive amounts for inflows, fill in Annual discount rate (%), and select Calculate. The result adds each amount after applying its discount factor.
Can I use calendar dates in the NPV calculator?
Select By calendar date, enter Valuation date, and add at least two cash flows with a Date and Amount ($). The calculator converts each date gap to years using a 365.25-day year.
What discount rate does the NPV calculator use?
It uses the percentage entered in Annual discount rate (%), with annual discrete compounding for every cash flow. The calculator does not estimate the rate or fetch a live rate.
Why is my NPV calculator showing an error?
An error appears when required timing or Amount ($) values are missing, a Date is invalid, Annual discount rate (%) is at or below -100%, or Period length (years) is not greater than zero. Fully empty rows are skipped; partly completed rows must be finished.