Contact

PPMT Function (LibreOffice Calc)

Financial Intermediate LibreOffice Calc

Use PPMT in LibreOffice Calc to calculate how much principal you repay in any period of a fixed-rate loan, with worked loan and amortization examples.

Verification status: Official documentation referenced; example outcomes independently reasoned or arithmetically checked where stated. Not executed in LibreOffice Calc. How formula examples are checked

Historical validation scope: Native observations are from saved LibreOffice Calc 25.2.3.2 Linux tests dated 12 October 2026 at 23:05 UTC. All 61 ODS/result pairs and artifact hashes agree. This review independently recalculated the 45 numerical assertions using 45-digit Decimal annuity equations and checked all ten cells of the saved example model. Calc was not rerun.

Quick answer: PPMT tells you how much of one fixed loan payment reduces principal, as opposed to paying interest. For a 12,000 loan repaid monthly over two years at a nominal annual rate of 6%, enter:

=PPMT(6%/12;1;24;12000)

In LibreOffice Calc 25.2.3.2, this returned โˆ’471.8473230331, or โˆ’471.85 formatted to two decimal places. The first full monthly payment is โˆ’531.85; the remaining โˆ’60.00 pays interest. The negative signs reflect an outgoing payment when the loan principal (PV) is entered as a positive amount.

The same loan’s last payment has approximately โˆ’529.20 in principal. This makes PPMT useful for loan schedules, principal-versus-interest charts, debt repayment plans, and auditing an amortization model.

When PPMT is the right function

Choose PPMT when you already know a loan’s periodic interest rate, number of regular payments, present value, and specific payment period. It assumes regular, equal payments and a constant interest rate. It does not model changing rates, extra payments, daily accrual rules, lender fees, or an arbitrary bank’s rounding policy. For the entire periodic payment use PMT; for its interest portion use IPMT. The relationship is:

PMT = PPMT + IPMT

All three results generally have the same negative cash-flow sign for a positive loan principal.

Official syntax and argument order

The current LibreOffice 26.8 Help, accessed 2026-10-12, documents:

PPMT(Rate; Period; NPer; PV [; FV [; Type]])
Argument Required? Meaning Important detail
Rate Yes Interest per payment period Use annual nominal rate/12 only when monthly conversion is appropriate.
Period Yes Which principal payment to calculate Start at 1 for the first payment; NPer identifies the last. Use a whole-number period for a portable model.
NPer Yes Total number of payments For monthly payments over 2 years, use 24 or 2*12.
PV Yes Present value / initial loan principal Enter a positive loan amount to get negative payments.
FV No Desired signed future value If omitted, defaults to 0 for a fully repaid loan.
Type No Payment timing 0 or omitted = end of each period; 1 = beginning.

In the examples, arguments use semicolons and decimals use a point, matching the tested English-language Calc setup. Function argument separators and decimal formatting can depend on LibreOffice’s formula-separator settings and locale. If your Calc is configured differently, adapt the separators rather than blindly pasting a comma-separated Excel or Google Sheets example. The financial logic is unaffected by whether a currency symbol or thousands separator is displayed.

The two final parameters are optional in order. The safest way to choose beginning-of-period payments is to explicitly supply FV first:

=PPMT(6%/12;1;24;12000;0;1)

LibreOffice Help says you should not omit an optional parameter while passing a later one. Some other argument patterns were accepted in Calc 25.2.3.2, but are not advised for portable examples.

What counts as a period?

Period means payment number, not a date or a number of months automatically inferred from the loan. For a three-year quarterly repayment plan, periods run from 1 to 12 and the periodic rate is the compatible quarterly rate, not the full annual percentage. For a 30-year monthly loan, periods run from 1 to 360. Never combine an annual rate with monthly periods without intentionally converting the rate.

Example 1: loan principal and interest in month one

Suppose a loan has these assumptions:

