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

# Комиссии и лимиты

> GET /v1/public/fees и GET /v1/public/limits — прайс-лист сетевых комиссий по приоритетам, комиссия обменника, минимумы и действующие лимиты вашего сайта.

Два справочных эндпоинта, чтобы CMS обменника показывала клиенту честную стоимость операции
и не упиралась в лимиты «вслепую».

## Прайс-лист: `GET /v1/public/fees`

По каждому активному активу: процент комиссии обменника (депозит / выплата), оценка сетевой
комиссии выплаты по трём приоритетам в нативной монете сети с USD-эквивалентом, минимумы и
требуемые подтверждения. Ответ кэшируется на стороне платформы (`ttlSeconds`, 60 с) — опрашивать
чаще смысла нет.

<ParamField query="assetCode" type="string">Вернуть только один актив.</ParamField>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "ok": true,
    "data": {
      "updatedAt": "2026-09-09T10:00:00.000Z",
      "ttlSeconds": 60,
      "items": [
        {
          "assetCode": "USDT_ERC20",
          "symbol": "USDT",
          "network": "ETHEREUM",
          "type": "token",
          "decimals": 6,
          "depositEnabled": true,
          "payoutEnabled": true,
          "minDeposit": "5",
          "minPayout": "10",
          "requiredConfirmations": 12,
          "serviceFee": { "depositPercent": "0", "payoutPercent": "0.5" },
          "networkFee": {
            "assetCode": "ETH",
            "economy": "0.00071",
            "recommended": "0.00092",
            "high": "0.00118",
            "recommendedUsd": "2.3000",
            "estimatedConfirmationSeconds": 30,
            "supportsPriority": true,
            "error": null
          },
          "rateUsd": "1.00"
        }
      ]
    }
  }
  ```
</ResponseExample>

### Поля

<ResponseField name="serviceFee" type="object">
  Комиссия обменника в процентах: `depositPercent`, `payoutPercent` (настройки платформы). Строки.
</ResponseField>

<ResponseField name="networkFee" type="object">
  <Expandable title="структура">
    <ResponseField name="assetCode" type="string | null">Нативная монета сети, в которой платится сетевая комиссия.</ResponseField>

    <ResponseField name="economy / recommended / high" type="string | null">
      Оценка сетевой комиссии выплаты по приоритетам. Для сетей без рынка комиссий все три равны
      и `supportsPriority=false`.
    </ResponseField>

    <ResponseField name="recommendedUsd" type="string | null">`recommended` в USD.</ResponseField>
    <ResponseField name="estimatedConfirmationSeconds" type="number | null">Грубая оценка времени подтверждения.</ResponseField>
    <ResponseField name="supportsPriority" type="boolean">Влияет ли `priority` на комиссию в этой сети (EVM, Bitcoin-подобные).</ResponseField>
    <ResponseField name="error" type="string | null">Причина, если оценку получить не удалось (значения тогда `null`).</ResponseField>
  </Expandable>
</ResponseField>

<Note>
  Это ориентир на момент ответа. Точная сетевая комиссия конкретной выплаты фиксируется при
  построении транзакции и отдаётся в `networkFee` объекта выплаты после отправки в сеть.
</Note>

## Лимиты сайта: `GET /v1/public/limits`

Действующие ограничения именно для вашего сайта: частота запросов, размер bulk-пакета, границы
`lifetime` депозита и дефолтные окна мониторинга по сетям, минимумы по активам и лимиты выплат
с **текущим использованием окон** — можно заранее понять, пройдёт ли выплата.

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "ok": true,
    "data": {
      "rateLimit": { "requestsPerMinute": 120, "window": "minute" },
      "bulk": { "maxPayoutsPerRequest": 100 },
      "deposit": {
        "lifetime": { "minSeconds": 300, "maxSeconds": 2592000 },
        "defaultLifetimeSecondsByNetwork": { "TRON": 86400, "TON": 86400, "ETHEREUM": 86400 }
      },
      "assets": [
        {
          "assetCode": "USDT_TRC20",
          "network": "TRON",
          "depositEnabled": true,
          "payoutEnabled": true,
          "minDeposit": "1",
          "minPayout": "5",
          "payout": {
            "scope": "site",
            "perRequestMax": "5000",
            "dailyMax": "50000",
            "dailyUsed": "12340.5",
            "dailyRemaining": "37659.5",
            "weeklyMax": null,
            "weeklyUsed": null,
            "weeklyRemaining": null,
            "velocityMax": "10000",
            "velocityWindowSeconds": 3600,
            "velocityUsed": "800",
            "velocityRemaining": "9200"
          }
        }
      ]
    }
  }
  ```
</ResponseExample>

### Поля `assets[].payout`

<ResponseField name="scope" type="string">
  На каком уровне задан лимит: `site_asset` (сайт + актив), `site`, `asset`, `global`. Берётся
  самый специфичный. `payout: null` — лимиты для этой пары не настроены.
</ResponseField>

<ResponseField name="perRequestMax" type="string | null">Максимум одной выплаты.</ResponseField>

<ResponseField name="dailyMax / dailyUsed / dailyRemaining" type="string | null">
  Дневное окно (скользящие 24 ч): лимит, использовано (выплаты в `queued`/`signing`/`broadcasted`/`confirmed`), остаток.
</ResponseField>

<ResponseField name="weeklyMax / weeklyUsed / weeklyRemaining" type="string | null">Недельное окно (скользящие 7 дней).</ResponseField>

<ResponseField name="velocityMax / velocityWindowSeconds / velocityUsed / velocityRemaining" type="string | null">
  Velocity-окно произвольной длины (сек).
</ResponseField>

<Tip>
  Превышение любого окна при создании выплаты → `403 AMOUNT_ABOVE_MAXIMUM` с описанием окна.
  Проверить конкретную сумму заранее (в т.ч. с учётом комиссий) можно через
  `POST /v1/public/payouts/calculate` — поле `checks.withinLimits`.
</Tip>
