Builder codes on Hyperliquid
The 100 USDC floor, the approval, the claim.
A builder code is Hyperliquid's own way for a frontend to earn a fee on the orders it sends. Each order carriesbuilder: {"b": <address>, "f": <tenths of a bp>}; f: 40 is 0.04%. The maximum is 0.1% on perps and 1% on spot. Source: Hyperliquid docs, Builder codes.
The approval
Each user approves a builder address once with approveBuilderFee, an EIP-712 action signed by the main wallet (never an API wallet), with a maximum rate. A user can hold up to 10 active approvals. The approval is readable with the info request{"type":"maxBuilderFee","user","builder"}.
The floor
A builder address accrues fees only while it holds at least 100 USDC of perps account value and is in standard account mode (the value"disabled" of userSetAbstraction; an address that never set a mode reads "default", and the house builder address earned its first fees in that state). Until the floor is there, Hyperliquid refuses the approval itself: "Builder has insufficient balance to be approved." The first transfer to a new address also costs 1 USDC of activation. This is why each new builder's first check is 101 USDC sent to its builder address: it switches the code on, stays as the floor while the app is listed, and returns to the house vault if the app is delisted.
The claim
Fees are credited to the builder address with every fill and read with {"type":"referral","user":<builder>}(builderRewards, unclaimedRewards, claimedRewards). They are claimed with the exchange action claimRewardsonce above 1 USD, into the spot balance.
The public record
Every fill routed through a builder address is published once a day:
https://stats-data.hyperliquid.xyz/Mainnet/builder_fills/{builder_lowercase}/{YYYYMMDD}.csv.lz4
columns: time,user,coin,side,px,sz,crossed,special_trade_type,tif,
is_trigger,counterparty,closed_pnl,twap_id,builder_feeHyperSeed reads this file for each app every day. Anyone can download the same file and redo every count on the app's page.