Input Value
Amount borrowed 12,000
Nominal annual interest rate 6%
Payments per year 12
Repayment term 2 years
Monthly interest rate 0.5%
Number of payments 24
Payment timing End of month (Type = 0)

Enter the following formulas directly in Calc:

Formula Observed Calc 25.2.3.2 output (rounded) Interpretation
=PMT(6%/12;24;12000) โˆ’531.85 Total monthly payment
=IPMT(6%/12;1;24;12000) โˆ’60.00 Interest in month 1
=PPMT(6%/12;1;24;12000) โˆ’471.85 Principal in month 1
=PPMT(6%/12;2;24;12000) โˆ’474.21 Principal in month 2
=PPMT(6%/12;12;24;12000) โˆ’498.46 Principal in month 12
=PPMT(6%/12;24;24;12000) โˆ’529.20 Principal in month 24

Month 1 arithmetic is easy to check independently: 12,000 ร— (6% รท 12) = 60 interest. The periodic loan payment is about 531.847323, so the principal component is 531.847323 โˆ’ 60 = 471.847323. Calc displays that outgoing principal as โˆ’471.847323. Later payments devote more to principal because the outstanding balance is declining.

Copyable cell-based version

Create a new Calc sheet and enter this small model:

Cell Description Enter
B1 Annual nominal interest 6%
B2 Payments per year 12
B3 Loan principal 12000
B4 Years 2
B5 Periodic rate =B1/B2
B6 Number of payments =B2*B4
B7 Regular payment =PMT(B5;B6;B3)
B8 First principal payment =PPMT(B5;1;B6;B3)
B9 First interest payment =IPMT(B5;1;B6;B3)
B10 Check =B8+B9-B7

Expected results are B7 โ‰ˆ โˆ’531.847323, B8 โ‰ˆ โˆ’471.847323, B9 = โˆ’60, and B10 โ‰ˆ 0. Tiny floating-point residuals around zero are possible. For a display-only check, use =ROUND(B8+B9-B7;10), which is expected to return 0 from the saved reconciliation value; that ROUND formula was not separately native executed. The saved Replicable amortization sheet contains this exact ten-row model. The filled 24-period table below is a proposed layout; the saved standalone 24-call sum verifies its expected total.

Example 2: an amortization schedule you can fill down

Start with the preceding model and put these headers in row 13: Period in A13, Principal in B13, Interest in C13, and Total payment in D13.

In row 14 enter:

A14: 1
B14: =PPMT($B$5;A14;$B$6;$B$3)
C14: =IPMT($B$5;A14;$B$6;$B$3)
D14: =B14+C14

In A15, enter =A14+1 and fill that formula down through A37. Copy the three formulas from B14:D14 down through B37:D37. The period column then contains 1 through 24, and the absolute $B$ references keep the loan assumptions fixed.

Because there are 24 payments and a zero future-value target, the unrounded principal portions add up to approximately โˆ’12,000:

=SUM(B14:B37)

As a standalone validation independent of the filled table, 24 explicit PPMT calls summed in native Calc also returned approximately โˆ’12,000. Display rounding of each individual payment can introduce a small difference when adding individually rounded cents; do not round the underlying amortization arithmetic unless your real-world lender’s contract does so.

For a visual chart, plot period A14:A37 against the negative principal and negative interest series (or use =-B14 and =-C14 to display positive payment components). The principal share grows as the interest share declines.

Example 3: a 30-year mortgage

For a principal of 200,000 over 360 monthly payments at a nominal 6% annual rate, the monthly periodic rate is 6%/12.

=PPMT(6%/12;1;360;200000)
=PPMT(6%/12;120;360;200000)
=PPMT(6%/12;360;360;200000)

