ETH$3,420
Trading/cash-back

Cash back

A quarter of every trading fee comes back to the wallet that paid it — as ETH, or as any token on the chain you nominate.

Every trade routed through the terminal pays a 1% platform fee. 25% of that fee comes straight back to the wallet that paid it, as an ETH balance you can claim whenever you like. There is nothing to opt into, no points, no season, and no lockup — it accrues on the trades you were making anyway.

And it does not have to stay ETH. Nominate any token on this chain as your payout asset and the claim buys it for you on the way out — so ordinary trading quietly accumulates ETH, a tokenized equity, or whatever else you picked. It is configured in Portfolio, on the Cash back card.

Default rate
25%
of the platform fee, every trade
Effective trade fee
0.75%
down from 1%, once claimed
Paid in
Anything
ETH by default · any token on the chain
Ceiling
90%
hard cap in the contract

#How it accrues

The trade manager has always pushed each trade’s platform fee to a fee receiver, as native ETH, with the trader’s address attached. Cash back is a new receiver that uses that address: it credits your share to you and banks the rest as protocol revenue. Nothing in the trading path changed to make this work — same manager, same fee, same approval.

texta 1 ETH buy, with the default rate
platform fee 1%                     0.010000 ETH
  referral carve-out (if any)      -0.001000 ETH  -> the referrer
  arrives at the receiver           0.009000 ETH
    your cash back (25%)          0.002250 ETH  -> credited to YOUR wallet
    protocol revenue                the remainder

no referrer on the trade:
  arrives at the receiver           0.010000 ETH
    your cash back (25%)          0.002500 ETH
  • It is a share of the fee, not a share of the trade. 25% of a 1% fee is 0.25% of the trade — which is the honest way to read it: your effective platform fee is 0.75%, not 1%.
  • Buys and sells both count. The fee is charged on the ETH side either way, so the cash back is denominated in ETH either way.
  • A referral is taken first. The referrer’s cut is carved out of the fee before the receiver sees it, so cash back applies to what actually lands there. Being referred does not cost you cash back so much as slightly reduce the base it is figured on.
  • It is credited per trade, immediately. There is no epoch to wait for and no snapshot to be present for. The balance is live contract storage the moment your trade confirms.

#Getting paid in any token

Your balance always accrues in ETH — that is what the fee is. What you choose is what it turns into on the way out. Nominate an asset and the claim routes your whole balance through the same trade manager your trades use, buying it in the same transaction and sending it to you.

Default
Native ETH. Nothing to set, nothing to route — it just pays out.
WETH
A 1:1 wrap inside the claim. Also needs no route.
Any token
Search the whole chain in the picker — tokenized equities, hood.dev launches, any memecoin with a market. The claim buys it at the balance’s own size, routed exactly like a manual buy would be.
Where it is stored
On-chain, per wallet (preferredAsset). It is a transaction, not a setting on our server — nobody can change your payout asset but you.
This is the interesting part
Set it to a tokenized stock and every trade you make passively buys you a slice of that stock. Set it to a token you believe in and your trading fees dollar-cost-average into it. The fee was leaving your wallet anyway; this decides what it comes back as.
A bad pick can never strand your balance
Routability is resolved when you claim, not when you pick. If nothing on the chain can route to your nominated asset — a dead token, a market that never existed — the ETH claim is always available, and the contract short-circuits it with no swap at all. The balance is yours in ETH regardless of what the picker says.

#Claiming

  • Pull-only, and always full-balance. There are no partial claims — the contract zeroes your balance and pays it out in one move, which is what keeps its solvency arithmetic trivial.
  • Three payout paths, always open: your nominated asset, plain ETH, or WETH. The last two ignore whatever the asset is set to, so you are never boxed in by an earlier choice.
  • You sign it. The receiver is not on the popup-free delegated key’s allowlist, deliberately — see Wallets & keys. A claim is an interactive click, so it rides your own credential.
  • Nothing expires. An unclaimed balance sits in contract storage indefinitely. There is no forfeiture rule and no decay.

#It is per wallet, on purpose

The contract knows addresses, not accounts. Your balance, your rate and your payout asset all key off the wallet that signed the trade, and there is no account linking inside it — which is the same property that makes running several wallets meaningful in the first place. If it aggregated your wallets on-chain, it would be publishing that they are related.

The Portfolio card papers over that where it is convenient and honest to: it sums every wallet for the headline, claims from each one in turn (one signature each), and the asset picker can apply your choice across all of them. Those are client-side loops over separate transactions, not a shared on-chain state.

#Rates

RateWhat it is
25%The default (defaultRateBps), applied to every wallet with no override. This is what you get without asking for anything.
HigherA per-wallet override (rateBpsOf) the protocol can set for a wallet — the hook for volume tiers and campaigns. The Portfolio card flags a boosted wallet as such.
90%MAX_RATE_BPS, a compiled-in constant. No setter can exceed it, so “up to 90% of the platform fee back” is the outer bound of what this contract can ever pay.

A rate change only affects future trades. Cash back is credited at trade time from the rate in force then, and once credited it is a balance — nothing can re-price it downwards afterwards.

#What protects the balance

  • The treasury cannot touch what is owed. Withdrawals are capped at freeBalance() — the contract’s ETH minus the sum of every trader’s unclaimed balance. The invariant holds whatever the rate config does next.
  • Split control. The owner key configures rates; a separate, self-rotating treasury address is the only one that can move the protocol’s own share out. Neither can reassign your balance or change your payout asset.
  • Every step is an event. Accrual, rate changes, asset changes and claims all emit, so the Portfolio card’s history and any independent audit read the same chain. Nothing about cash back lives in a private database.
Where it sits in the fee stack
Cash back does not change what a trade costs, what a pool charges, or what a creator earns — it redistributes part of the protocol’s own take back to the trader. The full accounting is on Fees, and the receiver’s address is on Contract addresses. Rates above were read from mainnet on 2026-07-29; defaultRateBps() and effectiveRateBps(you) are the authority.
chain 4663·on-chain values read 2026-07-29·Blockscout