How collection works
- Prepare a smart-account transaction with the
appFeesrate described in Set up. - Display the quoted fee before the user signs: the embedded wallet’s review shows it; with a custom signer, show it in your own UI.
- Sign and submit the selected quote through your normal transaction flow.
- Rhinestone collects an eligible fee with the transaction; verified delivery makes it earned revenue for your project.
- Withdraw the available project balance from App fees.
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.
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:
@rhinestone/wallet does not expose balance reads or withdrawals.
Read
unavailableUsd through GET /app-fees/balances with x-api-version: 2026-09.caucasus; older API versions and the SDK balance type above expose only the first two fields. Pending delivery is not earned revenue and is not included in these balances; pendingUsd means pending payout, not pending delivery.
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
Accumulated Solana earnings from payout-enabled collection chains join eligible
EVM earnings in the full-balance withdrawal at their original USD valuation,
net of Rhinestone’s applicable share. Fees awaiting finalized collection or
delivery, under refund review, refunded, or already reserved are excluded.
Native Solana payouts are not supported.
- Select Initiate withdrawal.
- Choose an available EVM destination chain and stablecoin (USDC, USDT0, or USDT, as offered on that chain).
- Confirm the full balance sweep and payout address.