Native Calc 25.2.3.2 results, rounded to cents, are โˆ’199.10, โˆ’360.44, and โˆ’1,193.14 respectively. The full periodic payment from PMT is approximately โˆ’1,199.10. The very first payment devotes 1,000 to interest (200000*0.06/12); later payments devote much more to principal. This is a mathematical fixed-rate illustration, not a quote for a real mortgage product or a model of lender-specific compounding/fees.

Example 4: zero interest and beginning-of-period payments

At a 0% periodic rate, with 1,200 repaid across 12 payments, each payment is entirely principal:

=PPMT(0;5;12;1200)

Native result: โˆ’100. This was independently confirmed, despite wording in the ODF OpenFormula 1.3 specification suggesting the rate should be positive. For a zero-interest scenario, PPMT correctly behaves like a simple evenly divided payment in the tested Calc version.

Changing payment timing also changes the schedule. For a positive 12,000 loan at 6% nominal annual interest over 24 months, compare:

=PPMT(6%/12;1;24;12000;0;0)  โ†’ โˆ’471.847323...
=PPMT(6%/12;1;24;12000;0;1)  โ†’ โˆ’529.201316...

With Type=1, the first payment occurs at the beginning of the first period, before any interest accrues. Native IPMT for the first beginning-of-period payment was 0, using =IPMT(6%/12;1;24;12000;0;1). Subsequent payments still contain an interest portion.

Advanced case: a nonzero future value

The optional FV parameter changes the payment needed to reach the desired signed future value at the end. Its sign follows annuity cash-flow conventions, so a positive FV should not be naively interpreted as an unpaid balance of the same sign as a positive borrowed principal. Check the sign of the transaction and the balance you intend to model.

LibreOffice’s official Help includes a beginning-of-period example:

=PPMT(8.75%/12;1;36;5000;8000;1)

Calc 25.2.3.2 returned โˆ’350.992937… (about โˆ’350.99). It is reproducible, but do not substitute an intended positive remaining mortgage balance for the final 8000 without understanding the cash-flow convention. For an ordinary fully paid loan, omit FV or use 0.

Errors, unexpected results, and troubleshooting

Symptom Common cause Correction / tested evidence
Err:502 in Calc 25.2.3.2 Invalid argument, such as Period=0, Period>NPer, or NPer=0 Use a positive payment count and 1 โ‰ค Period โ‰ค NPer; all three invalid cases were run natively.
Err:511 Insufficient required arguments, for example =PPMT() or =PPMT(0.05) Supply the first four required arguments. These two cases were run natively.
#VALUE! An incompatible text value in a numeric argument =PPMT("not a rate";1;12;1000) produced #VALUE! in the native test.
An unexpectedly tiny principal value Rate entered as 5 instead of 5% or 0.05 The formula interprets 5 as 500% per period. Use deliberate percentage units.
Sign appears backwards Positive PV results in outgoing negative payments Use =-PPMT(...) only for displaying a positive amount repaid; keep consistent signs when combining financial functions.
The result isn’t your bank statement Different periodic rates, compounding, fees, calendar conventions, intermediate rounding, or extra payments Check the loan contract and payment frequency. PPMT is a constant-rate annuity model, not a substitute for lender details.
Wrong payment period Annual rate paired with a monthly NPer, or a period outside 1 through NPer Convert rates and period counts to consistent units and check Period.
Formula parse error after pasting Different argument or decimal separators Adapt the formula to your Calc locale and formula settings.

Version-sensitive findings: avoid depending on permissive inputs

The following are native Calc 25.2.3.2 observations, not promises of portable behavior:

  • Period=NPer worked in the last repayment period. The current LibreOffice Help explicitly describes that case, although the OASIS OpenFormula 1.3 section prints a stricter inequality 0 < Period < Nper. Prefer the documented LibreOffice Help behavior for Calc and check version differences when portability matters.
  • A fractional Period=1.5 and a noninteger NPer=12.5 returned numeric results, even though the ODF PPMT signature uses integer period/count arguments. Use whole periods in shared workbooks.
  • Type=2 and Type=-1 returned numeric results in this version, but the documented payment types are only 0 and 1. Use only those supported values.
  • =PPMT(0.05;1;12;1000;;1) was accepted by the tested engine even though LibreOffice Help’s general rule discourages omitting a middle optional argument. Use the more explicit =PPMT(0.05;1;12;1000;0;1).
  • A negative PV produced a positive principal result. Negative interest-rate values also produced numeric results in some tests, notwithstanding restrictive wording in OpenFormula. Negative-rate finance has special assumptions; don’t assume it is portable without targeted verification.

