Skip to content

Fees

Every rate lives in a single contract, FeeController. The app reads it; so can you. There is no fee that is not on this page, and no fee on this page that is not readable onchain.

The fee table

FeeLaunch rateCharged onGoes to
Mint0.40%issue, carved from the minted basket tokens60% curator / 40% treasury
Redeem0.40%redeem, taken in components60% curator / 40% treasury
Streaming0%— disabled at launch, see below60% curator / 40% treasury
Zap0.25%the USDG leg of every zap and savings-plan execution100% treasury (funds keeper bounties)
Basket creation0 at launch (flat, configurable)createBasket100% treasury

There is no management fee. Holding a basket costs nothing, forever, no matter how long you hold it. Every fee above is charged on an action you take — minting, redeeming, or routing a swap — and never on the assets sitting in your wallet.

That is a deliberate choice, not an oversight. A percentage-of-assets fee on a passive basket compounds silently against the holder and is invisible until it isn’t. We would rather earn when the protocol does something for you.

Hard caps, in code

Rates are changeable only through a 48-hour timelock, and the contract enforces ceilings that no admin can exceed:

  • Mint / redeem fee: ≤ 1%
  • Streaming fee: ≤ 3% / year
  • Zap fee: ≤ 0.5%

“The admin rugs the fees” is structurally impossible, not policy-impossible.

The streaming fee, and why it is off

FeeController ships with streamingFeeBps = 0. The accrual code short-circuits at zero, so no dilution occurs and no fee shares are minted: a basket held for a year has exactly the same units per token as the day it was created. You can verify this yourself by calling streamingFeeBps() on the contract in Addresses.

The mechanism still exists, capped at 3%/year, and governance can enable it through the same 48-hour timelock as every other rate. If that ever happens the change is queued publicly two days in advance and emits a RatesQueued event before it can take effect — you will always have notice and the ability to redeem first.

For reference, here is what it would do if switched on. It is the standard index-token dilution pattern: on every mint, redeem, or an explicit permissionless poke, the contract mints new basket tokens to the fee recipients proportional to elapsed time, and scales the basket’s effective units down by exactly the same factor, so every outstanding token stays fully backed. No component is ever sold to pay fees, so accrual works even while markets are closed. All accrual math runs at 27-decimal precision; rounding always favors the basket’s holders, with any residue bounded to a single wei per accrual.

Curator economics

Curators earn 60% of all basket fees for baskets they created, paid onchain and claimable anytime. At launch rates that means 60% of the mint and redeem fees — a curator earns when someone enters or leaves their basket, not while they sit in it. The zap fee is routing infrastructure and accrues fully to the treasury; curators earn on their product, not on plumbing. See Curators for worked examples.