> ## 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 non-funding ledger updates

> Deposits, withdrawals, bridge transfers, rewards, and outcome activity.

```json 200 theme={null}
[
  {
    "time": 1701230000000,
    "hash": "0x5678efab...",
    "delta": {
      "coin": "USDC",
      "type": "deposit",
      "usdc": "10000.00",
      "szi": "0"
    },
    "transfer": {
      "source": "Hyperliquid Perps",
      "destination": "Notional",
      "txHash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    },
    "id": "row-0"
  },
  {
    "time": 1701234568890,
    "hash": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
    "delta": {
      "coin": "USDC",
      "type": "withdrawal",
      "usdc": "-100",
      "szi": "0"
    },
    "status": "complete",
    "transfer": {
      "source": "Notional",
      "destination": "0x1111111111111111111111111111111111111111",
      "txHash": "0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
      "fee": {
        "amount": "1",
        "coin": "USDC"
      },
      "netAmount": "99",
      "requestedTransactionId": "0xdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
    },
    "id": "row-2"
  },
  {
    "time": 1701234569890,
    "hash": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
    "delta": {
      "coin": "USDC",
      "type": "merge",
      "usdc": "2",
      "szi": "0"
    },
    "status": "complete",
    "outcome": {
      "operationId": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
      "market": {
        "adapter": "hyperliquid",
        "outcome": 4886
      },
      "status": "completed",
      "requestedAmount": "2",
      "requestedAt": 1701234569890,
      "completedAt": 1701234570890,
      "assetDeltas": [
        {
          "assetId": "0x00012710",
          "amount": "2"
        },
        {
          "assetId": "0x0004000005f69fdc",
          "amount": "-2"
        },
        {
          "assetId": "0x0004000005f69fdd",
          "amount": "-2"
        }
      ]
    },
    "id": "row-3"
  },
  {
    "time": 1701234571890,
    "hash": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    "delta": {
      "coin": "pUSD",
      "type": "split",
      "usdc": "0",
      "szi": "0"
    },
    "status": "failed",
    "outcome": {
      "operationId": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
      "market": {
        "adapter": "polymarket",
        "conditionId": "0xb7d6db12a48e282585501f57871e6e482b9e2c41c68d1d5019bdbd2902209b69"
      },
      "status": "failed",
      "requestedAmount": "2.00000000",
      "requestedAt": 1701234571890,
      "failureReason": "venue_rejected",
      "assetDeltas": []
    },
    "id": "row-4"
  },
  {
    "time": 1701234572890,
    "hash": "0x1111111111111111111111111111111111111111111111111111111111111111",
    "delta": {
      "coin": "pUSD",
      "type": "redemption",
      "usdc": "0",
      "szi": "0"
    },
    "status": "complete",
    "outcome": {
      "operationId": "0x1111111111111111111111111111111111111111111111111111111111111111",
      "market": {
        "adapter": "polymarket",
        "conditionId": "0xb7d6db12a48e282585501f57871e6e482b9e2c41c68d1d5019bdbd2902209b69"
      },
      "status": "completed",
      "completedAt": 1701234572890,
      "assetDeltas": null,
      "assetDeltasUnavailableReason": "legacy_redemption_receipt_missing"
    },
    "id": "row-5"
  },
  {
    "time": 1701237601000,
    "hash": "0x2222222222222222222222222222222222222222222222222222222222222222",
    "delta": {
      "coin": "pUSD",
      "type": "redemption",
      "usdc": "0",
      "szi": "0"
    },
    "status": "complete",
    "outcome": {
      "operationId": "0x2222222222222222222222222222222222222222222222222222222222222222",
      "market": {
        "adapter": "polymarket",
        "conditionId": "0xb7d6db12a48e282585501f57871e6e482b9e2c41c68d1d5019bdbd2902209b69"
      },
      "status": "completed",
      "completedAt": 1701237601000,
      "assetDeltas": [
        {
          "assetId": "0x10011e3c7584aa9c64f24cfb85ca5efa729a57e725e32079104bdfe4c5675fe6ce35",
          "amount": "-2.5"
        },
        {
          "assetId": "0x800101c011a7e12a19f7b1f670d46f03b03f3342e82dfb",
          "amount": "2.50000000"
        }
      ]
    },
    "id": "row-7"
  }
]
```

POST
`/read`

Also available through `POST /info`.

## Request Body

**type** `string` *required*

Must be `"userNonFundingLedgerUpdates"`.

**user** `string` *required*

User wallet address.

**types** `string[]`

Optional subset of `deposit`, `withdrawal`, `transfer`, `rewards`, `split`, `merge`, `redemption`.
Omit for the entire category; an empty array returns no entries. Other categories are rejected.

**operationId** `string`

Optional canonical lowercase, nonzero 32-byte outcome operation or redemption ID. Looks up that
wallet's matching operation without scanning its history.

