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

# userFees | Hyperliquid Info API

> Hyperliquid userFees: fetch a user's fee schedule and recent daily trading volume.

<CardGroup cols={2}>
  <Card title="Credit Cost"> 1 per call</Card>
  <Card title="Processing"> Realtime</Card>
</CardGroup>

The Hyperliquid info endpoint with `type: "userFees"` is used to fetch a user's fee schedule and recent daily volume.

<Tip>
  Estimate your monthly cost for this API using the [Pricing Calculator](/docs/pricing-calculator?endpoint=%2Fapi-reference%2Fhyperliquid-info%2Fuser-fees).
</Tip>

<Info>
  * Wire-equal to `POST api.hyperliquid.xyz/info` with `{"type": "userFees", "user": "..."}`.
  * `feeSchedule` is the exchange-wide tier table; `userCrossRate` / `userAddRate` are the effective rates *this* user pays after VIP-tier, referral, and staking discounts.
  * All rate and volume fields are decimal strings; a rate of `"0.00045"` means 4.5 basis points.
</Info>

Returns a user's effective trading fees together with the exchange-wide fee schedule and the user's recent per-day traded volume. Use it to display the taker (`cross`) and maker (`add`) rates a wallet actually pays, and to reconstruct the tier table and discounts that produce them.

User-keyed.

## Endpoint

```
POST https://hypercore.goldrushdata.com/info
Authorization: Bearer <GOLDRUSH_API_KEY>
Content-Type: application/json
```

## Request

<ParamField body="type" type="string" required>
  Always `"userFees"`.
</ParamField>

<ParamField body="user" type="string" required>
  The wallet address (lowercase 0x-prefixed hex).
</ParamField>

### Example

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://hypercore.goldrushdata.com/info \
    -H "Authorization: Bearer $GOLDRUSH_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "type": "userFees",
      "user": "0x31ca8395cf837de08b24da3f660e77761dfb974b"
    }'
  ```

  ```typescript TypeScript theme={null}
  const response = await fetch("https://hypercore.goldrushdata.com/info", {
    method: "POST",
    headers: {
      "Authorization": `Bearer ${process.env.GOLDRUSH_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      type: "userFees",
      user: "0x31ca8395cf837de08b24da3f660e77761dfb974b",
    }),
  });

  const fees = await response.json();
  ```

  ```python Python theme={null}
  import os, requests

  response = requests.post(
      "https://hypercore.goldrushdata.com/info",
      headers={"Authorization": f"Bearer {os.environ['GOLDRUSH_API_KEY']}"},
      json={
          "type": "userFees",
          "user": "0x31ca8395cf837de08b24da3f660e77761dfb974b",
      },
  )

  fees = response.json()
  ```
</CodeGroup>

## Response

A single object with the user's recent daily volume, the exchange-wide `feeSchedule`, the user's effective rates, and any active discounts / trial state.

```json theme={null}
{
  "dailyUserVlm": [
    {
      "date": "2026-07-09",
      "userCross": "587333.02",
      "userAdd": "1041946.77",
      "exchange": "3832824759.19"
    }
  ],
  "feeSchedule": {
    "cross": "0.00045",
    "add": "0.00015",
    "spotCross": "0.0007",
    "spotAdd": "0.0004",
    "referralDiscount": "0.04",
    "tiers": {
      "vip": [
        {
          "ntlCutoff": "5000000",
          "cross": "0.0004",
          "add": "0.00012",
          "spotCross": "0.0006",
          "spotAdd": "0.0003"
        }
      ],
      "mm": [
        {
          "makerFractionCutoff": "0.005",
          "add": "-0.00001"
        }
      ]
    },
    "stakingDiscountTiers": [
      { "bpsOfMaxSupply": "0.0", "discount": "0.0" },
      { "bpsOfMaxSupply": "0.1", "discount": "0.05" }
    ]
  },
  "userCrossRate": "0.000405",
  "userAddRate": "0.00015",
  "activeReferralDiscount": "0.0",
  "trial": null,
  "feeTrialReward": "0.0",
  "nextTrialAvailableTimestamp": null
}
```

### Field descriptions

<Note>
  All rate and volume fields (`userCross`, `userAdd`, `exchange`, `cross`, `add`, `userCrossRate`, `userAddRate`, and the tier / discount values) are returned as **decimal strings**. Do not parse them as floats. Rates are expressed as fractions of notional - `"0.00045"` = 4.5 bps.
</Note>

<ResponseField name="dailyUserVlm" type="array<object>">
  Recent per-day traded volume, one entry per day.

  <Expandable title="properties">
    <ResponseField name="date" type="string">Calendar day in `YYYY-MM-DD` (UTC).</ResponseField>
    <ResponseField name="userCross" type="string">The user's taker (cross) volume that day, in USDC.</ResponseField>
    <ResponseField name="userAdd" type="string">The user's maker (add) volume that day, in USDC.</ResponseField>
    <ResponseField name="exchange" type="string">Total exchange-wide volume that day, in USDC.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="feeSchedule" type="object">
  Exchange-wide fee schedule - the base rates and the tier tables that discounts are applied against.

  <Expandable title="properties">
    <ResponseField name="cross" type="string">Base taker (cross) fee rate for perps.</ResponseField>
    <ResponseField name="add" type="string">Base maker (add) fee rate for perps.</ResponseField>
    <ResponseField name="spotCross" type="string">Base taker fee rate for spot.</ResponseField>
    <ResponseField name="spotAdd" type="string">Base maker fee rate for spot.</ResponseField>
    <ResponseField name="referralDiscount" type="string">Base referral discount, as a fraction of fees.</ResponseField>

    <ResponseField name="tiers" type="object">
      Volume- and maker-based tier tables.

      <Expandable title="properties">
        <ResponseField name="vip" type="array<object>">VIP tiers keyed by notional-volume cutoff. Each entry: `ntlCutoff` (volume threshold) plus the `cross`, `add`, `spotCross`, and `spotAdd` rates at that tier.</ResponseField>
        <ResponseField name="mm" type="array<object>">Market-maker tiers. Each entry: `makerFractionCutoff` (share-of-maker-volume threshold) and the reduced `add` (maker) rate at that tier.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="stakingDiscountTiers" type="array<object>">Staking-based discount tiers. Each entry: `bpsOfMaxSupply` (staked HYPE as basis points of max supply) and the `discount` (fraction of fees) at that tier.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="userCrossRate" type="string">Effective taker (cross) rate this user pays, after all applicable discounts.</ResponseField>
<ResponseField name="userAddRate" type="string">Effective maker (add) rate this user pays, after all applicable discounts.</ResponseField>
<ResponseField name="activeReferralDiscount" type="string">Referral discount currently applied to the user, as a fraction of fees.</ResponseField>
<ResponseField name="trial" type="object | null">Active fee-trial details, or `null` when the user has no active trial.</ResponseField>
<ResponseField name="feeTrialReward" type="string">Reward accrued from the user's fee trial.</ResponseField>
<ResponseField name="nextTrialAvailableTimestamp" type="int | null">Millisecond timestamp when the next fee trial becomes available, or `null` when not applicable.</ResponseField>

*Last reviewed: 2026-07-24*
