Fees
One number, split two ways, and yours is the larger part.
The split
Every trade pays the pool fee you chose at launch — 1% by default. Of that:
| share of the fee | of trade volume, at a 1% fee | |
|---|---|---|
| You, the creator | 80% | 0.80% |
| Protocol → buybacks | 20% | 0.20% |
There is no third line. The protocol keeps nothing for operations: every cent it takes is earmarked
for buying a protocol coin back and destroying it. There is no protocol coin yet, and the buyback
contract (PairBuyback) is written and tested but not deployed; until both exist, the protocol's
share is collected by the protocol treasury.
Fees accrue on both sides of the pair. A buy pays in the pair asset, a sell pays in your coin — so a coin that trades in both directions earns you both.
Choice Exchange's pool manager can also charge a protocol fee of its own on pools in its deployment. Today it charges hookless pools nothing, which is what every launch here is; it is Choice's setting, not ours, and it would come out of the pool fee before the split above.
Your 80% cannot be taken away
The creator share is snapshotted onto your launch at the moment it happens. Changing the default afterwards applies to future launches only; it cannot reach back and cut what an existing coin earns. This is deliberate and it is tested: a creator commits to a launch on the strength of a number, and a protocol that can revise that number later has not really given them anything.
The protocol's own 20% is not snapshotted, because it is the protocol's own money.
You can read any launch's own figure with feeVault.launchOf(token).creatorFeeBps rather than taking
this page's word for it.
What you can do with your share
Two settings, both on the fee vault rather than on the pool — so you can change either one later, without relaunching.
Where it goes
setFeeRecipient(token, address) sends your share somewhere other than the wallet you launched from
— a multisig, a treasury, a splitter. Only you can call it, and it moves only your share.
A payout already deferred stays claimable by whoever it was owed to.
Or: buy back and burn
setFeeRoute(token, BuybackBurn) stops paying you and destroys your share instead. The part already
denominated in your coin is burned directly. The part in the pair asset buys your coin in its own
pool and burns what it buys — so the buyback walks the price up through the same range your launch
seeded.
It runs inside the same transaction as the fee collection, and the coins bought are sent straight to the burn address without ever touching the vault's balance.
No slippage bound is set on that buy. The input is a small, fixed amount of fees and the output is destroyed, so the worst a sandwich can do is cause fewer coins to be burned than the market would otherwise have given. No principal is exposed.
Or: pay your holders
setFeeRoute(token, HolderRewards) stops paying you and pays the people holding your coin instead.
Each collect sells the part of your share that is in your coin — in its own pool, for the pair asset
— and puts all of it, with the pair-asset part, into a pot the vault keeps for your launch
(rewardsPotOf(token)). It sits there, on chain and visible, until it is paid out to holders pro rata
to what they held through the interval since the last payout.
This one is a one-way door. You can move onto it from either other route, and once on it the route never changes again. Your holders are told your share is theirs, and a creator who could switch it back could make that promise and take it away the same afternoon.
Two things to know before choosing it. The split is computed off chain — who holds a coin is not
something a contract can read — by one address the protocol's owner names, and that is a trust
assumption: the contract guarantees nothing leaves the pot except to holders, never more than it
holds, with every recipient and amount published in a HolderRewardsPaid event so anyone can check
the arithmetic; it cannot check the arithmetic itself. And it only pays accounts: coins sitting in
Choice's vault, a bridge or a vesting contract earn nothing, because a payout sent to a contract is a
payout nobody can spend.
The route stays closed until the owner names a distributor: no launch can move onto it before then. Once one is named it pays in rounds; if it is ever offline the pots simply wait — they are accounted in the vault, not held by it — and the owner can replace it with one call without touching a single pot.
Collecting
collect(token) is permissionless — anyone can trigger it, including a bot, including you. It
does not matter who calls it, because the proceeds can only ever reach the recorded recipient, the
buyback sink and the treasury. There is no path by which a caller pays themselves.
If a payout cannot be pushed — a blacklist, a paused token, a contract that will not accept it — it becomes a claimable balance rather than reverting. One party being unable to receive must not strand everybody else's fees.

