> ## Documentation Index
> Fetch the complete documentation index at: https://docs.notional.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Get user borrow/lend interest

> Borrower charges and supplier interest.

```json 200 theme={null}
[
  {
    "time": 1701237600000,
    "hash": "0x9abc1234...",
    "delta": {
      "coin": "pUSD",
      "type": "interest",
      "usdc": "-0.00114155",
      "szi": "100.00000000",
      "rate": "0.000011415525",
      "apr": "0.10000000",
      "accrualStart": 1701234000000,
      "accrualEnd": 1701237600000
    },
    "id": "row-6"
  }
]
```

POST
`/read`

Also available through `POST /info`.

## Request Body

**type** `string` *required*

Must be `"userBorrowLendInterest"`.

**user** `string` *required*

User wallet address.

**startTime** `integer`

Inclusive lower bound in Unix milliseconds. Omit to select the latest page.

**endTime** `integer`

Inclusive upper bound in Unix milliseconds. Omit for no upper bound.

**afterId** `string`

Exclusive row `id` lower bound at `startTime`, in code-unit order. Requires `startTime`; later
timestamps are unaffected.

**limit** `integer`

Maximum entries: 1 to 100,000. Default: 2,000.

Rows are returned oldest first within the selected page. With `startTime`, the
page contains the earliest matching entries at or after that time.

To traverse retained history, set `startTime` to `0` (or your desired lower bound)
and keep one fixed `endTime` for every request. After a full page, set `startTime`
to the last row's timestamp and `afterId` to that same row's `id`. Keep `limit`
fixed and stop when a page contains fewer entries. Deduplicate any overlapping rows by `id`.

Pages are separate reads; `endTime` is a time filter, not a fixed snapshot. When overlapping
requests, fail if a previously returned row in the requested overlap disappears or changes timestamp.
Report failed or inconsistent reads as incomplete instead of returning a partial export.

## Response

```json 200 theme={null}
[
  {
    "time": 1701237600000,
    "hash": "0x9abc1234...",
    "delta": {
      "coin": "pUSD",
      "type": "interest",
      "usdc": "-0.00114155",
      "szi": "100.00000000",
      "rate": "0.000011415525",
      "apr": "0.10000000",
      "accrualStart": 1701234000000,
      "accrualEnd": 1701237600000
    },
    "id": "row-6"
  }
]
```

## Response Fields

**id** `string`

Stable row ID for deduplication.

**time** `number`

Interest time in Unix milliseconds. USDC interest uses the hourly settlement time; pUSD borrower
interest uses `delta.accrualEnd`.

**hash** `string`

Interest event identifier; supplier interest can use a synthetic ID.

**delta** `object`

**child attributes**

**coin** `string`

Interest asset: `USDC` or `pUSD`.

**type** `string`

Always `interest`. USDC supplier distributions from other yield use `rewards` and are returned by
`userNonFundingLedgerUpdates`. pUSD supplier yield is not itemized.

**usdc** `string`

Signed interest amount in `coin` units. Borrower charges are negative; supplier interest is
positive.

**szi** `string`

Borrowed USDC balance or pUSD debt before a borrower charge; eligible USDC balance before supplier
settlement.

**rate** `string`

Hourly USDC borrower rate, hourly equivalent of pUSD `apr`, or USDC supplier pool-index change.
Legacy supplier rows use an hourly deposit rate.

**apr** `string`

Optional annual interest rate on pUSD borrower rows; `"0.05"` means 5% APR.

**accrualStart** `number`

Start of the pUSD borrower accrual interval in Unix milliseconds; omitted on other interest rows.

**accrualEnd** `number`

End of the pUSD borrower accrual interval in Unix milliseconds; also the row's `time`. Omitted on
other interest rows.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.