{
  "id": "tsp-loan",
  "version": "97c7a40ad65a",
  "status": "published",
  "name": "TSP Loan Calculator",
  "question": "What is my TSP loan payment?",
  "summary": "Computes the most you can borrow from your Thrift Savings Plan account, the processing fee, the payment per paycheck at the G Fund rate, the interest paid back into your account, and the schedule.",
  "category": "finance",
  "subcategory": "retirement",
  "url": "https://www.acalculator.org/finance/tsp-loan-calculator",
  "markdown": "https://www.acalculator.org/finance/tsp-loan-calculator.md",
  "kind": "schedule",
  "method": "Limit = min(your contributions and earnings, max(half of them plus loans owed, $10,000) − loans owed, $50,000 − highest loan balance in 12 months); payment = L·r ÷ (1 − (1 + r)^−n) with r = G Fund rate ÷ paychecks a year and n = months × paychecks a year ÷ 12, rounded.",
  "assumptions": [
    "The three TSP limits as tsp.gov states them; My Account shows the exact amount for you.",
    "Level payments each paycheck with interest on the unpaid balance; the last payment clears the balance.",
    "The number of payments is the term in months × paychecks a year ÷ 12, rounded to the nearest whole payment; the TSP sets the exact count.",
    "The G Fund rate is the one you type; no live rates."
  ],
  "inputs": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "own": {
        "title": "Your contributions and earnings",
        "description": "Your own contributions and their earnings in the account, not counting agency contributions, the mutual fund window, or loans you owe.",
        "type": "number",
        "x-unit": "USD",
        "minimum": 0,
        "maximum": 100000000
      },
      "amount": {
        "title": "Loan amount",
        "description": "How much you want to borrow, from $1,000.",
        "type": "number",
        "x-unit": "USD",
        "minimum": 1000,
        "maximum": 50000
      },
      "rate": {
        "title": "G Fund rate",
        "description": "The G Fund rate for the month before you apply. It stays the same for the life of the loan.",
        "type": "number",
        "x-unit": "percent",
        "minimum": 0,
        "maximum": 20
      },
      "type": {
        "title": "Loan type",
        "description": "General purpose (12 to 60 months, $50 fee) or primary residence (61 to 180 months, $100 fee).",
        "type": "string",
        "enum": [
          "general",
          "residence"
        ]
      },
      "months": {
        "title": "Repayment term (months)",
        "description": "12 to 60 months for a general purpose loan; 61 to 180 for a primary residence loan.",
        "type": "integer",
        "minimum": 12,
        "maximum": 180
      },
      "per": {
        "title": "Paychecks per year",
        "description": "Payments come out of each paycheck: every 2 weeks for most civilians, twice a month in the uniformed services.",
        "type": "string",
        "enum": [
          "26",
          "24",
          "12"
        ]
      },
      "owe": {
        "title": "TSP loans you owe now",
        "description": "The balance of any TSP loans you have now. Leave empty for none.",
        "type": "number",
        "x-unit": "USD",
        "minimum": 0,
        "maximum": 50000
      },
      "high": {
        "title": "Highest loan balance in the last 12 months",
        "description": "The highest you owed on TSP loans at any time in the past 12 months. Leave empty for none.",
        "type": "number",
        "x-unit": "USD",
        "minimum": 0,
        "maximum": 50000
      }
    }
  },
  "outputs": {
    "payment": {
      "label": "Payment per paycheck",
      "description": "The level payment taken from each paycheck.",
      "format": "money"
    },
    "limit": {
      "label": "Most you can borrow now",
      "description": "The smallest of the three TSP limits.",
      "format": "money"
    },
    "fee": {
      "label": "Processing fee",
      "description": "$50 for a general purpose loan, $100 for a primary residence loan.",
      "format": "money"
    },
    "net": {
      "label": "Money you receive",
      "description": "The loan amount minus the processing fee, which comes out of the loan.",
      "format": "money"
    },
    "interest": {
      "label": "Total interest",
      "description": "All the interest, which goes back into your TSP account.",
      "format": "money"
    },
    "total": {
      "label": "Total repaid",
      "description": "Loan amount + total interest.",
      "format": "money"
    },
    "count": {
      "label": "Number of payments",
      "description": "Months × paychecks a year ÷ 12, rounded.",
      "format": "integer"
    }
  },
  "defaultAnswer": {
    "inputs": {
      "own": 60000,
      "amount": 20000,
      "rate": 4.5,
      "type": "general",
      "months": 60,
      "per": "26"
    },
    "outputs": {
      "payment": 171.9348757670161,
      "limit": 30000,
      "fee": 50,
      "net": 19950,
      "interest": 2351.5338497120947,
      "total": 22351.533849712094,
      "count": 130
    },
    "text": "You repay $171.93 per paycheck, 130 payments, with $2,351.53 of interest back into your account."
  },
  "examples": [
    {
      "given": {
        "own": 60000,
        "amount": 20000,
        "rate": 4.5,
        "type": "general",
        "months": 60,
        "per": "26"
      },
      "expect": {
        "limit": 30000,
        "payment": 171.93487576700875,
        "count": 130,
        "fee": 50,
        "net": 19950,
        "interest": 2351.5338497122093
      },
      "source": "Thrift Savings Plan, TSP loans (loan types and terms, $50 and $100 fees, $1,000 minimum, the three limits on the maximum, the G Fund rate for the month before you apply), https://www.tsp.gov/tsp-loans/ (retrieved 2026-10-05); hand calculation in content.mdx: limit min(60,000, max(30,000, 10,000), 50,000) = 30,000; payment 20,000 × r ÷ (1 − (1 + r)^−130), r = 0.045 ÷ 26"
    },
    {
      "given": {
        "own": 15000,
        "amount": 8000,
        "rate": 4,
        "type": "general",
        "months": 24,
        "per": "12",
        "owe": 2000,
        "high": 6000
      },
      "expect": {
        "limit": 8000,
        "count": 24,
        "payment": 347.39937736618486,
        "interest": 337.58505678862525
      },
      "source": "Thrift Savings Plan, TSP loans (loan types and terms, $50 and $100 fees, $1,000 minimum, the three limits on the maximum, the G Fund rate for the month before you apply), https://www.tsp.gov/tsp-loans/ (retrieved 2026-10-05); hand calculation in content.mdx"
    },
    {
      "given": {
        "own": 200000,
        "amount": 50000,
        "rate": 4.875,
        "type": "residence",
        "months": 180,
        "per": "26",
        "owe": 0,
        "high": 0
      },
      "expect": {
        "limit": 50000,
        "count": 390,
        "fee": 100,
        "payment": 180.85769013133088,
        "interest": 20534.499151221687
      },
      "source": "Thrift Savings Plan, TSP loans (loan types and terms, $50 and $100 fees, $1,000 minimum, the three limits on the maximum, the G Fund rate for the month before you apply), https://www.tsp.gov/tsp-loans/ (retrieved 2026-10-05); hand calculation in content.mdx: r = 0.04875 ÷ 26, n = 180 × 26 ÷ 12 = 390"
    },
    {
      "given": {
        "own": 30000,
        "amount": 5000,
        "rate": 0,
        "type": "general",
        "months": 13,
        "per": "26"
      },
      "expect": {
        "count": 28,
        "payment": 178.57142857142858,
        "interest": 0
      },
      "source": "hand calculation in content.mdx: 13 × 26 ÷ 12 = 28.17, so 28 payments of 5,000 ÷ 28"
    }
  ],
  "sources": [
    "Thrift Savings Plan, TSP loans. https://www.tsp.gov/tsp-loans/ (retrieved 2026-10-05)",
    "Consumer Financial Protection Bureau, What is amortization and how could it affect my auto loan? https://www.consumerfinance.gov/ask-cfpb/what-is-amortization-and-how-could-it-affect-my-auto-loan-en-771/ (retrieved 2026-10-05)"
  ],
  "related": [
    "401k-loan",
    "401k",
    "loan",
    "retirement"
  ],
  "changelog": []
}
