---
title: "Refinance breakeven — current vs new mortgage"
method: POST
path: "/v1/mortgage/refinance"
tags: ["Utilities"]
---

# Refinance breakeven — current vs new mortgage

`POST /v1/mortgage/refinance`

## Request

- Base URL: `https://api.numeratica.com`
- URL: `https://api.numeratica.com/v1/mortgage/refinance`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Compares the current mortgage payment against a refinance and reports the monthly saving, the months to recoup the closing costs (the breakeven), and the total-cost comparison over each loan's remaining life. Closing costs can be rolled into the new loan. Note a longer new term lowers the payment but can raise total interest. Deterministic; not lending advice.

## Request body

- RefinanceRequest
  - `current_balance` number, required
  - `current_rate` number, required: Annual APR on the existing loan.
  - `current_remaining_months` integer, required
  - `new_rate` number, required: Annual APR on the refinance.
  - `new_term_months` integer, required
  - `closing_costs` number, required
  - `roll_in_closing_costs` boolean: Finance the closing costs into the new loan.

## Response `200`

The refinance analysis

- RefinanceResponse
  - `result_id` string
  - `engine_version` string
  - `inputs` RefinanceRequest
    - `current_balance` number, required
    - `current_rate` number, required: Annual APR on the existing loan.
    - `current_remaining_months` integer, required
    - `new_rate` number, required: Annual APR on the refinance.
    - `new_term_months` integer, required
    - `closing_costs` number, required
    - `roll_in_closing_costs` boolean: Finance the closing costs into the new loan.
  - `result` object
    - `current_payment` number: Current monthly P&I.
    - `new_loan_amount` number: Balance (+ closing costs if rolled in).
    - `new_payment` number: New monthly P&I.
    - `monthly_savings` number: current − new.
    - `breakeven_months` integer: Months to recoup closing costs (0 if never).
    - `worthwhile` boolean: The new payment is lower.
    - `current_total_remaining` number: payment × remaining months.
    - `new_total_cost` number: closing costs + new payment × new term.
    - `lifetime_savings` number: current total − new total (note: terms may differ).
  - `disclaimer` string

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key.
- `405`: Method not allowed
- `429`: The key's per-minute request budget is exceeded. Retry after the delay in the Retry-After header.
- `503`: A dependency (e.g. the key store) is temporarily unavailable, or the request exceeded its compute deadline. Retryable.

---

[API](https://skmtc.dev/numeratica/apis/numeratica-financial-planning-calculations-api.md) · [All operations](https://skmtc.dev/numeratica/apis/numeratica-financial-planning-calculations-api/llms.txt) · [OpenAPI document](https://skmtc.dev/numeratica/apis/numeratica-financial-planning-calculations-api/revisions/075bcfbd1ebf?raw)
