Skip to main content
Rhinestone collects eligible app fees with the transaction and credits your project, identified by the app JWT for embedded wallets or the API key for custom signer integrations. You can monitor the resulting USD balance on the Dashboard’s App fees screen or through the project-level SDK.

How collection works

  1. Prepare a smart-account transaction with the appFees rate described in Set up.
  2. Display the quoted fee before the user signs: use the embedded wallet’s clear-signing review, or show the fee in your own UI.
  3. Sign and submit the selected quote through your normal transaction flow.
  4. Rhinestone collects an eligible fee with the transaction and credits it to your project.
  5. Withdraw the available project balance from App fees.
The rate applies to a different value depending on the transaction: For a fixed-output transaction, the fee is an additional debit and the user still receives the requested amount. For a max-out transaction, the fee comes from the balance being spent.

Collection limitations

App-fee collection requires:
  • A smart account. EOAs cannot carry an app fee.
  • A route that supports onchain fee collection.
  • An eligible asset in the transaction, such as a major stablecoin or wrapped native token.
If the selected route cannot collect the fee, the transaction can still execute without it. Treat collection as best effort and confirm the quoted app-fee amount before signing. App fees cannot be sponsored.

Monitor balances

For either wallet integration, view balances on the Dashboard’s App fees screen. For programmatic reads, use the project-level @rhinestone/sdk client with a backend-held API key:
The API key determines the project. For embedded-wallet revenue, use the same project identified by your app JWT. These balances are not tied to a wallet account. @rhinestone/1auth does not expose balance reads or withdrawals. Balances are valued in USD when fees are collected, so later token price changes do not affect them. They are already net of Rhinestone’s share. That share is taken from the app fee and does not increase the amount charged to the user. The same screen also shows Gross collected for the last 90 days. This analytics figure is before Rhinestone’s share and includes fees you may already have withdrawn, so it is not your live balance.

Set the payout destination

Open App fees and select the project. All active project members can view app-fee balances and withdrawal history. Only owners and admins can set the payout destination or initiate a withdrawal. Set an EVM payout address and enter it again to confirm. Withdrawals are irreversible, so use an address you control on every destination chain you intend to select. Changing the address affects future withdrawals only; an existing withdrawal keeps the address captured when it started.

Withdraw revenue

To initiate a withdrawal:
  1. Select Initiate withdrawal.
  2. Choose one of the available destination chains and tokens.
  3. Confirm the full balance sweep and payout address.
A withdrawal sweeps the full withdrawable balance. Partial withdrawals are not supported. Only one withdrawal can be in preparation or signing at a time. After it is broadcast, you can start another from newly collected fees while the earlier payout settles. Withdrawals are asynchronous. An accepted request progresses through Pending, Signing, and Submitted, then finishes as Completed or Failed. The detail view shows the gross amount, Rhinestone share, project payout, destination, and transaction hash when available.
A failed or expired withdrawal remains reserved in the pending balance. It does not automatically return to the withdrawable balance. Contact Rhinestone to have the funds released.