Skip to main content

LendingPosition

Position data for a single asset within a lending protocol.

For Lista DAO fixed-term (brokered) markets a single market expands into several rows sharing the same marketUid:

  • one aggregate debt row (no term/loanId) where debt = the dynamic/variable loan and debtStable = the sum of fixed loans — use this for totals & health;
  • one shared collateral row (collateralEnabled = true, no loanId) backing every loan;
  • one per-loan row per open loan, each carrying loanId and a term. These are a breakdown of the aggregate — do not sum them into totals on top of the aggregate row.
marketUidstring

Unique market identifier (format: {lender}:{chainId}:{address})

Example: AAVE_V3:1:0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
depositsstring

Deposit amount in token units (wei)

Example: 1000000000000000000
debtstring

Variable debt in token units

Example: 0
debtStablestring

Stable debt in token units

Example: 0
debtSharesstring

Debt share amount (protocol-specific, present when the protocol uses share-based accounting)

Example: 0
depositSharesstring

Deposit share amount (protocol-specific, present when the protocol uses share-based accounting)

Example: 0
depositsUSDnumber

Deposits in USD (market price)

Example: 2500
debtUSDnumber

Variable debt in USD (market price)

Example: 0
debtStableUSDnumber

Stable debt in USD (market price)

Example: 0
depositsUSDOraclenumber

Deposits in USD using on-chain oracle price (used for risk/health calculations)

Example: 2510
debtUSDOraclenumber

Variable debt in USD using on-chain oracle price

Example: 0
debtStableUSDOraclenumber

Stable debt in USD using on-chain oracle price

Example: 0
collateralEnabledboolean

Whether this asset is enabled as collateral

Example: true
claimableRewardsnumber

Claimable rewards in USD

Example: 0.5
withdrawablestring

Max tokens withdrawable while maintaining health >= 1. Equals full deposit balance if collateral is not enabled.

Example: 0.5
borrowablestring

Max tokens borrowable against remaining credit line. Zero if borrowing is disabled, reserve is frozen, or debt is disabled for the active mode.

Example: 100
underlyingInfo object

Nested asset metadata, oracle prices, and market prices for a lending market.

asset object

Token metadata for an underlying asset.

chainIdstring

EVM chain id, as a decimal string. See the ChainId schema.

Example: 1
addressstring

Token contract address (lowercase)

Example: 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
symbolstring

Token symbol, e.g. WETH.

Example: USDC
namestring

Human-readable display name.

Example: USD Coin
decimalsintegernullable

Token decimals — divide raw amounts by 10 ** decimals.

Example: 6
logoURIstringnullable

URL of the logo image.

assetGroupstringnullable

Canonical asset group (e.g. "USDC", "ETH", "BTC")

Example: USDC
currencyIdstringnullable
props objectnullable

Protocol-specific asset properties

property name*anynullable

Protocol-specific asset properties

oraclePrice object

On-chain oracle price data.

oraclePricenumbernullable

Raw on-chain oracle price

oraclePriceUsdnumbernullable

Oracle price denominated in USD

prices object

Market prices for an asset with 24h comparison.

priceUsdnumbernullable

Current price in USD

priceTsstring<date-time>nullable

Timestamp of current price

priceUsd24hnumbernullable

Price 24 hours ago in USD

priceTs24hstring<date-time>nullable

Timestamp of 24h-ago price

priceChange24hnumbernullable

Percentage price change over 24h

loanIdstringnullable

Lista DAO brokered markets only: identifies a single fixed-term loan (the broker posId; the dynamic/flex position uses type(uint128).max). Present on per-loan breakdown rows; absent on the aggregate debt row and on the shared collateral row. Pass to /v1/actions/lending/repay?loanId=….

Example: 450
term objectnullable

Lista DAO brokered markets only: the fixed-term detail for this loan (rate, maturity, accrued interest, early-repay penalty). Present only on per-loan breakdown rows.

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
LendingPosition
{
"marketUid": "AAVE_V3:1:0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"deposits": "1000000000000000000",
"debt": "0",
"debtStable": "0",
"debtShares": "0",
"depositShares": "0",
"depositsUSD": 2500,
"debtUSD": 0,
"debtStableUSD": 0,
"depositsUSDOracle": 2510,
"debtUSDOracle": 0,
"debtStableUSDOracle": 0,
"collateralEnabled": true,
"claimableRewards": 0.5,
"withdrawable": "0.5",
"borrowable": "100",
"underlyingInfo": {
"asset": {
"chainId": "1",
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"logoURI": "string",
"assetGroup": "USDC",
"currencyId": "string",
"props": {}
},
"oraclePrice": {
"oraclePrice": 0,
"oraclePriceUsd": 0
},
"prices": {
"priceUsd": 0,
"priceTs": "2024-07-29T15:51:28.071Z",
"priceUsd24h": 0,
"priceTs24h": "2024-07-29T15:51:28.071Z",
"priceChange24h": 0
}
},
"loanId": "450",
"term": {
"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
}
}