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

# allLedgerUpdates

> Deposits, withdrawals, transfers and every other non-funding ledger event of every Hyperliquid user, live

Subscribe with `{"method":"subscribe","subscription":{"type":"allLedgerUpdates"}}` to receive every non-funding ledger event of every user on Hyperliquid, a few seconds after it happens: deposits, withdrawals, `send` and spot transfers, sub-account and perp/spot class transfers, vault deposits and withdrawals, staking, borrow/lend, and the other types of [`userNonFundingLedgerUpdates`](https://docs.hypedexer.com/live-data/ws-user-non-funding-ledger-updates). Add `"users": [...]` (up to 20,000 addresses) and/or `"types": [...]` to receive only what you need; see [Filters](#filters).

One subscription replaces one `userNonFundingLedgerUpdates` subscription per address: use it to follow a list of wallets, or the deposit and withdrawal flows of the whole exchange.

## Event shape

One item per event, with the same `time`, `hash` and `delta` as [`userNonFundingLedgerUpdates`](https://docs.hypedexer.com/live-data/ws-user-non-funding-ledger-updates), plus `users`:

* `time`: the event's timestamp, in milliseconds;
* `hash`: the transaction hash, or the zero hash for system events;
* `users`: the one or two addresses involved, lower-cased and sorted. A transfer from A to B is sent **once**, with both addresses; read `delta.user` and `delta.destination` for the direction;
* `delta`: the event exactly as Hyperliquid emits it, `delta.type` giving its kind.

```json theme={null}
{
  "channel": "allLedgerUpdates",
  "data": [
    {
      "time": 1793998894481,
      "hash": "0x9f3e2d1c0b8a79685746352413021f0e9d8c7b6a5948372615049382716051a4",
      "users": ["0x3b8e1c2d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c", "0x7a1f9e2d3c4b5a69788796a5b4c3d2e1f0a9b8c7"],
      "delta": {"type": "send", "user": "0x7a1f9e2d3c4b5a69788796a5b4c3d2e1f0a9b8c7", "destination": "0x3b8e1c2d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c", "sourceDex": "spot", "destinationDex": "", "token": "USDC", "amount": "250.0", "usdcValue": "250.0", "fee": "0.0", "nativeTokenFee": "0.0", "nonce": 1793998893912, "feeToken": ""}
    },
    {
      "time": 1793998982519,
      "hash": "0x1e2d3c4b5a69788796a5b4c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3",
      "users": ["0x5c4d3e2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b7c6d"],
      "delta": {"type": "deposit", "usdc": "500.0"}
    }
  ]
}
```

Funding payments are not ledger events: subscribe to [`userFundings`](https://docs.hypedexer.com/live-data/ws-user-fundings) for them.

## Filters

| Parameter | Keeps |
| - | - |
| `users` | Events involving at least one of these wallets (up to 20,000, 0x-prefixed, case-insensitive) |
| `types` | Events whose `delta.type` is in the list (up to 50), for example `["deposit", "withdraw"]` |

With both, an event is sent when it matches **both**: `{"users": [...], "types": ["deposit", "withdraw"]}` gives the deposits and withdrawals of those wallets. Any other parameter is refused with an error, so a typo never silently turns the subscription into the full stream. The acknowledgement gives the number of addresses instead of echoing them, and the types in force: `{"channel":"subscriptionResponse","data":{"method":"subscribe","subscription":{"type":"allLedgerUpdates","users":15000,"types":["deposit","withdraw"]}}}`.

* The subscribe message must stay under **1 MB** (20,000 addresses take about 900 KB).
* One `allLedgerUpdates` subscription per connection: subscribing again replaces the filters. `{"method":"unsubscribe","subscription":{"type":"allLedgerUpdates"}}` stops it.

## Volume, latency and duplicates

A few events per second across all of Hyperliquid on average, with bursts above 100 per second (November 2026), each 2 to 4 seconds after the event (median). There is no snapshot: it is a pure stream. After a rare restart on our side, the events of the last seconds may be sent again: deduplicate on `time`, `hash` and `delta` (a transaction can carry several events, and system events share the zero hash).

To catch up after a disconnect, or to read a past window, use the REST counterpart `POST /info` with `{"type":"allLedgerUpdates","startTime":...}` (Live Data REST API, *Account History*): same items, paged, with the same optional `users` and `types` filters, complete for every user from 27 September 2025.

Usage is billed as standard WebSocket events against your plan's credits.


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