# Fees

Only confirmed fills pay a fee:

```text
total fee = venue fee charged to the user + Mosaiq fee
```

Both parts are computed from fill notional and liquidity role and settled with
the fill. An unfilled order pays nothing. Rates per venue market are published
by [`GET /v1/fees`](/api/fees); charged amounts are reported per fill in
`userFills[].fees`.

## Venue fee

Mosaiq executes through pooled venue accounts, so the venue fee tier is the
one earned by the Mosaiq account, not by each trader.

On Hyperliquid, Mosaiq caps the venue rate charged to users at the Gold staking
discount (20%, the tier for staking more than 10,000 HYPE) without the trader
staking anything. If the execution account has a better discount, users get
the better rate; if it has a worse one, Mosaiq absorbs the difference. HIP-3
markets start from that rate and apply the deployer fee scale and growth-mode
multiplier published by the DEX.

On Lighter, users pay the account's live venue rate.

## Mosaiq fee

The Mosaiq fee is fixed in code per venue. Today it is 0 bps maker and 0 bps
taker on every Hyperliquid venue, and 0 bps maker and 1 bps taker on Lighter.
Any change is a code release; read [`GET /v1/fees`](/api/fees) rather than
hardcoding rates.

Venue rates are fetched when the gateway starts, so `/v1/fees` reflects the
venue tier at the last restart.
