Every order placed through a bot or frontend built on Hyperliquid can
carry a builder field — an address and a fee, capped hard at 0.1% of
notional (100 "tenths of a basis point," in the protocol's own units,
which is a strange enough denomination that I got it wrong the first
two times). If you're building trading infra on HIP-3 and not attaching
this field, you're routing every fill through the protocol for free.
The mechanics are two payloads, not one:
Attaching the fee to an order — inject builder: {b: address, f: fee}
into the order object before it's signed. The tool refuses to overwrite
an existing builder field rather than silently clobbering it — if
something upstream already tagged the order, that's a bug to surface,
not paper over.
Getting approved to collect it — the user has to separately sign an
approveBuilderFee action, once, in their own client:
{"type": "approveBuilderFee", "maxFeeRate": "0.1%", "builder": address}
Skip this and your builder field on the order does nothing — the fee
only applies once the wallet has explicitly approved that specific
builder address up to that rate.
The fee math itself is one line — notional * (fee_tenths_bps / 100000)
— but getting the denomination right (tenths of a basis point, not basis
points, not percent) is the part that actually trips people up reading
the docs cold.
Full router + fee calculator + approval payload generator:
https://theglitchlist.com/product/hip-3-builder-code-fee-auto-router/?utm_source=devto&utm_medium=article&utm_campaign=n04_builder_router








