appFees.feeBps is an integer from 0 to 10000, where 10000 is 100%. A rate of 25 requests a 0.25% fee. The charged amount comes from the quote, not the rate alone: collection depends on the route.
- Embedded wallet
- Custom signer
Configure the fee
Start with the embedded-wallet example in Send a transaction. It defineswallet, the chains, tokens, amount, and transfer calls used here.Add appFees to that request. Keep the source and other options from the transaction guide when your flow needs them:clientConfig is the provider, client ID, and sponsorship configuration from the shared setup.Update your existing client rather than creating a second one. Its default applies to SDK intents, batch items, the EIP-1193 provider, and wagmi when they use that client.Override the default with appFees on an individual sendIntent request or sendBatchIntent item. Use { feeBps: 0 } to disable the fee for that intent; omitting appFees inherits the default. With neither a default nor an override, no fee is requested. Non-integer or out-of-range rates are rejected before signing.Keep application authentication configured even for user-paid intents. The app JWT identifies your Rhinestone project, which receives the fee; the rate is not configured in the developer portal.Display the fee
The review dialog shows App fee as a separate charged line and includes it in the total. It is never labeled sponsored. An intent signed with a session key shows no review, so disclose the fee in your own UI before the user grants the session.Validate the rate
The browser chooses the rate. For sponsored intents, add an assertion to the signer from Sponsorship setup:extensionToken() refuses to issue a grant if the requested rate differs from 25 or is missing. Use sponsorshipMode: "required" when sponsorship denial must stop the flow; disabled does not request a sponsorship grant.This check authorizes the requested rate, not the amount ultimately collected. It does not enforce a fee on self-funded transactions or guarantee that a route can carry one. See Policies and security for the authorization boundary.