**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": 1701230000000,
    "hash": "0x5678efab...",
    "delta": {
      "coin": "USDC",
      "type": "deposit",
      "usdc": "10000.00",
      "szi": "0"
    },
    "transfer": {
      "source": "Hyperliquid Perps",
      "destination": "Notional",
      "txHash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    },
    "id": "row-0"
  },
  {
    "time": 1701234568890,
    "hash": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
    "delta": {
      "coin": "USDC",
      "type": "withdrawal",
      "usdc": "-100",
      "szi": "0"
    },
    "status": "complete",
    "transfer": {
      "source": "Notional",
      "destination": "0x1111111111111111111111111111111111111111",
      "txHash": "0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
      "fee": {
        "amount": "1",
        "coin": "USDC"
      },
      "netAmount": "99",
      "requestedTransactionId": "0xdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
    },
    "id": "row-2"
  },
  {
    "time": 1701234569890,
    "hash": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
    "delta": {
      "coin": "USDC",
      "type": "merge",
      "usdc": "2",
      "szi": "0"
    },
    "status": "complete",
    "outcome": {
      "operationId": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
      "market": {
        "adapter": "hyperliquid",
        "outcome": 4886
      },
      "status": "completed",
      "requestedAmount": "2",
      "requestedAt": 1701234569890,
      "completedAt": 1701234570890,
      "assetDeltas": [
        {
          "assetId": "0x00012710",
          "amount": "2"
        },
        {
          "assetId": "0x0004000005f69fdc",
          "amount": "-2"
        },
        {
          "assetId": "0x0004000005f69fdd",
          "amount": "-2"
        }
      ]
    },
    "id": "row-3"
  },
  {
    "time": 1701234571890,
    "hash": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    "delta": {
      "coin": "pUSD",
      "type": "split",
      "usdc": "0",
      "szi": "0"
    },
    "status": "failed",
    "outcome": {
      "operationId": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
      "market": {
        "adapter": "polymarket",
        "conditionId": "0xb7d6db12a48e282585501f57871e6e482b9e2c41c68d1d5019bdbd2902209b69"
      },
      "status": "failed",
      "requestedAmount": "2.00000000",
      "requestedAt": 1701234571890,
      "failureReason": "venue_rejected",
      "assetDeltas": []
    },
    "id": "row-4"
  },
  {
    "time": 1701234572890,
    "hash": "0x1111111111111111111111111111111111111111111111111111111111111111",
    "delta": {
      "coin": "pUSD",
      "type": "redemption",
      "usdc": "0",
      "szi": "0"
    },
    "status": "complete",
    "outcome": {
      "operationId": "0x1111111111111111111111111111111111111111111111111111111111111111",
      "market": {
        "adapter": "polymarket",
        "conditionId": "0xb7d6db12a48e282585501f57871e6e482b9e2c41c68d1d5019bdbd2902209b69"
      },
      "status": "completed",
      "completedAt": 1701234572890,
      "assetDeltas": null,
      "assetDeltasUnavailableReason": "legacy_redemption_receipt_missing"
    },
    "id": "row-5"
  },
  {
    "time": 1701237601000,
    "hash": "0x2222222222222222222222222222222222222222222222222222222222222222",
    "delta": {
      "coin": "pUSD",
      "type": "redemption",
      "usdc": "0",
      "szi": "0"
    },
    "status": "complete",
    "outcome": {
      "operationId": "0x2222222222222222222222222222222222222222222222222222222222222222",
      "market": {
        "adapter": "polymarket",
        "conditionId": "0xb7d6db12a48e282585501f57871e6e482b9e2c41c68d1d5019bdbd2902209b69"
      },
      "status": "completed",
      "completedAt": 1701237601000,
      "assetDeltas": [
        {
          "assetId": "0x10011e3c7584aa9c64f24cfb85ca5efa729a57e725e32079104bdfe4c5675fe6ce35",
          "amount": "-2.5"
        },
        {
          "assetId": "0x800101c011a7e12a19f7b1f670d46f03b03f3342e82dfb",
          "amount": "2.50000000"
        }
      ]
    },
    "id": "row-7"
  }
]
```

## Response Fields

**id** `string`

Stable row ID for deduplication.

**time** `number`

Entry time in Unix milliseconds. Polygon member withdrawals use their committed event time because
stored `completedAt` is zero. A terminal withdrawal can change time while retaining its row ID.

**hash** `string`

Entry identifier; bridge rows use the transfer ID, and rewards can use a synthetic ID. Actual
transaction hashes are in `transfer.txHash` or the `protocolTransfer` receipt fields.

**delta** `object`

**child attributes**

**coin** `string`

Asset symbol.

**type** `string`

`deposit`, `withdrawal`, `transfer`, `rewards`, `split`, `merge`, or `redemption`.

**usdc** `string`

Signed amount in the transferred asset's units for deposits and withdrawals; USDC for supplier
rewards. Outcome activity includes exact native movements in `outcome.assetDeltas`; pUSD is never
reported as USDC. Bridge transfers use `"0"`; native receipt amounts are in `protocolTransfer`.

**szi** `string`

Eligible USDC balance before supplier rewards; `"0"` on transfer and outcome rows.

**rate** `string`

Pool-index change on supplier rewards; omitted on transfer and outcome rows.

**status** `string`

Optional `pending`, `complete`, or `failed` status.

**outcome** `object`

Split, merge, or redemption details; present for outcome activity.

**child attributes**

**operationId** `string`

Stable split/merge operation ID or redemption event ID.

**market** `object`

`{ "adapter": "hyperliquid", "outcome": 42 }` or `{ "adapter": "polymarket", "conditionId": "0x..." }`.

**child attributes**

**adapter** `string`

`"hyperliquid"` or `"polymarket"`.

**outcome** `number`

Hyperliquid only: numeric outcome ID, for example `42`.

**conditionId** `string`

Polymarket only: `0x`-prefixed condition ID.

**status** `string`

`pending`, `active`, `needs_reconciliation`, `completed`, or `failed`.

**requestedAmount** `string`

Optional requested amount in USDC for Hyperliquid or pUSD for Polymarket.

**requestedAt** `number`

Optional split/merge request time in Unix milliseconds.

**completedAt** `number`

Timestamp of committed completion, when completed.

**failureReason** `string`

Failure reason, when available.

**assetDeltas** `object[] | null`

Signed asset movements in native units; empty before completion or `null` when historical amounts are unavailable.

**child attributes**

**assetId** `string`

[assetId](/api-reference/products-and-asset-ids)

**amount** `string`

Exact signed movement in native asset units, for example `"-1.25"`.

**assetDeltasUnavailableReason** `string`

`"legacy_redemption_receipt_missing"` when a legacy redemption has no execution receipt. Omitted when exact deltas are available.

**transfer** `object`

Deposit or withdrawal locations and recorded transfer details.

**child attributes**

**source** `string`

Origin location.

**destination** `string`

Recipient location or address.

**txHash** `string`

Original venue or blockchain transaction hash, when available.

**fee** `object`

Optional completed withdrawal fee in native asset units.

**child attributes**

**amount** `string`

Exact fee amount as a decimal string, for example `"1"`.

**coin** `string`

Fee asset symbol, for example `"USDC"`.

**netAmount** `string`

Amount received by the withdrawal destination, in the withdrawn asset's units; present for completed withdrawals when available.

**requestedTransactionId** `string`

Optional withdrawal request identity retained on terminal rows.

**protocolTransfer** `object`

Bridge/conversion history from canonical transfer state, including transfers submitted on other
devices and rows retained in snapshots. One row per transfer, with `hash` equal to the transfer ID
and `time` equal to its request time. Internal liquidation debt recovery is excluded.

**child attributes**

**status** `string`

`pending`, `active`, `needs_reconciliation`, `completed`, or `failed`.

**source** `string`

Source venue or network, such as `Hyperliquid` or `Polygon`.

**destination** `string`

Final destination venue or network.

**sourceAsset** `string`

Source asset label, such as `USDC` or `pUSD`.

**destinationAsset** `string`

Final destination asset label.

**requestedAmount** `string`

Requested source amount in native asset units.

**sentAmount** `string`

Source amount in native units; present only after confirmed source movement.

**receivedAmount** `string`

Actual final receipt in destination asset units, present only on completed transfers.
Quoted minimums are never reported as received funds. This is an external receipt,
not an inferred collateral balance change or fee.

**sourceTransactionHash** `string`

Confirmed source transaction hash, when available.

**sourceTransactionNetwork** `object`

Network containing the source transaction, present with `sourceTransactionHash`.
`{"kind":"hyperliquid"}` identifies a Hyperliquid transaction;
`{"kind":"chain","networkId":"eip155:137"}` identifies an EVM transaction by CAIP-2
network ID. Use this identity for explorer links rather than the `source` display label.

**destinationTransactionHash** `string`

Confirmed final destination transaction hash, when available.

**destinationTransactionNetworkId** `string`

CAIP-2 network containing the destination receipt, when available. Use this network for
transaction explorer links: reverse transfers finish at Hyperliquid, but their receipt
transaction is on HyperEVM (`eip155:999`).

**completedAt** `number`

Final receipt timestamp in Unix milliseconds, present on completion.

**failureReason** `string`

Recorded failure or uncertainty reason, when available.

**linkedWithdrawalId** `string`

Reverse bridge's internal withdrawal ID. Account Activity groups that withdrawal under
this transfer; raw non-funding activity reads retain the withdrawal row.

**creditStatus** `string`

`accepted` or `segregated` when recorded by reverse settlement. A segregated receipt
has not been admitted as account collateral.


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