Staking
CeFi staking lets your users lock assets on your exchange for a period and earn a reward. You set up and run staking pools in Operator Controls → Exchange → Products → Stakes.
How CeFi staking works
CeFi staking runs inside your exchange, not on a blockchain. The exchange calculates and pays rewards based on the pool settings you choose.
- You create a pool: which asset is staked, which asset is paid as the reward, the rate, the term, and any penalties for unstaking early.
- You choose a funding account. Users' staked assets move into this account while they're staked, and rewards are paid out of it.
- A user stakes into the pool, which locks their assets for the term.
- If they unstake early (and the pool allows it), any slashing you set is applied, and the slashed amount stays in the funding account.
- At the end of the term, the user gets back their principal plus the reward, paid from the funding account.
Rewards come from the funding account's balance. If it doesn't hold enough of the reward asset, users don't get paid, even when they complete their stake. Fund it before you open the pool and keep it topped up for the pool's lifetime.
Turn staking on
- Go to Operator Controls → Exchange → Products → Stakes and open the CeFi tab.
- Turn on Allow CeFi Staking. This is the same setting as Cefi Staking under Exchange → Configuration → Features.
If your exchange's plan doesn't include staking, the Stakes page shows an upgrade notice instead.
Create a stake pool
On the CeFi tab, click Create Stake Pool and work through the steps.
1. Assets
- Asset for staking: the asset users lock.
- Asset for rewarding: the asset paid as the reward. Usually it's the same asset (stake USDT, earn USDT), but it can be a different one (stake BTC, earn USDT).
2. Name and rewards
- Pool Name: shown to users.
- Category (optional): a label to group pools, for example Promotions, Long-term or VIP.
- Automatic reward calculation: on by default. If you turn it off, daily rewards aren't calculated automatically. Only turn it off if you run your own reward system through the API.
3. Distribution rate
- APY: the annual percentage yield for the pool.
- Duration Term: the number of days users must stake for.
- Perpetual staking: no fixed term. Users can unstake at any time and earn for the days they stayed staked. Perpetual pools have no early-unstake penalties, so the next step is skipped.
4. Unstake early and slashing
- Allow users to unstake early: if you don't allow it, users can't unstake until the term ends. Use this with caution: users may be frustrated that they can't reach their funds.
- Slashing rules apply when a user unstakes early:
- Slash on principal (shown as "Slash on principle" in Operator Controls): a percentage of the staked amount. With 5%, a user who staked 1,000 USDT and unstakes early gets back 950 USDT.
- Slash on earnings: a percentage of the reward earned so far. With 50%, a user who has earned 5 USDT gets 2.5 USDT.
Slashed amounts stay in the funding account.
5. Stake amounts
Set the Minimum and Maximum amount a user can stake in the pool.
6. Disclaimer
An optional message shown to users before they stake. Use it to explain the pool's terms.
7. Funding account source
Search for the account by email and select it. Operator Controls shows the account's balance so you can check it holds enough of the reward asset. You can use the admin account or a dedicated staking account.
8. Review and confirm
Review every setting. To create the pool, type I UNDERSTAND and confirm.
Once a pool is live and users have staked, avoid changing its settings. Changes can have unexpected effects on users' stakes.
Open the pool to users
A new pool starts as Uninitialized. Users can't stake until you do both of these from the pool's row on the CeFi tab:
- Status: edit it and initialize the pool. It becomes Active.
- Onboarding: edit it, select Open onboarding and proceed. Users can now stake.
To stop new stakes while letting current stakers finish their term, edit Onboarding and select Close onboarding.
Pause or end a pool
From the pool's Status:
- Active → Paused: pausing stops rewards and blocks new stakes. Stopping rewards abruptly can harm users' trust in your exchange, so consider closing onboarding first and letting active stakers finish their term.
- Paused → Open: reopens the pool.
- Paused → Terminate the pool: settles and closes the pool. Operator Controls shows the total rewards to settle and the funding account's balance. Settlement takes up to 24 hours. Type
I UNDERSTANDto confirm.
Pool statuses are Uninitialized, Active, Paused and Terminated. You can filter the pool list by status.
Users' stakes and analytics
- User Staking tab: every user's stakes across all pools.
- Analytics tab: active pools, active stakers, amounts staked now and unstaking, and earnings accrued, settled and outstanding, broken down by pool.
- A single user's stakes are on their profile under Operations → People → Users → Stakes.
What users see
Users find your open pools on the exchange's staking page. When they stake, they see the pool's rate, term, slashing rules and your disclaimer, and confirm before their assets are locked.