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

# Fees and Limits

> The fee tier applied to a market-maker account, how each fee is collected, and the limits the gateway enforces

## Fees

Every account references one fee tier. The values below are the launch tier for a market-maker account. An account with different commercial terms is attached to a different tier. Fill records carry the fees actually charged.

| Parameter                | Value                                             | Applies to                                  |
| ------------------------ | ------------------------------------------------- | ------------------------------------------- |
| `maker_fee_bps`          | 0 basis points of index notional                  | the maker side of a fill, per leg           |
| `taker_fee_bps`          | 5 basis points of index notional (0.05 %)         | the taker side of a fill, per leg           |
| `trade_fee_cap_bps`      | 1250 basis points of leg value (12.5 %)           | the upper bound on the trading fee, per leg |
| `settlement_fee_ppm`     | 150 parts per million of index notional (0.015 %) | the in-the-money holder at expiry           |
| `settlement_fee_cap_bps` | 1250 basis points of intrinsic value (12.5 %)     | the upper bound on the settlement fee       |
| rebate                   | none                                              | no side, no volume threshold                |

Trading-fee rates are basis points of index notional, and the trading-fee cap is basis points of leg value. The settlement rate is parts per million because it is smaller than one basis point. The settlement price and expiry sequence the settlement fee is charged against are on [Settlement](/market-makers/settlement).

## How fees are charged

There are two fees. A trading fee is charged when a fill executes, to each side at its own tier's rate. A settlement fee is charged at expiry to the holder of an in-the-money position. The writer pays nothing at settlement.

The trading fee is computed per leg and summed over the package:

```
fee = Σ over legs  min( index_notional × rate_bps / 10000,  leg_value × trade_fee_cap_bps / 10000 )
```

`index_notional` is the underlying's index price at execution times the leg quantity. `leg_value` is the leg's premium: the package premium for a one-leg package, and the leg's mark value for a multi-leg package. There is no combo discount, so a two-leg structure pays on both legs. Both sides pay their own rate, and the maker rate is 0 at launch. Fees are collected on chain in the fill transaction and reported as `maker_fee` on the fill.

The settlement fee is the smaller of 0.015 % of the index notional and 12.5 % of the intrinsic value, charged to in-the-money holders and netted per account for the expiry, so it never exceeds what the settlement pays. The formula and the expiry sequence are on [Settlement](/market-makers/settlement).

There is no rebate at any volume.

## Limits

The gateway enforces these bounds. A request over a limit is rejected or the connection is closed; the gateway does not queue it.

| Parameter            | Value                   | Applies to                                                                                                                                                          |
| -------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Rate budget          | 100 requests per second | every request an account sends over its trading sessions, counted together                                                                                          |
| Sessions per account | 3 sessions              | authenticated trading WebSocket connections; a fourth evicts the oldest with close code 4001, and a client that receives that code must not reconnect automatically |
| Legs per package     | 13 legs                 | one RFQ package, whether a single option or a multi-leg strategy                                                                                                    |
| Quote TTL maximum    | 3600 seconds            | `expires_at − issued_at` on a quote you sign; there is no fixed minimum, but a quote is refused if 2 seconds or less of life remain when it lands                   |
| Request window       | 5 seconds               | how long an RFQ stays open for quotes after the taker creates it                                                                                                    |
| Submission window    | 30 seconds              | how long after the taker accepts your quote the fill must be submitted on chain, cut short by your quote's own expiry if that comes first                           |

The rate budget is a fixed window rather than a refilling bucket. The counter opens on the first request and resets once a full window has elapsed since it opened, so a burst that exhausts the budget is refused until the window turns over. The sessions limit bounds what a stuck client can cost the gateway, since every private push to an account is fanned out to every open session.

Next: [Settlement](/market-makers/settlement)