These differences are documented in the archived test results so they can be rechecked against later Calc releases. In particular, the LibreOffice 26.8 Help website was examined, but LibreOffice 26.8 itself was not executed for this guide.

Function Use it to calculate Relationship to PPMT
PMT Total fixed regular payment In a consistent model, PMT = PPMT + IPMT.
IPMT Interest part of a payment Complement to the principal part from PPMT.
CUMPRINC Principal paid over a consecutive period range Useful instead of manually summing many PPMT periods; confirm timing conventions.
PV Present value for a stream of payments Can be used to solve for an initial principal under an annuity model.
FV Future value Models the signed target balance of the payment stream.
NPER Number of repayment periods Supports planning a period count from other annuity inputs.

Does PPMT work in Microsoft Excel and Google Sheets?

Yes, at the level of the documented core function and argument order. Both Microsoft Excel and Google Sheets have official PPMT documentation showing the same six conceptual arguments: periodic rate, payment period, number of periods, present value, optional future value, and optional payment type. Excel’s common English syntax uses commas:

=PPMT(6%/12,1,24,12000)

The tested Calc examples above use semicolons. Google Sheets’ English Help also uses commas. Whether a pasted formula needs separators changed depends on the configured locale. Neither Excel nor Google Sheets was executed in this review. The compatibility finding is based on their official product documentation, not observed cross-application output or unsupported promises about edge cases and negative rates.

Verification and sources

Native execution (observed): 45 numerical assertions passed out of 45 using real LibreOffice Calc 25.2.3.2 on Linux, controlled by UNO. A further 16 inputs were observed to document errors and version-dependent edge behavior; they are diagnostics, not additional passing assertions. The saved ODS, script and raw results support these historical observations.

Independent calculations (expected): A separately implemented amortization recurrence and annuity payment equation computed the expected principal payment for every full loan scenario. Differences from Calc were compared with an absolute tolerance of 1ร—10โปโท and a relative tolerance of 1ร—10โปโน. This is independent numerical cross-checking, not a claim of cross-application testing.

Documentation checks (not native execution of the vendor release): The current LibreOffice 26.8 Help, the OpenDocument 1.3 OpenFormula specification, Microsoft Excel Support, and Google Sheets Help were checked 2026-10-12. These are documentation checks, separate from the recorded native tests.

Official references, with the principal claims they support:

  1. LibreOffice 26.8 Help โ€” Financial Functions Part Two (PPMT and PMT): official function descriptions, syntax, required/optional arguments, payment types, final-period example, and the published FV worked example. Accessed 2026-10-12.
  2. LibreOffice 26.8 Help โ€” Financial Functions Part Three (IPMT): companion interest-payment formula and syntax. Accessed 2026-10-12.
  3. OASIS โ€” OpenDocument Format 1.3, Part 4 (OpenFormula), ยง6.12.37 PPMT: typed argument signature, defaults, and the noted period/rate constraints (some differ from native Calc or current Help). Accessed 2026-10-12; specification stage cs02, not a substitute for executable Calc results.
  4. Microsoft Excel PPMT function: documented Excel argument order, periodic-rate units, default future value, and 0/1 payment timing. Accessed 2026-10-12; documentation check only.
  5. Google Sheets PPMT function: documented Sheets argument order and periodic-rate guidance. Accessed 2026-10-12; documentation check only.