Skip to main content
App fees are fees you charge your own users, collected by Rhinestone and credited to your project. This page is where you point them at an address and cash them out. For what an app fee is and how to charge one in code, see Fees. Everything lives in the Dashboard under Settings → App fees, for the project selected in the switcher. All members can view this page. Only owners and admins can change the payout destination or start a withdrawal; other roles see the same numbers read-only.

Payout destination

Payout destination is the address your collected fees are withdrawn to. Until you set one, you can’t withdraw. Press Set address (or Change, if one is already set), enter an EVM address, and re-enter it to confirm. Only owners and admins see the button.
Withdrawals are irreversible and go wherever this points, which is why the dialog asks for the address twice. Use an address you control on the chains you plan to withdraw to.
Changing the address only affects future withdrawals — anything already in flight keeps the address it was started with.

Revenue and balances

Revenue & balances shows two different things side by side:
  • Gross collected — app-fee revenue accrued over the last 90 days, before Rhinestone’s share. This is reporting, not a balance.
  • Withdrawable and Pending — your live balance, already net of Rhinestone’s share. Withdrawable is what you can sweep now; Pending is value reserved by a withdrawal that hasn’t settled.
All three are USD. Fees are valued in USD when they’re collected, so the balance doesn’t move with the price of the tokens they were collected in.
Gross collected is larger than your balance for two reasons: it’s before Rhinestone’s share, and it counts fees you may have already withdrawn.

Withdrawals

A withdrawal sweeps your full withdrawable balance to your payout address. There is no partial amount. Press Initiate withdrawal, choose a destination chain and destination token, and confirm. The dialog shows the amount being swept and the address it’s going to. You can only have one withdrawal in flight at a time. Withdrawals are asynchronous: the request is accepted immediately, then signed and submitted. The table tracks it through Pending, Signing, Submitted, and finally Completed or Failed. Click any row for the detail view, which breaks out Gross, Rhinestone cut with the rate applied, and Client net, plus the onchain transaction once there is one.
A failed withdrawal stays reserved and remains part of your pending balance — it does not automatically return to withdrawable. Contact us to release it.

Configuring collection

This page is about getting paid, not about what you charge.
  • Intents — set the rate per intent in code, with appFees. See Fees.
  • Deposits — configure the rate under Deposits → Setup.