← Keuangan & uang

Finance - Debt payoff

Credit Card Payoff & Debt Snowball Calculator

See when you can become debt-free and how much interest you can save by changing your repayment strategy.

Sample values auto-calculate on load so you see results instantly. All calculations stay in your browser until you choose "Copy URL".

Bahasa lain ja | en | zh-CN | es | pt-BR | id | fr | hi-IN | ar

How to use (3 steps)

  1. Choose whether you are paying off one card or comparing snowball vs. avalanche for multiple cards.
  2. Enter balances, APRs, and your monthly payment or total budget. Add card rows as needed; keep the budget at least the sum of minimums.
  3. Results refresh automatically. Use "Copy URL" to share the same setup with a teammate or advisor.

Currency is cosmetic; type numbers without symbols in the amount fields.

Inputs

Adjust one number at a time to see how the payoff timeline shifts.

Shown only as a prefix in results.

Make sure the payment is larger than the first month's interest to avoid negative amortization.

Cards

Card nameBalanceAPR (%)Minimum payment

Must be at least the sum of minimum payments across all cards.

Repayment strategy

Results

"Time to payoff" converts the total months into years + months for easier planning.

This means: payoff time counts full months until the balance hits zero. Total paid = principal + interest.

How it's calculated

Single card

Each month we add interest (balance x APR / 12, rounded to cents), then subtract your monthly payment. If the payment is bigger than the remaining balance + interest, we cap it to finish that month.

Multiple cards

We first pay every card's minimum, then send any remaining budget to one card at a time based on the chosen strategy (snowball = smallest balance first, avalanche = highest APR first). When a card is paid off, its payment rolls to the next card.

Real statements may use daily balances, fees, or promotions. Treat this as a planning estimate rather than a statement preview.

FAQ

What is the difference between debt snowball and debt avalanche?

Snowball focuses on the smallest balance first, giving quick wins and rolling freed-up payments to the next card. Avalanche targets the highest APR first to reduce total interest.

What happens if my monthly budget is too small?

If the sum of minimum payments exceeds your budget, or the debts are still unpaid after the limit, the tool shows an error. Increase the budget or adjust balances to get a repayable plan.

Does this match my issuer's exact statement?

No. This uses a simple monthly model without daily balance math, fees, or promo rates. Use it to plan and compare strategies, not to predict an exact statement.

Is my data stored or sent to a server?

Everything runs in your browser. Nothing is sent unless you intentionally share the scenario using the Copy URL button.

How many cards should I add?

Add as many as help you plan. Keep totals manageable so your monthly budget comfortably covers the minimum payments.

Related calculators

, defaultSingle: { balance: 5000, apr: 15, payment: 200 }, defaultMulti: { budget: 400, strategy: 'snowball', cards: [ { name: 'Card A', balance: 500, apr: 18, minPayment: 25 }, { name: 'Card B', balance: 2500, apr: 15, minPayment: 50 }, { name: 'Card C', balance: 4000, apr: 22, minPayment: 100 } ] }, formatDuration: (years, months, total) => years > 0 ? `${years} year${years>1?'s':''} ${months} month${months!==1?'s':''} (${total} months)` : `${months} month${months!==1?'s':''}`, texts: { cardNamePlaceholder: 'Card name', balanceLabel: 'Balance', aprLabel: 'APR (%)', minPaymentLabel: 'Minimum payment', removeLabel: 'Remove', mainLabel: 'Time to payoff', totalInterest: 'Total interest', totalPaid: 'Total paid', paymentsCount: 'Number of months', scheduleFirst: 'First 3 months', scheduleLast: 'Final month', monthLabel: 'Month', paymentLabel: 'Payment', interestLabel: 'Interest', principalLabel: 'Principal', allPaidLabel: 'All cards paid off in', perCardHeading: 'Per-card details', perCardName: 'Card', perCardPayoff: 'Payoff month', perCardInterest: 'Total interest', perCardPaid: 'Total paid', perCardOrder: 'Order', strategySnowball: 'Debt snowball', strategyAvalanche: 'Debt avalanche', compareHeading: 'Strategy comparison', strategyLabel: 'Strategy', monthsLabel: 'Months to payoff', budgetHint: 'Budget check updates as you adjust cards.', budgetEmpty: 'Add at least one card to see the budget check.', budgetMinLabel: 'Minimum payments total', budgetNeedBudget: 'Enter your monthly budget to see what is left for the focus card.', budgetShortfall: 'Short by {amount} versus your budget.', budgetExtra: '{amount} left after minimums to accelerate the focus card.', bestStrategyTitle: 'Strategy tip', negativeDetailed: 'Monthly payment is too low. First-month interest is about {interest}; increase your payment above that.', bestStrategyText: ({ bestName, diffMonths, interestDiff, interestDirection }) => { const monthsPart = diffMonths > 0 ? `${bestName} finishes about ${diffMonths} month${diffMonths === 1 ? '' : 's'} sooner` : `${bestName} ties on timing`; let interestPart = 'with similar interest.'; if (interestDirection === 'less') interestPart = `and saves about ${interestDiff} in interest.`; if (interestDirection === 'more') interestPart = `but costs about ${interestDiff} more in interest.`; return `${monthsPart} ${interestPart}`; }, errors: { invalid: 'Please enter positive amounts and an APR between 0% and 100%.', negative: 'Monthly payment is too low to reduce the balance. Increase it above the first month\'s interest.', budget: 'Budget is below the sum of minimum payments. Increase it so every card gets its minimum.', limit: 'With this budget the balances cannot be cleared within the limit. Increase the monthly budget.', balance: 'Enter a balance greater than 0.', apr: 'Enter an APR between 0% and 100%.', minPayment: 'Enter a minimum payment greater than 0.', noCards: 'Enter at least one card.' }, singleExplain: ({ duration, totalInterest, totalPaid, payment }) => `At ${payment} per month, you would finish in ${duration} and pay about ${totalInterest} in interest (${totalPaid} total).`, multiExplain: ({ duration, totalInterest, strategy }) => `Using ${strategy === 'avalanche' ? 'debt avalanche' : 'debt snowball'}, all balances clear in ${duration} with about ${totalInterest} in interest.`, cardFallback: 'Card' } }); renderRelated({ locale: 'id', selfUrl: '/id/calculators/credit-card-payoff-snowball/', category: 'finance' }); if (window.recordCalculatorVisit) window.recordCalculatorVisit('credit-card-payoff-snowball'); });