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
availableisfalsewhen a payoff cannot be projected—for example, a loan state that does not support payoff. The other fields should then be ignored.interestAccruedToDateprojects accrual throughgoodThroughDateunder the contract’s calculation settings, business calendar, and rounding policy.quotedAtrecords when the projection was computed;validUntilmirrors the good-through date. A payment effective after that date needs a new read with a laterpayoffGoodThroughDate.
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.