Skip to main content
Your rate falls as your rolling volume rises. The schedule is on-chain configuration, and the tier you sit in is on-chain account state — both readable, neither inferred.

The schedule

Maker reaches zero at tier 4. Beyond that, further maker improvement comes from the rebate program rather than from volume tiers, because those are different things being rewarded — see below.
Spot rates are carried in the same configuration structure, and perpetual markets are what is live today. The spot columns are the schedule that applies when spot markets open; they are not currently charged against anything.
This is the reference schedule, not an oracle. The live table is published on-chain and can be read directly. Any integration that hard-codes these numbers will eventually apply a rate the network is not charging — see Developers.

How volume is measured

weighted volume=perpetual volume+2×spot volume\text{weighted volume} = \text{perpetual volume} + 2 \times \text{spot volume} Spot counts double. Spot volume is harder to generate and carries none of the leverage that inflates perpetual notional, so weighting it more heavily is what makes the two comparable as a measure of activity rather than a measure of leverage. Three properties of the window: Rolling, not calendar. Fourteen days, measured backwards from now. There is no monthly reset to trade around and no cliff at a month boundary. Recalculated daily. Volume is snapshotted once per day at 00:00 UTC. The window is the difference between today’s cumulative snapshot and the one from fourteen periods ago — which is what makes it a rolling window rather than a running total. Aggregated to the parent account. Every sub-account’s volume is summed under its parent address, and the resulting tier applies to all of them. Splitting activity across sub-accounts neither helps nor hurts; it is the same number either way.

When your tier changes

Tiers are recomputed once per day and applied in the first block after 00:00 UTC, to every account whose rate changed, in batches.
00:00 UTCsnapshot cumulative volume
Window volumetoday’s snapshot minus the one from 14 periods ago
Tier tableread live from the chain
Changed rates onlybatched into a protocol transaction
The chain resolves the ratefrom the tier index
The tier table is read every pass, never heldA service carrying its own copy keeps applying yesterday’s schedule after the network changed it, and nothing looks wrong until someone reconciles a fee.
Changes are detected on rates, not tier numbersA threshold that moves, or a tier that is re-priced, changes what you pay without changing your tier number.
The chain resolves the final rateThe transaction carries a tier index; an index outside the valid range fails the entire batch rather than partially applying it.
A day counts as applied only when every batch commitsAn interruption mid-pass replays the whole day, which is safe because the same window always produces the same answer.
Four things in that loop are worth stating, because they are the difference between a schedule that is correct and one that is merely usually correct. The tier table is read from the chain every pass, never held. A service carrying its own copy would keep applying yesterday’s schedule after the network changed it, and nothing would look wrong until someone reconciled a fee. Changes are detected on rates, not on tier numbers. Comparing tier positions misses two real cases: a threshold moving so that an unchanged account lands in a different tier, and a tier being re-priced while its number stays the same. Both change what you pay. Neither changes your tier number. The transaction carries a tier index; the chain resolves the rate. The authoritative mapping from tier to rate is applied at execution, against the configuration live at that block. An index outside the valid range fails the entire batch rather than partially applying it. A day counts as applied only after every batch commits. An interruption mid-pass replays the whole day, which is safe because the computation is idempotent — the same window produces the same answer. This whole loop runs outside block execution and writes its result back on-chain. See Program services for why that shape, rather than computing volume inside the block.

Market maker rebates

Makers supplying a meaningful share of the venue’s liquidity are paid rather than charged. A negative rate is a rebate, received on every maker fill. The basis is different from volume tiers, and that difference is the point. Tier eligibility is measured against your absolute volume. Rebate eligibility is measured as a share of the entire venue’s maker volume — so it rewards being a significant fraction of the book, which is not the same thing as trading a lot. An account can be large in absolute terms and immaterial to the book’s depth; the rebate is aimed at the accounts that would be missed if they left. Rebates are bounded on-chain: a maker rate cannot go below −0.1% regardless of configuration. See Trading fees.

Negotiated rates

Rates can be set directly against an account, outside the tier schedule. An account carrying a negotiated rate is deliberately skipped by the nightly tier pass. Without that exemption, the daily recalculation would overwrite agreed terms the first time volume moved, and would keep doing so every night — the kind of failure that is invisible until someone reconciles a month of fills.

Reading your tier

Both halves are chain state and both are queryable: the schedule through the fee configuration, and your account’s assigned tier and rate through account state. The habit worth building into any integration is to read both live and compute the expected cost from them, rather than storing a rate at onboarding. That is also the only way to detect the case where your rate changed for a reason other than your own volume — a schedule revision, a threshold move, a negotiated rate being applied.

Where to go next

Trading fees

How a fee is calculated and which rate applies.

Market making

What the venue asks of a maker, and what it provides.

Program services

How the tier is computed off-chain and committed back.

Non-trading fees

Bridge, account, vault, and liquidation costs.