ForHosting KIT · Finance & money

Effective interest rate calculator

Put in 1,000 and get back 1,210 after 2 periods, and the effective interest rate is 10% per period. Enter both amounts and the period count to back out the rate on a deposit, a loan or a zero-coupon bond. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Present value
1,000
Future value
1,210
Periods
2
You get
Interest rate
10
Rate decimal
0.1

Rearranged, r equals the nth root of future value over present value, minus one. Students, analysts, lenders, and product teams use an effective interest rate calculator to recover that periodic rate from three numbers — present value, future value, and the period count — without iterating a spreadsheet RATE function or guessing a yield.

How the effective interest rate turns present value, future value, and periods into r

The implied effective interest rate of a single lump that grows or shrinks from a present amount to a future amount is the periodic rate r that satisfies present value times one plus r to the power of n equals future value. Solving for that rate is not an iteration and not a cash-flow internal rate of return: it is the closed form r equals future value divided by present value, raised to one over n, minus one.

When the future amount is larger than the present amount the rate is positive; when it is smaller the rate is negative, which this calculator still reports as long as both lumps are non-negative and present value is not zero. A negative present value or a negative future value is also rejected, because a signed lump would mix a financing sign convention into a three-number growth identity that this landing treats as two non-negative amounts.

Periods must be a finite number strictly greater than zero, including fractional horizons when the holding period is not a whole number of steps. The identity is the same rearrangement textbooks write for compound interest solved for r, and it is the same rearrangement used to quote a holding-period yield on a zero-coupon instrument that has no coupons to reinvest.

This calculator does not take a stream of cash flows, does not convert a nominal annual quote into an effective annual rate, and does not apply a day-count convention: you supply one present lump, one future lump, and a period count, and it returns the unique real rate per period that compounds one into the other.

Textbook TVM checks

Recover the periodic effective interest rate from a present lump, a future lump, and n so homework and exam keys match the closed form r = (FV/PV)^(1/n) - 1.

Zero-coupon implied yield

Back out the rate per compounding period from today's price and a known redemption amount without building a coupon schedule or an IRR loop.

How is the effective interest rate calculated from present value and future value?

Both are rounded half-up for stable comparison across runtimes.

Is the result annual, monthly, or something else?

It is the rate per period you counted. If periods is years, the rate is per year; if periods is months, the rate is per month. The calculator does not convert an annual rate to a monthly rate or apply a day-count convention.

Is this the same as EAR, CAGR, NPV, or a compound-interest calculator?

No. An EAR landing converts a nominal annual percent and a compounding frequency into an effective annual rate. A CAGR landing is searched for annualized growth language. NPV and DCF discount a stream of cash flows at a rate you already chose. Compound interest takes the rate as an input and returns a future balance. This tool solves the reverse TVM identity for r from PV, FV, and n.

Can I use it for the yield of a zero-coupon bond?

Yes. Enter today's price as the present value, the amount repaid at maturity as the future value and the number of compounding periods until then. You get the rate per period without building a coupon schedule.

What if I get back less than I put in?

The rate comes out negative, and it is still reported. Both amounts must be zero or positive and the present value must be above zero; a negative amount on either side is rejected.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/fin/effective-interest-rate

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/fin/effective-interest-rate \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"present_value":1000,"future_value":1210,"periods":2}'
{
  "present_value": 1000,
  "future_value": 1210,
  "periods": 2
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "fin.effective_interest_rate",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

The implied effective interest rate per period is the unique r that compounds a present lump into a future lump over a known number of periods: present value times one plus r to the power of n equals future value. This endpoint accepts present_value, future_value, and periods, returns the rate per period as a percent together with the decimal form, and fails with invalid_input when present value is zero or when either value is negative.

How the effective interest rate turns present value, future value, and periods into r

When present_value is one thousand, future_value is one thousand two hundred ten, and periods is two, the ratio is 1.21, the square root is 1.1, and the rate is ten percent per period. A zero present value makes the ratio undefined, so the request is rejected rather than returning infinity.

Input contract, response shape, and error behaviour

Example: one thousand present, one thousand two hundred ten future, and two periods yield a rate of ten. POST a JSON body with three required finite numbers. present_value is the lump today in one currency unit; aliases pv, present, and principal map to the same field so a worksheet can keep its column names. It must be strictly greater than zero: a missing, empty, non-finite, zero, or negative present value fails with invalid_input naming the field, and those failures are not billed. future_value is the lump at the end of n periods in that same currency; aliases fv, future, and amount are accepted; a negative future value is rejected because this identity is defined on non-negative amounts. A future value of zero is allowed and yields a rate of minus one hundred percent per period, the complete loss of the present lump. periods is the number of compounding periods n; aliases n, nper, and number_of_periods are accepted; fractional periods are allowed when the horizon is not a whole number of steps. If periods is zero, negative, or otherwise not strictly greater than zero, the request fails because the exponent one over n is undefined. Each numeric field may arrive as a JSON number or a numeric string. On success the body echoes present_value, future_value, and periods, then reports rate as a percentage rounded half-up to eight decimal places, rate_decimal as the same rate as a fraction rounded half-up to ten decimal places, and a formula string restating r equals (FV/PV) to the power of one over n, minus one. Pair the JSON with your own rule for what a period means — a year, a month, a quarter — because this endpoint returns the rate per period you counted; it does not convert an annual rate to a monthly rate or the reverse.

Where an effective interest rate calculator earns its keep

Exam prep and classroom drills use an effective interest rate calculator to recover r from a textbook present value, future value, and n so the printed yield matches the closed form instead of a rounded spreadsheet guess. Zero-coupon and strip desks back out the periodic rate implied by today's price and a known redemption amount over a known number of compounding steps, then pin rate in a ticket so every conversation starts from one number. An effective-interest-rate landing answers the reverse TVM question: given PV, FV, and n, what is r per period. Failed validation does not consume balance. Product teams and FP&A templates recompute the implied rate when a future payout or a holding period changes mid-model; a tiny parse API avoids reinventing the power identity in every workbook. This is a different search and a different job from an EAR calculator, which converts a nominal annual percent and a compounding frequency into an effective annual rate without ever seeing a present or future lump; from a compound-interest calculator, which takes the rate as an input and returns a future balance; from a CAGR calculator, which people search when they want annualized growth language rather than a TVM effective rate; and from a DCF or NPV calculator, which discounts a stream of cash flows at a rate you already chose. Keep present_value positive, keep future_value non-negative, keep periods strictly positive, pin the rounded percentage in tests, and you get a reproducible implied rate for homework, LMS plugins, and edge workers without standing up a full time-value-of-money engine of your own.

Workbook and API parity

Recompute the implied rate when a future payout or a holding period changes, using the same pure module in the browser widget and the prepaid API.

What happens if present value is zero or either value is negative?

The task fails with invalid_input. present_value (aliases pv, present, principal) must be a finite number that is not zero and not negative, because r = (FV/PV)^(1/n) - 1 is undefined at zero and this identity is defined on a positive present lump. future_value must not be negative. Those failures are not billed.

What does the effective interest rate calculator cost?

The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.

Read the full KIT documentation →