ForHosting KIT · Finance & money

APR calculator

A 12% nominal rate compounded monthly really costs 12.6825% a year, 0.6825 points more than the headline. Turn any lender's quote into its effective annual rate before you compare offers or work out payments. 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
Nominal rate
0.12
Compounding periods
12
You get
Apr
0.126825
Apr percent
12.6825
Effective vs nominal points
0.6825

A 12% nominal rate compounded monthly is not 12% a year; it is more, and the difference grows with every additional compounding period. Send the rate as a decimal and the number of periods per year, and you get back the effective APR, the same figure expressed as a percentage, and the gap between nominal and effective in percentage points.

Why nominal rate and APR are not the same number

Lenders quote a nominal annual rate because it looks smaller. That number only tells the truth when interest is added once a year. The moment interest is added monthly, daily or continuously, each period's interest starts earning interest of its own, and the amount you actually pay over twelve months exceeds the headline figure.

The effective annual percentage rate is the honest number: it folds the compounding into a single yearly rate, so a 12% nominal rate compounded monthly becomes about 12.68%, and the same rate compounded daily becomes about 12.75%. If you are comparing offers, building an affordability check, or auditing a contract, this is the conversion you perform first, before any monthly-payment or amortization math, because every downstream calculation inherits the error if you start from the nominal rate.

Regulators in most jurisdictions require lenders to disclose an APR-style effective figure for precisely this reason: the nominal rate alone is systematically misleading, and the compounding frequency is buried in the small print where borrowers rarely look.

How the conversion works

The formula is closed-form and exact: divide the nominal rate by the number of compounding periods per year to get the rate per period, add one, raise it to the power of the periods, and subtract one. For a nominal rate r compounded m times a year, APR = (1 + r/m)^m − 1. The nominal rate may be negative down to −1, which covers deflationary or penalty scenarios; below −1 the formula loses meaning and is rejected.

Alongside the effective APR you get the same figure as a percentage and the difference between nominal and effective in percentage points, so you can quote whichever form your report needs without extra arithmetic on your side.

Where it fits in a lending workflow

Rate comparison is the obvious use: feed every offer you receive through the conversion and rank them by effective cost instead of headline rate. Pricing engines normalize all their product rates to APR before storing them, so downstream quotes never depend on remembering each product's compounding convention. Compliance tooling re-derives the disclosed APR from the contract's nominal rate and compounding clause and flags discrepancies beyond a tolerance.

Financial-content sites compute the effective rate inline next to each product table.

Compare loan offers on equal terms

Convert each offer's nominal rate and compounding frequency to the effective APR and rank by real yearly cost instead of the headline number.

Audit a contract's disclosed APR

Recompute the effective rate from the nominal rate and compounding clause and flag any disclosure that deviates beyond your tolerance.

Normalize rates in a pricing engine

Store every product as an effective APR at ingestion time so quotes and amortization downstream never depend on compounding conventions.

What compounding frequencies can I use?

Any positive integer of periods per year: 1 for annual, 2 for semiannual, 4 for quarterly, 12 for monthly, 365 for daily.

Is the result exact?

The formula is a closed-form power computed in double precision, then rounded to six decimals so the output is byte-identical across machines. The same input always returns the same output.

Can the nominal rate be negative?

Yes, down to −1 (a total loss per period).

Why is the effective APR higher than the nominal rate?

Because each period's interest starts earning interest of its own. Charged monthly, a 12% nominal rate becomes about 12.68% a year, and charged daily about 12.75%, so the gap widens as compounding gets more frequent.

How do I compare two loans that compound differently?

Convert each nominal rate to its effective annual rate and rank the offers by that figure. Comparing headline rates when one loan compounds monthly and another daily is comparing apples to oranges.

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/apr

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/apr \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"nominal_rate":0.12,"compounding_periods":12}'
{
  "nominal_rate": 0.12,
  "compounding_periods": 12
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "fin.apr",
  "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 APR calculator takes the two numbers every loan offer states — the nominal annual interest rate and how often it compounds — and returns the effective annual percentage rate: what the loan actually costs you over a year once compounding is included. It runs entirely in your browser for free, or as an API call at $0.002 per request.

Why nominal rate and APR are not the same number

Comparing two loans by their nominal rates when one compounds monthly and the other daily is comparing apples to oranges; converting both to APR puts them on the same footing, which is exactly what this endpoint does in one call.

How the conversion works

The endpoint applies that directly with double-precision arithmetic and rounds the result to six decimal places so the output is byte-stable across machines. It accepts the nominal rate as a decimal — 0.12, not 12 — and the periods as a positive integer: 12 for monthly, 4 for quarterly, 2 for semiannual, 1 for annual, 365 for daily. Anything that is not a positive integer for the periods — zero, a negative number, a fraction like 2.5, a string — is rejected with an invalid_input error and no charge, because a fractional compounding frequency has no meaning in this formula.

Where it fits in a lending workflow

But the endpoint earns its keep in automation too.

What does it cost?

$0.002 per request. It is also free to run in your browser on this page, with identical results.

How do I pass the rate, as a percent or a decimal?

As a decimal: 0.12 for 12%. The response includes apr_percent, the same result multiplied by 100, so you never need to convert it yourself.

What happens if I send an invalid compounding value?

The request fails with an invalid_input error naming the field, and you are not charged. Invalid input never consumes quota.

Read the full KIT documentation →