The Math Behind Excel’s CUMIPMT() & CUMPRINC() Functions

I published the math behind the CUMIPMT() & CUMPRINC() functions at the bottom of my spreadsheet for the post Annuity – Excel Functions and Math. I think it got lost in all the annuity math. When I Google the math for these two functions, my blog doesn’t show up until the 6th or 7th page, depending on the wording of the search. I see the question asked without a real answer, so I am posting the formulas again by themselves. I am also doing it because it is my blog and I can.

Download “CUM



Also the math for a single row of a simple amortization schedule:

cum2Download “CUM

Don Pistulka

Retired Credit Union CFO - Finance
Background: over 40 years in investments, asset/Liability management, banking, securities trader.
Worked for: California Credit Union, WesCorp, CalFed S&L, Crocker Bank, Carroll McEntee, Federal Home Loan Bank Board (D.C.), Western Asset Management, Security Pacific National Bank.


  1. HI there. Thank you for all of your work!

    When I plug your calculation for m (p*i/(12*(1-(1+(i/12))^-n))) into your mathematical formula for the CUMIPMT function in Excel, I get


    This seems to work fine as long as the Payments Per Year remains 12. If I change the Payments Per Year to 6 for example, the Excel CUMIPMT function does not equal what


    resolves to. How could I make this formula work for 6 Payments Per Year instead of 12?

    Thank you!!

    1. Hi Kendall,
      The formula is based on a normal mortgage of 12 monthly payments per year. If you change the months to 6 from 12, you need to adjust one of the other four inputs. For example, if you calculate a new payment based on the other data inputs in yellow, the formula will match the function.

  2. If I set up the mathematical formula for the CUMIPMT to include the calculation for m, I get:


    This formula seems to work fine if the Payments Per Year (q) are 12. If I have 6 payments per year, this formula does not calculate the same value as the CUMIPMT function in excel. Any help with this would be greatly appreciated!! Thank you!

  3. Hello!

    How did you get payment $2302?

    I’ve got 41666 by this calc 100000*5/(12*(1-pow((1+(5/12)),-48)))

  4. hello!

    how did you get payment $2302?

    is there anything wrong in my calculations 100000*5/(12*(1-pow((1+(5/12)),-48)))?
    I get 41667 everytime

  5. There is any way to use CumIPmt in a matrix range?
    Ex: {SUM(CumIPmt (i/q;n;p;b;e;0)}

  6. Dear Don

    Based on your excel file, CUMPRINC requires i,q,n,p,b,e for parameters. But your function requires i,q,m,p,b,e. How to convert “n” parameter in CUMPRINC to “m” parameter in cell G14/G17

      1. If we have rate of interest calculated on monthly basis, does this become
        m = balance * apr / (1 – 1 / ((1 + (apr)) ** term))

        1. Atul,


          Using the default data on my example:

          Unless you meant that the rate was divided by 12, before calculating the formula. Then your formula would work.


      2. Hello!

        How did you get payment $2302?

        this 100000*5/(12*(1-pow((1+(5/12)),-48))) gives me 41666.66895195165 not 2302

  7. Hi

    The CUMIMPT formula does not make use of the payment amount (m), however, your mathematical formula does use it. As much as you are getting the same result as the formula, I would imagine there is a different mathematical formula powering the function.

    1. Hi Keldon,
      The reason the Excel formula does not ask for M (payment) is that the inputs it does ask for are enough to calculate the payment. So asking for the payment is not necessary.

Leave a Reply to Don Pistulka Cancel reply

Your email address will not be published. Required fields are marked *