{
  "id": "debt-snowball",
  "version": "4c951bec0b96",
  "status": "published",
  "name": "Debt Snowball Calculator",
  "question": "When is my debt snowball done?",
  "summary": "Computes the debt-free date, the payoff order, and the total interest of the debt snowball method (smallest balance first, payments rolled over) for up to ten debts, compared with the avalanche method.",
  "category": "finance",
  "subcategory": "loans",
  "url": "https://www.acalculator.org/finance/debt-snowball-calculator",
  "markdown": "https://www.acalculator.org/finance/debt-snowball-calculator.md",
  "kind": "schedule",
  "method": "Each month: interest = balance × APR ÷ 1200 on every debt; pay each debt its monthly payment; the rest of the budget (all the payments plus the extra) goes to the debts in payoff order, so a paid-off debt’s payment rolls into the next.",
  "assumptions": [
    "Interest is charged monthly on each balance at its APR ÷ 12; rates and payments do not change.",
    "The monthly budget stays the same until every debt is paid off, so the payment of a paid-off debt rolls to the next one.",
    "Snowball order is by the balances you enter (smallest first); avalanche order is by APR (highest first); ties keep the order of the rows.",
    "No new charges are added to the debts.",
    "Values are not rounded to the cent between months; only the display is rounded."
  ],
  "inputs": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "debts": {
        "title": "Your debts",
        "description": "One row per debt: a name, what you owe, the yearly interest rate (APR), and the monthly payment.",
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "name": {
              "title": "Name",
              "description": "A name for the debt, to tell the debts apart.",
              "type": "string",
              "maxLength": 40
            },
            "bal": {
              "title": "Balance",
              "description": "What you owe on this debt today.",
              "type": "number",
              "x-unit": "USD",
              "exclusiveMinimum": 0,
              "maximum": 10000000
            },
            "apr": {
              "title": "APR",
              "description": "The yearly interest rate. The monthly rate is this ÷ 12.",
              "type": "number",
              "x-unit": "percent",
              "minimum": 0,
              "maximum": 100
            },
            "min": {
              "title": "Minimum payment",
              "description": "The monthly payment on this debt, from your statement. It stays the same every month.",
              "type": "number",
              "x-unit": "USD",
              "minimum": 0,
              "maximum": 10000000
            }
          }
        }
      },
      "extra": {
        "title": "Extra each month",
        "description": "An amount paid every month on top of all the minimum payments, to the debt the method picks.",
        "type": "number",
        "x-unit": "USD",
        "minimum": 0,
        "maximum": 10000000
      },
      "start": {
        "title": "Start date",
        "description": "The day you start the plan. The first payment is one month later.",
        "type": "string",
        "format": "date"
      }
    }
  },
  "outputs": {
    "months": {
      "label": "Months to be debt-free",
      "description": "How many months of payments clear every debt.",
      "format": "integer"
    },
    "budget": {
      "label": "Paid each month",
      "description": "All the monthly payments plus the extra: the same every month until the last one.",
      "format": "money"
    },
    "interest": {
      "label": "Total interest",
      "description": "All the interest paid on all the debts.",
      "format": "money"
    },
    "paid": {
      "label": "Total paid",
      "description": "What you owe today plus all the interest.",
      "format": "money"
    },
    "order": {
      "label": "Payoff order",
      "description": "The debts in the order they are paid off, with the month each is cleared.",
      "format": "text"
    },
    "debtFree": {
      "label": "Debt-free date",
      "description": "The month of the last payment, when a start date is given.",
      "format": "month-year"
    },
    "saved": {
      "label": "Interest the extra saves",
      "description": "The interest with no extra payment minus the interest with it, both in the same order.",
      "format": "money"
    },
    "sooner": {
      "label": "Months sooner",
      "description": "How many months sooner the debts are paid off with the extra payment.",
      "format": "integer"
    },
    "otherInterest": {
      "label": "Avalanche interest",
      "description": "The total interest if the same payments went to the debts in the avalanche order.",
      "format": "money"
    },
    "difference": {
      "label": "Saved vs the avalanche",
      "description": "The interest with the avalanche minus the interest with this one; negative when this one costs more.",
      "format": "money"
    }
  },
  "defaultAnswer": {
    "inputs": {
      "debts": [
        {
          "name": "Medical bill",
          "balance": 800,
          "rate": 0,
          "payment": 40
        },
        {
          "name": "Credit card",
          "balance": 6200,
          "rate": 23.9,
          "payment": 185
        },
        {
          "name": "Car loan",
          "balance": 9500,
          "rate": 7.9,
          "payment": 295
        },
        {
          "name": "Personal loan",
          "balance": 2800,
          "rate": 15.9,
          "payment": 95
        }
      ],
      "extra": 150,
      "start": "2026-09-30"
    },
    "outputs": {
      "months": 31,
      "budget": 765,
      "interest": 3818.413018867361,
      "paid": 23118.41301886736,
      "order": "Medical bill (month 5), Personal loan (month 14), Credit card (month 27), Car loan (month 31)",
      "debtFree": "2029-04-30",
      "saved": 1693.716981863086,
      "sooner": 10,
      "otherInterest": 3423.6819611029646,
      "difference": -394.7310577643966
    },
    "text": "Paying $765.00 a month, you are debt-free in 31 months and pay $3,818.41 in interest."
  },
  "examples": [
    {
      "given": {
        "debts": [
          {
            "name": "Medical bill",
            "balance": 800,
            "rate": 0,
            "payment": 40
          },
          {
            "name": "Credit card",
            "balance": 6200,
            "rate": 23.9,
            "payment": 185
          },
          {
            "name": "Car loan",
            "balance": 9500,
            "rate": 7.9,
            "payment": 295
          },
          {
            "name": "Personal loan",
            "balance": 2800,
            "rate": 15.9,
            "payment": 95
          }
        ],
        "extra": 150
      },
      "expect": {
        "months": 31,
        "budget": 765,
        "interest": 3818.4130188673585,
        "order": "Medical bill (month 5), Personal loan (month 14), Credit card (month 27), Car loan (month 31)",
        "saved": 1693.7169818630869,
        "sooner": 10,
        "otherInterest": 3423.6819611029637,
        "difference": -394.7310577643948
      },
      "source": "month-by-month rules in content.mdx; Python 3 in docs/progress/WP-49/python/debts.py; Consumer Financial Protection Bureau, How to reduce your debt. https://www.consumerfinance.gov/about-us/blog/how-reduce-your-debt/"
    },
    {
      "given": {
        "debts": [
          {
            "name": "A",
            "balance": 500,
            "rate": 0,
            "payment": 50
          },
          {
            "name": "B",
            "balance": 1500,
            "rate": 0,
            "payment": 50
          }
        ],
        "extra": 100,
        "start": "2026-10-01"
      },
      "expect": {
        "months": 10,
        "interest": 0,
        "paid": 2000,
        "sooner": 10,
        "order": "A (month 4), B (month 10)",
        "debtFree": "2027-08-01"
      },
      "source": "hand calculation in content.mdx; Consumer Financial Protection Bureau, How to reduce your debt. https://www.consumerfinance.gov/about-us/blog/how-reduce-your-debt/"
    },
    {
      "given": {
        "debts": [
          {
            "name": "Loan",
            "balance": 2000,
            "rate": 0,
            "payment": 100
          },
          {
            "name": "Card",
            "balance": 1000,
            "rate": 12,
            "payment": 100
          }
        ],
        "extra": 0
      },
      "expect": {
        "months": 16,
        "interest": 58.98488001215106,
        "order": "Card (month 11), Loan (month 16)",
        "difference": 0
      },
      "source": "hand calculation in content.mdx; Python 3 in docs/progress/WP-49/python/debts.py; Consumer Financial Protection Bureau, How to reduce your debt. https://www.consumerfinance.gov/about-us/blog/how-reduce-your-debt/"
    }
  ],
  "sources": [
    "Consumer Financial Protection Bureau, How to reduce your debt (the snowball and the highest-rate-first approaches). https://www.consumerfinance.gov/about-us/blog/how-reduce-your-debt/",
    "Federal Trade Commission, Consumer Advice: How to get out of debt. https://consumer.ftc.gov/articles/how-get-out-debt",
    "Monthly interest on a balance at APR ÷ 12: Regulation Z, 12 CFR 1026.14 (periodic rate). https://www.consumerfinance.gov/rules-policy/regulations/1026/14/"
  ],
  "related": [
    "debt-payoff",
    "debt-consolidation",
    "credit-card-payoff",
    "loan-payoff"
  ],
  "changelog": []
}
