LendEasy/DocsLMS + Servicing·v1
Start integrating
Guides›Loans›Payoff

Payoff

A good-through-date payoff that is always current and never stale—computed fresh from authoritative principal, accrued interest, and eligible charges on every summary read, 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 the answer is always current and never stale: every read of the loan summary computes the payoff fresh from the authoritative ledger, so there is no stored quote to expire, no resource with its own lifecycle, and no mutable balance field to drift.

Always current, because nothing is stored

There is no payoff-quote endpoint and nothing is created, expired, or superseded. A stored quote is most dangerous in the hour after it goes stale, when it still looks authoritative to everyone holding it. 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.

Maya asks for a payoff through October 1

On September 20, Harbor has $7,975.61 principal outstanding.

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

principal                        $7,975.61
interest through October 1          $90.97
eligible fees                        $0.00
penalties                            $0.00
                                 ─────────
payoff total                     $8,066.58
Result$8,066.58

When available is false, ignore the rest

  • available is false when a payoff cannot be projected—for example, a loan state that does not support payoff. Reading the remaining fields anyway would hand a borrower a total the platform declined to stand behind.
  • 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.

An unsettled debit is never netted in

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.

Settled is not closed

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—a loan closed on an acknowledgement would have to be reopened the first time one of those debits came back.

If payment will be effective after the good-through date, read the summary again with the later date. A “per diem” added to the old total in client code is arithmetic that later transactions, non-business-day policy, rounding, restrictions, or accrual corrections can each quietly invalidate, and a payoff that lands a few dollars light does not close anything: it leaves a balance on a loan the borrower believes they have finished.

Reading a payoff changes nothing

Reading the 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