IRR Calculator
Enter cash flows at equal intervals and the IRR calculator returns every periodic rate it can certify for them. The first amount is at time 0; use a negative amount for money paid out and a positive amount for money received.
Supported range: −99.99% to 1000% per period, inclusive. A rate outside this range may exist.
Every cash flow is a column above or below the zero baseline, and the solved IRR rates are printed under the chart; the figure is redrawn with the flows.
An example with two rates
Cash flows −100, 230 and −132 have two periodic IRRs: 10% and 20%. Both satisfy NPV = 0. Multiple rates can make IRR ambiguous, so this calculator lists all distinct rates it can certify in the supported range.
What does per period mean?
The rate uses the interval between your cash flows. Annual cash flows give an annual rate; monthly cash flows give a monthly rate. This calculator does not convert between them. Irregularly dated cash flows need a dated calculation such as XIRR.
How are difficult cases handled?
Repeated roots appear once. Close but distinct roots remain separate. If the calculation exceeds its numerical limits, no partial answer is shown. Change the inputs and calculate again.
How to use it in four steps
Type one amount per line, starting with the amount at time 0. The first line is usually negative, because that is money leaving your account, and each later line is the amount at the next equal interval. Press Calculate IRR. The status line then says whether a rate was certified, whether several distinct rates exist, or why no rate could be reported. Rates are listed lowest to highest, one per line, each followed by the words per period. Editing the list clears the previous answer so a stale rate never stays on screen.
What the solver computes
Each amount becomes a coefficient of a polynomial in x = 1 / (1 + r), where r is the periodic rate. The solver converts the decimals into exact integer coefficients, builds a Sturm sequence, and counts sign variations at both ends of the supported range, which tells it how many distinct roots exist before any percentage is printed. Intervals holding a single root are halved until the width is within one trillionth of the rate and the residual check passes. A printed percentage is a root the polynomial really has.
A worked example you can check
Enter −100, 40 and 77. The rate is 10 percent per period. Check it by hand: 40 divided by 1.1 is 36.36363636, 77 divided by 1.21 is 63.63636364, and −100 plus those two amounts is 0. A discounted sum of zero at that rate is what the IRR calculator looks for. Written as a polynomial the same flows are 77x^2 + 40x − 100, whose only positive root is x = 10 / 11, and inverting that gives 10 percent again.
Why two rates can appear
A list whose sign flips more than once can satisfy the zero-sum equation at more than one rate. The example already in the input box, −100, 230 and −132, has two: at 10 percent and at 20 percent the discounted sum is 0. Both are reported, on separate lines, under the multiple rates message. Two answers mean one rate alone does not describe this pattern of money cleanly, so read them next to the discounted sum at a rate you choose yourself.
Input limits in exact numbers
Between 2 and 41 lines are accepted. A line may hold at most 80 characters and must be an optional sign, digits with an optional decimal point, and an optional exponent, so 1500, -12.5, .75 and 3.2e4 are all valid. Spaces around an amount and the final newline are ignored, but a blank line inside the list is rejected with its line number. Each amount must survive a round trip through the number type without changing its decimal value, or that line is rejected rather than quietly rounded.
The time and size guards
Exact arithmetic gets expensive as inputs grow, so a run stops when any guard trips: 200,000 arithmetic steps, one second of clock time, 32,768 bits for any single coefficient, and 256 halvings for one root interval. When a guard trips you get the failure message and no partial list of rates, because a half-certified root would mislead more than no answer. Fewer periods and fewer significant digits per amount shrink the integers the solver works with, which is usually what brings a calculation back inside the limits.
Where the supported range ends
The search covers the closed interval from −99.99 percent to 1000 percent per period, and a root sitting on an endpoint is counted instead of skipped. If the only rate a list has lies past 1000 percent per period, the answer is the no-rate-in-range message plus the note that such a rate may still exist. The bottom stops just short of −100 percent because 1 + r would be zero there, and the equation stops being a polynomial in the rate at that point.
Two cases answered before any search
If every amount is zero, the result is the indeterminate message: the discounted sum is 0 at every rate, so no unique rate exists. If the amounts never change sign, the result is the no-IRR message, and the solver records that zero distinct roots exist in range without building a polynomial, because same-sign discounted amounts can never add to zero. Anything with at least one sign change goes through the full root search instead.
Frequently asked questions
What does an IRR calculation return?
The periodic rate that makes the net present value of your list zero: each amount is discounted back to time 0 at that rate and the results are added. The answer set is the distinct rates certified between −99.99 percent and 1000 percent per period, sorted lowest to highest. Rates outside that band are not turned into a number.
How many cash flows can I enter?
Between two and forty-one, one amount per line. Any line longer than eighty characters, or one the parser cannot read as a number, is rejected with its line number, and a blank line inside the list falls into that category. If your series is longer than forty-one periods, shorten it to the periods that change the picture.
Why does it say these cash flows have no IRR?
Because the amounts never change sign. A list that is all positive, all negative, or has one direction with zeros in it cannot sum to zero at any discount rate, and the solver states that up front instead of searching. Write money you pay out as negative amounts and money you receive as positive amounts so the direction changes at least once.
Is the result an annual rate?
No. It is a rate per period, and the period is the gap between your lines. Yearly spacing gives a yearly rate, monthly spacing a monthly one, and multiplying a monthly figure by twelve is not the same thing. Nothing on this page converts between spacings, and amounts on irregular dates need a dated calculation such as XIRR instead.
Can the same cash flows produce more than one rate?
Yes. When the sign changes more than once, the zero net present value equation can have several roots. The preloaded list −100, 230, −132 has two, 10 percent and 20 percent, and substituting either one gives a discounted sum of zero. Repeated roots appear once, and close but distinct roots stay separate lines.
What should I change when the failure message appears?
Shorten the inputs. The exact arithmetic is capped at 200,000 steps, one second of clock time, and 32,768 bits for any single coefficient, so long lists and amounts with many significant digits can use up that budget. Round each amount to the precision you actually mean, drop periods that carry no information, and calculate again.