Staking & Rewards
Stake $UNTAXED to unlock Pro and Ultra, trade at 0%, and — at Ultra — earn a pro-rata share of every fee the platform collects.
How tiers work now
Your tier is set by how much $UNTAXED you have staked, not just held. Staking is what unlocks the toolkit, drops your trade fee to 0%, and — at Ultra — earns you a share of the fee pool.
Your stake is summed across every wallet in the extension — you don't need the full amount in one wallet to reach a tier. Tier is re-checked automatically and cached for 5 minutes; it refreshes immediately after you stake or unstake.
Custodial by design
Staking is custodial: you deposit $UNTAXED into a dedicated Untaxed staking vault, and your balance is tracked off-chain against that deposit. Two things make this safe:
- Every deposit is verified on-chain. A stake is only credited after the server fetches your deposit transaction and confirms it really moved $UNTAXED from your wallet into the vault — and credits exactly the amount the vault received. Client-supplied amounts are never trusted.
- Withdrawals and claims require your signature. Unstaking and claiming rewards each need an ed25519 signature from the owning wallet, so no one — not even someone holding the app's public API key — can move or claim your funds.
Staking
Open the Pro tab and go to the Stake panel. Enter an amount and confirm. Untaxed sends that $UNTAXED from your active wallet into the staking vault, then records the deposit so your stake is credited and your tier updates.
- The deposit is a normal SPL-token transfer (both legacy SPL and Token-2022 mints are supported).
- Crediting waits for the deposit to be finalized on-chain, so a chain reorg can never credit a rolled-back deposit. If it isn't finalized yet, retry in a few seconds.
- Each deposit is idempotent on its transaction signature — the same deposit can never be counted twice.
Unstaking & the 24-hour cooldown
Unstaking is a two-step withdrawal:
- Request unstake. Sign the request with your wallet and your stake is debited immediately — so your tier drops right away, and a 24-hour cooldown begins.
- Withdraw. Once the cooldown elapses, confirm again and the vault sends your $UNTAXED back to the same wallet that staked it. The destination is hard-bound to your wallet and the amount is the recorded request amount — never client-supplied.
Rewards — Ultra only
The 0.25% pool fee that free-tier traders pay is collected to the treasury and shared back, 100%, to Ultra stakers. Untaxed keeps none of it. Here's how it accrues:
- Cycles. Rewards are distributed in fixed 48-hour cycles. At each cycle boundary, the treasury's collected SOL for that window is allocated to eligible stakers.
- Eligibility. You must hold Ultra-level stake for the entire cycle. Pro-tier stake earns 0% fees but does not earn a reward share.
- Your share. Each cycle's pool is split pro-rata by the minimum balance you held during the cycle — stake more, for the whole window, to earn more.
- Accrue-and-claim. Distribution only credits your claimable balance; no SOL moves automatically. You withdraw it yourself whenever you like.
- A safety reserve is always kept in the treasury for rent and transaction fees, and any rounding dust rolls into the next cycle.
Claiming
When you're Ultra, the Pro tab's Stake panel shows your claimable SOL balance and a claim button. Claiming signs a message with your wallet, and the treasury sends your full accrued balance to you.
- The claim amount is computed server-side — you always claim your exact accrued balance, never a number you type.
- There's a small minimum (~0.001 SOL) so a claim's network fee never eats the payout. Below that, let it accrue.
- Claims are reserved atomically, so the same balance can never be paid out twice.
Security model
The staking + treasury backend is built so the public API key alone can never move funds:
- Signing keys are server-side only. The vault and treasury hot wallets that send payouts live in protected secrets and are never returned to the app.
- Wallet-ownership proofs. Unstake and claim require an ed25519 signature from your wallet over a canonical message that embeds the action and a fresh timestamp.
- Replay protection. Every signed action's signature is single-use — a captured signature can't be replayed to withdraw or claim twice.
- Locked-down database. All staking tables are service-role only; the public key can't read or write them directly. The app only ever reaches this data through the staking functions.
- No double payouts. Unstake withdrawals and reward claims are broadcast once, the signature is recorded, and the flow never re-sends on a confirmation timeout.