These are the steps for staking and unstaking SOL. For technical specifications including delegation requirements, reward mechanisms, slashing conditions, see our [Solana Protocol Knowledge doc](https://docs.figment.io/docs/solana).

> 👍
>
> You can decode transactions using the [Transaction Decoder](https://docs.figment.io/docs/transaction-decoder)

### Create Stake Account

This creates a new stake account and returns a delegating transaction for you to sign.

- [\[API Ref\] POST /solana/stake](https://docs.figment.io/reference/solana-stake)

### Sign & Broadcast the Transaction

Sign the transaction with the signing methods of your custody solutions. Examples:

- [Proprietary custody](https://docs.figment.io/recipes/stake-sol-from-hot-wallet-1#/)  
- [Fireblocks](https://docs.figment.io/recipes/stake-sol-from-fireblocks-1#/)

Once signed, broadcast the signed transaction and check transaction status via Figment API.

- [\[API Ref\] POST /solana/broadcast](https://docs.figment.io/reference/solana-broadcast)
- [\[API Ref\] POST /solana/tx](https://docs.figment.io/reference/solana-tx-status)

### Track Stake Accounts Activation

This returns a list of all your stake accounts, with on-chain status and balances.

- [\[Guide\] The Lifecycle of a Solana stake account](https://docs.figment.io/docs/sol-staking-101)  
- [\[API Ref\] GET /solana/stakes](https://docs.figment.io/reference/solana-stakes)

### Track Rewards

Returns rewards (protocol and MEV) and balances for all stake accounts, broken down by epoch and staking account.

- [\[API Ref\] POST /solana/rewards](https://docs.figment.io/reference/sol-rewards)

### Claim MEV Rewards

Withdraw JITO MEV rewards (shown as inactive balance on-chain) from an active stake account. The endpoint returns a withdraw transaction for you to sign and broadcast.

- [\[API Ref\] POST /solana/withdraw](https://docs.figment.io/reference/solana-withdraw)

To auto-compound the MEV rewards you withdrawn, create a new stake account to stake it. The endpoint returns a delegating transaction for you to sign and broadcast.

- [\[API Ref\] POST /solana/stake](https://docs.figment.io/reference/solana-stake)

### Manage Stake Accounts

Merge two active stake accounts. This step is optional. The endpoint returns a merge transaction for you to sign and broadcast.

- [\[API Ref\] POST /solana/merge](https://docs.figment.io/reference/build-solana-merge-tx)

Split a stake account. This endpoint is useful if you want to undelegate a specific amount, while keeping the rest delegated. After splitting, undelegate the new child account. The endpoint returns a split transaction for you to sign and broadcast.

- [\[API Ref\] POST /solana/split](https://docs.figment.io/reference/build-solana-split-tx)

### Undelegate

This returns an unsigned transaction to undelegate SOL from an active stake account. Sign and broadcast the undelegation transaction.

- [\[API Ref\] POST /solana/undelegate](https://docs.figment.io/reference/solana-undelegate)

### Withdraw

This returns an unsigned transaction to withdraw the SOL from your deactivated stake account. Sign and broadcast the withdraw transaction.

- [\[API Ref\] POST /solana/withdraw](https://docs.figment.io/reference/solana-withdraw)

### Durable Nonce Transactions (for multi-signer workflows)

Solana transactions reference a recent blockhash and expire after approximately 60–90 seconds. If your signing workflow takes longer — such as collecting approvals through Fireblocks TAP, an HSM committee, or an internal compliance review — the transaction may expire before it is broadcast.

Durable nonces eliminate the expiry window. A nonce account stores a value on-chain that replaces the blockhash, the transaction stays valid indefinitely until it is submitted.

**How to use**

Pass two optional parameters to any Solana transaction-building endpoint (/solana/stake, /solana/undelegate, /solana/withdraw, /solana/split, /solana/merge):

When nonce_account is provided, the response returns nonce_value and is_durable_nonce: true instead of last_valid_block_height. Sign the transaction offline at any time and broadcast when ready.

Fireblocks users — Send the transaction to Fireblocks as a PROGRAM_CALL operation, with useDurableNonce: false. Your vault key signs as fee payer and nonce authority in one signature, so no partial signing is needed when both roles share the same key.

A single nonce account can be reused across multiple transactions — each broadcast automatically advances the nonce for the next one.
