Credit card payment calculator
Plan around the payment you can really make: 200 a month on a 5000 balance at 19.99% clears the card in 33 months and costs 1521.01 in interest. Try a larger amount to see how much sooner you finish. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Balance
- 5,000
- Annual rate
- 19.99
- Payment
- 200
- Monthly rate
- 0.0166583333
- First month interest
- 83.29
- Months
- 33
- Total interest
- 1,521.01
A planned credit card payment is not a loan installment with a known term. Interest is taken first each month, and only the leftover slice of the amount you send reduces the revolving balance. People who search for a credit card payment calculator want two pinned numbers from a statement balance, an annual interest rate, and the payment they can actually make: how many months that payment takes to clear the card, and how much interest that path will cost.
How a planned monthly payment clears a revolving card
A revolving credit card is not an installment note with a published term. The issuer assesses interest each month on the remaining balance at the contractual monthly rate, which is the annual interest rate divided by one hundred and then by twelve, and only the leftover slice of your planned payment reduces principal. Months to payoff is the number of those periods until the balance reaches zero at a constant payment.
Total interest is the sum of every monthly interest charge along the way, not the headline annual rate, and not a simple-interest product of balance times rate times years, because the principal is falling. Early months are interest-heavy; later months are principal-heavy. If the payment does not exceed the first month of interest, principal never moves: that is the classic minimum-payment trap, and this calculator refuses to return an infinite or fabricated schedule.
The last installment is usually smaller than the regular payment because it only needs to clear leftover principal plus that month's interest. Households use months and interest together: months answers when they will be done, interest answers what that planned payment actually cost. Zero annual rate is supported: months then collapse to the ceiling of balance divided by payment and total interest is zero.
What you can do with it
Household payment planning
Turn a statement balance, annual rate, and planned monthly payment into months until the card is clear and the interest that path will cost.
Compare payment sizes
Sweep payment across two or three budget levels to show how a larger monthly amount shortens the calendar and cuts total interest.
Counseling and education pages
Reject a payment that does not exceed monthly interest instead of drawing an infinite schedule, so clients see the minimum-payment trap as an error.
FAQ
How many months will my planned payment take to clear the card?
Enter the balance, the annual rate and your monthly payment. Paying 200 a month on 5000 at 19.99% takes 33 months, with 1521.01 of interest and 6521.01 paid in total.
What if my card charges 0% interest?
A zero rate works too. The number of months is simply the balance divided by the payment, rounded up to a whole month, and the total interest is zero.
How much does a bigger monthly payment help?
Run the same balance and rate with two or three payment sizes. A larger monthly amount shortens the calendar and cuts the total interest, because less of each payment goes to interest.
Why won't it accept a payment that only covers the interest?
If the payment does not exceed the first month's interest, the balance never falls. That is the minimum-payment trap; on 5000 at 19.99%, the first month's interest is 83.29.
Related tools
For developers — API access
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.
API endpoint
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.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/fin/credit-card-payment \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"balance":5000,"annual_rate":19.99,"payment":200}'const res = await fetch("https://api.kit.forhosting.com/fin/credit-card-payment", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"balance": 5000,
"annual_rate": 19.99,
"payment": 200
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/credit-card-payment",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"balance": 5000,
"annual_rate": 19.99,
"payment": 200
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/credit-card-payment", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"balance":5000,"annual_rate":19.99,"payment":200}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"balance":5000,"annual_rate":19.99,"payment":200}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/credit-card-payment", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"balance": 5000,
"annual_rate": 19.99,
"payment": 200
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.credit_card_payment",
"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.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_months | 600 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
This calculator walks a monthly compounding schedule from those three inputs, returns months to payoff and total interest, and fails with invalid_input when the payment does not exceed the first month of interest so a never-ending balance is never dressed up as a result.
How a planned monthly payment clears a revolving card
This endpoint models a simple monthly compounding schedule with currency rounding to cents, not average-daily-balance, grace periods, late fees, or new purchases. It answers the worksheet question from a snapshot balance, annual rate, and planned payment so a budget can be compared against a larger payment without building a spreadsheet of hundreds of rows by hand.
Input contract, monthly walk, and error behaviour
Money inputs are rounded half-up to cents before the walk. Example: a five-thousand balance at 19.99 percent with a two-hundred payment covers about eighty-three of first-month interest and pays off in a finite number of months with a smaller final installment. A walk that would exceed six hundred months is rejected so a payment that barely beats interest cannot run unbounded. POST a JSON body with three required finite numbers. balance is the current revolving amount and must be strictly greater than zero; aliases principal, amount, and card_balance map to the same field. annual_rate is the nominal annual interest rate as a percent, so nineteen point ninety-nine means 19.99 percent per year, not a decimal fraction, and must be greater than or equal to zero; aliases apr, rate, and annual_percentage_rate. payment is the fixed amount applied each month and must be strictly greater than zero; aliases monthly_payment, monthly, and pmt. Each numeric field may arrive as a JSON number or a numeric string. The engine forms the monthly rate r as annual_rate divided by one hundred divided by twelve, charges first-month interest equal to balance times r, and rejects the request with invalid_input naming payment when that payment does not exceed monthly interest, because the balance would never fall. Missing fields, empty strings, non-finite values, non-positive balance or payment, and a negative annual_rate fail the same way and are not billed. On success the body echoes the three inputs, reports monthly_rate and first_month_interest, then months until the card is clear, total_interest as the sum of monthly charges, total_paid, last_payment, and a short formula string.
Where a credit card payment calculator earns its keep
Households and budgeting apps use a credit card payment calculator to turn a statement balance, a purchase annual rate, and a planned payment into two pinned numbers: months until the card is clear, and the interest that payment path will cost. Counselors and education pages run the same three fields at two or three payment sizes so a client can see how a larger payment shortens the calendar and cuts interest without building a custom amortization sheet. Failed validation does not consume balance. Product teams and LMS plugins post balance, annual_rate, and payment, then assert months and total_interest so a grader or onboarding flow never treats a payment that fails to exceed monthly interest as a success. Keep the payment strictly above first-month interest, pin the rounded months and total_interest in tests, and you get a reproducible revolving payment schedule for homework, counseling, and edge workers without standing up a card-core of your own. This tool does not apply new purchases, promotional remaining-month clocks as a separate product, cash-advance rates, or issuer minimum-payment formulas from a cardholder agreement — only the snapshot walk from balance, annual rate, and a fixed monthly payment.
Technical questions
How do I compute months and total interest from a credit card payment?
Send balance, annual_rate as a percent, and payment. The API walks a monthly schedule at r = annual_rate/100/12 and returns months until the balance is zero plus total_interest as the sum of monthly charges.
What happens if my payment does not exceed monthly interest?
The task fails with invalid_input. A payment at or below the first month of interest never reduces principal, so the calculator will not invent a payoff date and the request is not billed.
Does a zero annual rate still return months?
Yes. With annual_rate of zero there is no monthly interest, months is the ceiling of balance divided by payment, total_interest is zero, and the last installment may be smaller than the regular payment.
Is the last payment always equal to my planned payment?
No. The final installment is leftover principal plus that month's interest, which is usually smaller than the regular payment. total_paid is the sum of every installment including that last one.
What does the credit card payment calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.