Skip to main content

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.

loanIdstring

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.

Example: 450
termIdintegernullable

The 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.

Example: 2
isDynamicbooleannullable

True for the flexible/variable position (e.g. a matured fixed loan auto-refinanced into the dynamic position). Omitted/false for fixed-term loans.

Example: false
debtstring

Outstanding 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.

Example: 14.5003
aprnumbernullable

Fixed APR locked for this loan, in percent. Omitted for the dynamic position (it tracks the variable rate).

Example: 3.85
maturitynumbernullable

Unix 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.

Example: 1781789025
termDaysnumbernullable

Term length in days.

Example: 7
accruedIntereststringnullable

Interest accrued so far on this loan, in token units.

Example: 0.000358
earlyRepayPenaltystringnullable

Cost (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.

Example: 0.001211
isMaturedbooleannullable

True 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.

Example: false
faceValuestringnullable

Amount 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.

Example: 100.0
earlyRepayDiscountstringnullable

Exactly 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.

Example: 1.0
latePenaltystringnullable

Exactly only: penalty accrued so far past maturity (debt − faceValue), token units.

Example: 2.25
latePenaltyPerDaystringnullable

Exactly only: further penalty per additional day overdue, token units. LINEAR on face value, not compounding.

Example: 0.225
latePenaltyAprnumbernullable

Exactly 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.

Example: 164.24
secondsLateintegernullable

Seconds past maturity; 0 until overdue.

Example: 0
LoanTerm
{
"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
}