ForHosting KIT · Finance & money

Balance transfer calculator

Move 5,000 from a card at 24% to a 0% offer with a 3% fee, pay it off in 12 months, and you save 523.58 even after the 150 fee. Enter your own five figures to see whether a transfer really pays. 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
Balance
5,000
Old apr
24
New apr
0
Transfer fee
3
Payoff months
12
You get
Transfer fee amount
150
New balance
5,150
Old monthly payment
472.8
New monthly payment
429.17

A promotional APR on a new card looks like free relief, but a balance transfer only saves money if the interest you avoid on the old card exceeds the transfer fee plus any interest that still accrues on the destination card. This balance transfer calculator takes five numbers: the current revolving balance, the old APR, the new APR, the transfer fee as a percent of the moved amount, and the number of months you will take to pay the debt in full. It amortizes both paths with equal monthly payments, finances the fee into the new principal, and returns the net dollar savings of transferring versus staying put.

How a balance transfer actually costs money, and how savings are computed

A balance transfer moves revolving credit-card debt from one issuer to another, usually to capture a lower promotional APR. The advertised rate is not the whole cost: almost every consumer offer charges a transfer fee of three to five percent of the amount moved, and that fee is typically posted as a new charge on the destination card, so you pay interest on the fee whenever the new APR is above zero. This calculator compares two equal-payment amortization schedules over the same payoff horizon.

On the old card the principal is the current balance and the monthly rate is the old APR divided by twelve. On the new card the principal is the current balance plus the transfer fee (balance times the fee percent over one hundred) and the monthly rate is the new APR divided by twelve.

Each schedule uses the standard installment formula: monthly payment equals principal times r times (1+r) to the n, divided by ((1+r) to the n minus one) when r is positive, or principal divided by n when the APR is zero. Total paid is the payment times n; interest is total paid minus principal. Net savings equal old total paid minus new total paid, which is the same as old interest minus new interest minus the fee.

A positive savings figure means transferring is cheaper over that horizon; a negative figure means the fee and leftover new-card interest wipe out the APR cut, so staying put costs less. The horizon is a first-class input because a zero-percent intro that lasts twelve months is a different product from one that lasts twenty-one months, and paying the debt after a promotional window at a reverted APR is outside this model: you supply the months you will actually take to clear the balance.

Compare a 0% intro offer before you apply

Enter the current balance, the old APR, the advertised new APR, the transfer fee percent, and the months you can realistically pay off to see whether the move beats staying put.

Counseling and classroom demos

Show a client or a class how a 5% fee plus leftover new-card interest can wipe out a modest APR cut when the payoff window is short.

How is the balance transfer fee counted?

The fee is the moved balance times the fee percentage, and it is added to the debt on the new card. If the new APR is above zero you pay interest on the fee too; on 5,000 at 3% the fee is 150.

Can a balance transfer cost more than staying put?

Yes. When the fee and the interest still charged on the new card outweigh the interest you avoid, the savings come out negative, which means keeping the debt where it is costs less over that horizon.

How many payoff months should I enter?

The months you will really take to clear the debt. A 0% offer that lasts twelve months is a different deal from one that lasts twenty-one, and paying after the promotion at a higher rate is not part of this comparison.

What balance transfer fee is typical?

Almost every consumer offer charges three to five percent of the amount moved. The fee usually appears as a new charge on the destination card, which is why it is added to the balance you pay off there.

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/balance-transfer

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/balance-transfer \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"balance":5000,"old_apr":24,"new_apr":0,"transfer_fee":3,"payoff_months":12}'
{
  "balance": 5000,
  "old_apr": 24,
  "new_apr": 0,
  "transfer_fee": 3,
  "payoff_months": 12
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "fin.balance_transfer",
  "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.

When payoff months is zero the request fails with invalid_input and is not billed, because a zero-month horizon cannot amortize a revolving balance.

Input contract, response shape, and the zero-month error

Failed jobs are not billed. Money fields use half-up rounding to cents so goldens stay stable across runtimes. Example: five thousand dollars at 24 percent versus a zero-percent card with a 3 percent fee over twelve months finances a 150 dollar fee, drops the monthly payment, and returns a positive savings figure because avoided old-card interest exceeds the fee. POST a JSON body with five required finite numbers: balance greater than zero (the amount you intend to move; alias amount), old_apr greater than or equal to zero as a percent such as twenty-four for 24 percent (aliases current_apr, old_annual_rate_percent), new_apr greater than or equal to zero for the destination card (alias new_annual_rate_percent; use zero for a classic intro offer), transfer_fee greater than or equal to zero as a percent of the moved balance such as three for 3 percent (aliases transfer_fee_percent, fee), and payoff_months as a whole number from one to six hundred (alias months). Each field may arrive as a JSON number or as a numeric string. Missing fields, empty strings, non-finite values, negatives where forbidden, and a payoff horizon that is not an integer in range fail with invalid_input naming the field. The hard product rule is that payoff_months cannot be zero: a zero-month schedule cannot amortize a revolving balance, so the task fails instead of inventing an infinite payment or a silent no-op. On success the body echoes the five inputs, reports transfer_fee_amount and new_balance (original balance plus the financed fee), old_monthly_payment and new_monthly_payment, old_interest and new_interest, old_total_paid and new_total_paid, the primary savings figure, worth_transferring as true when savings is strictly positive, and a short formula string restating the compare.

Where a balance transfer calculator earns its keep

Households use a balance transfer calculator the night before they apply, when a mailer promises zero percent for fifteen months and a three percent fee: they want one number that says whether moving a five-thousand-dollar store-card balance actually beats staying at twenty-four percent if they can pay it off in a year. Nonprofit counselors and coaches put the same five fields on a screen during a session so a client can see a negative savings result when the fee is five percent, the new APR is not zero, and the payoff window is short—without building a spreadsheet from scratch. Content teams can embed the twelve-month zero-percent example next to a second scenario with a mid-single-digit new APR and a five percent fee so readers feel how the fee can erase the headline rate. Developers wire the endpoint into debt dashboards, offer-comparison cards, and email drips that warn when worth_transferring is false. Pair it with your own advice copy if you need coaching language—the API returns the savings and the two schedules, not legal, tax, or credit-score guidance, and it will not tell you whether you will be approved.

Debt dashboards and offer cards

Call the same JSON contract from scripts and landing widgets at $0.002 per success to flag offers where worth_transferring is false.

How does the balance transfer calculator compute savings?

It amortizes the current balance at the old APR and the balance-plus-fee at the new APR over the same payoff_months, then subtracts the new total paid from the old total paid. That difference is savings.

Is the transfer fee added to the new balance?

Yes. transfer_fee is a percent of the moved amount; transfer_fee_amount is financed into new_balance so any new-card interest also accrues on the fee.

What happens if payoff_months is zero?

The task fails with invalid_input. A zero-month horizon cannot amortize a revolving balance, and the failure is not billed.

Can savings be negative?

Yes. A high fee, a new APR that is not much lower, or a short payoff window can make transferring more expensive. worth_transferring is true only when savings is greater than zero.

What does the balance transfer calculator cost?

The browser widget is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid_input failures are not billed.

Read the full KIT documentation →