LendEasy/Docs
Get API keys
GuidesLoansPayoff

Payoff

Read a good-through-date payoff projection from the loan summary—computed from authoritative principal, accrued interest, and eligible charges—without changing the loan.

A payoff answers: “What effective-dated payment would satisfy this obligation through a specified date, given the facts known now?” In LendEasy it is a projection computed inside the loan summary read model—not a stored quote, not a resource with its own lifecycle, and not a mutable balance field.

A projection, not a resource

There is no payoff-quote endpoint and nothing is created, expired, or superseded. Every read of GET /v1/loans/{loanId}/summary computes the payoff block fresh from the authoritative ledger for the requested payoffGoodThroughDate—or for the current business date when the parameter is omitted. Two reads with the same date and the same posted facts return the same numbers; a payment, waiver, or accrual in between simply changes the next projection. If you need a different good-through date, read again with a different parameter.

Harbor example

On September 20, Harbor has $7,975.61 principal outstanding. Maya asks what pays the loan off through October 1.

curl "$BASE/v1/loans/7204/summary?payoffGoodThroughDate=2026-10-01" \
  -H "Authorization: Bearer $TOKEN" \
  -H "LendEasy-Tenant: demo-lender"
{
  "payoff": {
    "available": true,
    "principal": "7975.61",
    "interestAccruedToDate": "90.97",
    "fees": "0.00",
    "penalties": "0.00",
    "total": "8066.58",
    "currency": "USD",
    "goodThroughDate": "2026-10-01",
    "quotedAt": "2026-09-20T10:00:00Z",
    "validUntil": "2026-10-01"
  }
}

Harbor payoff

Reading the block

  • available is false when a payoff cannot be projected—for example, a loan state that does not support payoff. The other fields should then be ignored.
  • interestAccruedToDate projects accrual through goodThroughDate under the contract’s calculation settings, business calendar, and rounding policy.
  • quotedAt records when the projection was computed; validUntil mirrors the good-through date. A payment effective after that date needs a new read with a later payoffGoodThroughDate.

In-flight money

The projection never silently assumes an unsettled debit will post. The same summary exposes inFlightPaymentAmount separately, so a submitted-but-unposted payment is visible next to the payoff total rather than netted into it. If an in-flight payment posts, the next projection reflects the posted allocation; if it returns, nothing has to be unwound because nothing was stored.

Collect and close

Collect the payoff through the payment API with the projected total and an effective date on or before the good-through date:

curl -X POST "$BASE/v1/loans/7204/payments" \
  -H "Authorization: Bearer $TOKEN" \
  -H "LendEasy-Tenant: demo-lender" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: harbor-payoff-2026-10-01" \
  -d '{
    "instrumentId": 704,
    "amount": "8066.58",
    "currency": "USD",
    "rail": "ACH",
    "effectiveDate": "2026-10-01",
    "source": "BORROWER"
  }'

Loan closure occurs only after the payment posts, allocation completes, and the authoritative balance is zero. An accepted or settled payment alone does not close the loan.

If payment will be effective after the good-through date, read the summary again with the later date. Do not add a displayed “per diem” to the old total in client code: later transactions, non-business-day policy, rounding, restrictions, or accrual corrections may make that arithmetic incomplete.

No side effects

Reading the payoff projection does not:

  • stop accrual;
  • reserve funds;
  • cancel autopay;
  • suppress statements or collections automatically;
  • waive charges;
  • close the loan.

Use the payoff recipe for the full collection path and Payments & repayments for settlement and returns.

Unified search across guides, recipes & the API referenceEsc