LoanTerm
Per-loan fixed-term detail attached to a user position (LendingPosition.term), one per open loan. Emitted by Lista broker, Exactly, TermMax and Teller — several fields are lender-specific, and the repay economics behind them differ sharply per protocol (see FIXED_TERM_REPAY_TERMS.md). Lista only: the flexible/dynamic position uses isDynamic = true and the type(uint128).max loanId sentinel.
The WRITE TARGET for this loan — meaning is lender-specific: Lista = the broker's posId (the dynamic position uses 340282366920938463463374607431768211455, type(uint128).max); Exactly = the maturity as a string (but repay requests send termId, never loanId); TermMax = the GT NFT id; Teller = the bidId. Pass to /v1/actions/lending/repay?loanId=… for the lenders that key on it.
450The rate-card term this loan was opened against (matches a MarketTerm.termId). Omitted for the dynamic/flex position. Exactly: equals the maturity, and IS the field a repay request must send.
2True for the flexible/variable position (e.g. a matured fixed loan auto-refinanced into the dynamic position). Omitted/false for fixed-term loans.
falseOutstanding debt for this loan in token units. Lista/Teller (accruing debt): principal + accrued interest. Exactly/TermMax (STATIC face value): the EXIT-NOW cost — for Exactly that is discounted before maturity and penalty-inflated when overdue, so compare with faceValue rather than assuming it is the settle-at-maturity amount.
14.5003Fixed APR locked for this loan, in percent. Omitted for the dynamic position (it tracks the variable rate).
3.85Unix timestamp (seconds) when the fixed term ends. After maturity interest is frozen and the loan may be refinanced into the dynamic position. Omitted for the dynamic position.
1781789025Term length in days.
7Interest accrued so far on this loan, in token units.
0.000358Cost (token units) to close this loan before maturity, on top of principal + accrued interest (≈ half the remaining-term interest). 0 once the loan has matured. To fully close fund debt + earlyRepayPenalty; the broker refunds any excess.
0.001211True once the fixed term has ended. What follows differs per lender: Lista freezes interest and a keeper auto-converts the loan into the dynamic position (so it may reappear as the isDynamic row); Exactly starts accruing the late penalty below; TermMax opens a 2-hour liquidation window and then settles by physical delivery; Teller DEFAULTS after the market grace period and a liquidator seizes the entire collateral.
falseAmount owed AT maturity (principal + fee) for static-face-value lenders (Exactly). No accrual index — it grows only via a late penalty where the protocol has one. Compare against debt (the exit-now cost) to show the user what waiting or repaying early is worth.
100.0Exactly only: the REBATE for repaying before maturity (faceValue − debt). Exactly never charges an early-repay fee — but this is 0 when the fixed pool has no unassigned earnings left, so an early repay is not a guaranteed saving. Opposite in sign to Lista earlyRepayPenalty.
1.0Exactly only: penalty accrued so far past maturity (debt − faceValue), token units.
2.25Exactly only: further penalty per additional day overdue, token units. LINEAR on face value, not compounding.
0.225Exactly only: the annualized late-penalty rate in percent (~164 %/yr ≙ ~0.45 %/day at time of writing). A mutable market parameter, snapshotted per fetch — do not hardcode it in UI copy.
164.24Seconds past maturity; 0 until overdue.
0{
"loanId": "450",
"termId": 2,
"isDynamic": false,
"debt": "14.5003",
"apr": 3.85,
"maturity": 1781789025,
"termDays": 7,
"accruedInterest": "0.000358",
"earlyRepayPenalty": "0.001211",
"isMatured": false,
"faceValue": "100.0",
"earlyRepayDiscount": "1.0",
"latePenalty": "2.25",
"latePenaltyPerDay": "0.225",
"latePenaltyApr": 164.24,
"secondsLate": 0
}