Returns the interest payment for a given period of an investment based on periodic, constant payments and a constant interest rate. Essential for loan amortization, interest tracking, and understanding how much of each payment goes to interest vs principal. Calculates the interest portion of a single payment.
Master the fundamentals of Excel IPMT function
The IPMT (Interest Payment) function calculates the interest portion of a payment for a specified period in an amortizing loan or investment. This function is essential for loan amortization schedules, understanding how payments are allocated between interest and principal, and tracking interest expense over time. IPMT demonstrates the amortization pattern where interest decreases over the loan life as the principal balance declines. Early payments consist mostly of interest (high interest, low principal), while later payments consist mostly of principal (low interest, high principal). IPMT works with PPMT (principal payment) and together they equal PMT (total payment), showing the complete payment composition.
IPMT calculates interest for one specific period (per parameter). Returns interest portion of that payment only, not cumulative or total interest.
Interest decreases over loan life as principal balance declines. Formula: Interest = Balance × Rate. Lower balance = lower interest.
Returns negative values representing cash outflow (interest expense). Follows Excel standard: negative = money paid out.
Works with PPMT to split total payment: PMT = IPMT + PPMT. IPMT (interest) + PPMT (principal) = total payment amount.
Interest depends on outstanding principal balance at start of period. Higher balance = higher interest, lower balance = lower interest.
Essential for tax planning (mortgage interest deduction), financial planning (interest tracking), and loan analysis.
Function-specific parameters
Function-specific return type
Create amortization schedules showing interest per period
Track interest paid for specific payments
Calculate deductible interest per period
Analyze interest costs over loan life
Compare interest payments between loans
Plan interest expense for budgeting
Exact matching required
Returns numeric position
Handles missing text gracefully
=IPMT(rate, per, nper, pv, fv, type)The interest rate per period. Must be in decimal form (e.g., 5% = 0.05). Must match the payment period (monthly rate for monthly payments, annual rate for annual payments).
The payment period for which interest is calculated. Must be between 1 and nper. Period numbering starts at 1.
The total number of payment periods. Must be positive. Must match the rate period (e.g., 360 months for 30 years of monthly payments).
The present value, or total amount of the loan. Enter as positive value. For loans, this is the principal amount borrowed.
The future value, or cash balance after the last payment. Default is 0 (loan fully paid). For balloon loans, enter remaining balance.
When payments are due: 0 = end of period (default), 1 = beginning of period. Affects calculation slightly.
The interest payment for the specified period (negative value represents cash outflow)
Description: Calculates interest portion of a payment for specific period
Calculate interest for first payment of mortgage
Returns interest of $833.33 for first month. Interest is highest in early periods when principal is highest.
Using IPMT function in VBA through WorksheetFunction
Sub IPMTExample()
Dim result As Double
Dim rate As Double, per As Integer, nper As Integer, pv As Double
rate = 0.05 / 12
per = 1
nper = 360
pv = 200000
result = Application.WorksheetFunction.IPmt(rate, per, nper, pv)
Range("A1").Value = result
Range("A1").NumberFormat = "$#,##0.00"
MsgBox "First period interest: quot; & Format(Abs(result), "#,##0.00")
End Sub
' Calculate interest for multiple periods
Sub CalculateInterestSchedule()
Dim rate As Double, nper As Integer, pv As Double
Dim i As Integer
Dim interest As Double
rate = 0.05 / 12
nper = 360
pv = 200000
For i = 1 To 12
interest = Application.WorksheetFunction.IPmt(rate, i, nper, pv)
Range("A" & i).Value = "Period " & i
Range("B" & i).Value = Abs(interest)
Range("B" & i).NumberFormat = "$#,##0.00"
Next i
End Sub
' Build complete amortization table
Sub BuildAmortizationTable()
Dim rate As Double, nper As Integer, pv As Double
Dim i As Integer
Dim payment As Double, interest As Double, principal As Double
Dim balance As Double
rate = 0.05 / 12
nper = 360
pv = 200000
balance = pv
payment = Application.WorksheetFunction.Pmt(rate, nper, pv)
For i = 1 To 12
interest = Application.WorksheetFunction.IPmt(rate, i, nper, pv, 0, 0)
principal = Application.WorksheetFunction.PPmt(rate, i, nper, pv, 0, 0)
balance = balance + principal
Range("A" & i + 1).Value = i
Range("B" & i + 1).Value = Abs(payment)
Range("C" & i + 1).Value = Abs(interest)
Range("D" & i + 1).Value = Abs(principal)
Range("E" & i + 1).Value = balance
Range("B" & i + 1).NumberFormat = "$#,##0.00"
Range("C" & i + 1).NumberFormat = "$#,##0.00"
Range("D" & i + 1).NumberFormat = "$#,##0.00"
Range("E" & i + 1).NumberFormat = "$#,##0.00"
Next i
End Sub
' Calculate year-end interest total
Sub CalculateYearEndInterest()
Dim yearStart As Integer, yearEnd As Integer
Dim totalInterest As Double
Dim i As Integer
Dim rate As Double, nper As Integer, pv As Double
rate = 0.05 / 12
nper = 360
pv = 200000
yearStart = 1
yearEnd = 12
For i = yearStart To yearEnd
totalInterest = totalInterest + Abs(Application.WorksheetFunction.IPmt(rate, i, nper, pv))
Next i
Range("B1").Value = totalInterest
Range("B1").NumberFormat = "$#,##0.00"
MsgBox "Total interest for year: quot; & Format(totalInterest, "#,##0.00")
End SubCalculate interest for each payment in schedule
Track interest paid for specific periods
Calculate deductible interest per period
Build interest column for all payments
Analyze interest vs principal allocation
Compare interest between different loans
IPMT returns #NUM! error
=IPMT(0.05/12, 1, 360, 200000)Solution: Check: 1) per >= 1 and per <= nper, 2) All numeric parameters are valid, 3) Rate and nper match payment periods. Verify period numbering starts at 1, not 0.
IPMT returns negative value unexpectedly
=ABS(IPMT(rate, per, nper, pv))Solution: Negative values are correct - they represent cash outflow (interest expense). Use ABS() to display as positive: =ABS(IPMT(...)) for readability in reports.
Interest amount seems incorrect
=IPMT(0.05/12, 1, 360, 200000)Solution: Check: 1) Rate is in decimal form (5% = 0.05, not 5), 2) Rate matches period (monthly rate for monthly payments), 3) Per is correct period number. Early periods have higher interest than later periods.
Interest appears constant across periods
=IPMT(rate, period, nper, pv)Solution: Ensure all parameters remain constant except per. Interest should decrease as per increases. If using cell references for per, verify they're incrementing correctly.
IPMT returns #VALUE! error
=IPMT(A1, B1, C1, D1, E1, F1)Solution: Non-numeric values in parameters. Check: 1) All parameters are numbers, 2) Cell references contain numeric values, 3) No text in any parameter. Verify inputs are valid numbers.
Uncertain how IPMT relates to PPMT and PMT
=ABS(IPMT(...) + PPmt(...)) should equal =ABS(PMT(...))Solution: IPMT (interest) + PPMT (principal) = PMT (total payment). All three should use same rate, nper, pv. Verify this relationship holds in your calculations.
Calculates principal payment for a single period
FinancialCalculates total payment amount per period
FinancialCalculates cumulative interest over period range
FinancialCalculates cumulative principal over period range
FinancialCalculates present value of loan
FinancialCalculates future value/remaining balance
Financial