# Staking Overview

Source: https://developers.bitgo.com/docs/stake-overview

## Overview

Certain blockchains allow for network participation through staking - earning rewards by locking your digital assets with a network validator. If rewards automatically re-stake, you earn an annual percentage yield (APY). If rewards don't automatically re-stake, you earn an annual percentage rate (APR).

To determine if an asset is available for staking through BitGo, see the **Wallets** column in the [Coins and Tokens](/coins) table.

> 📘 **Note**
>
> Staking protocols differ by asset. For example, some assets may require you to specify a staking time limit, require separate transactions to claim your rewards, or have a cooldown period after unstaking before the assets are available for further transactions. To learn asset-specific staking details, you can call the [List coins available for staking](/reference/v1stakingcoins) endpoint.

You can [download](https://assets.bitgo.com/downloads/bitgo_staking_postman_collection.json) the Staking Postman Collection and import it into [Postman](https://www.postman.com/) to quickly explore and test the Staking APIs.

<Tabs>
<Tab title="Custody & Self-Custody Wallets">

## Staking Flow

For custody and self-custody wallets, staking generally entails the following:

1. **Stake** - To stake an asset from custody or self-custody wallets, you create a staking-request transaction. Staking transactions must abide by your enterprise and wallet policies and therefore must receive all required signatures and approvals before BitGo signs and broadcasts the transaction.
    1. **[Request Stake](/reference/v1stakingrequestcreate)** - Create a staking request with a whitelisted validator, or a validator of your choosing. Staking requests includes one or more delegation transactions.
    1. **[Approve](/reference/expresspendingapprovals)** (Optional) - You can configure a wallet policy to require admin approval, providing an extra layer of security. Transactions remain in a pending-approval status until final approval. Approving a transaction doesn't apply a signature.
    1. **Send** - Use the JavaScript SDK to sign and send the staking request.
    1. **Broadcast** - Using a BitGo node, BitGo broadcasts the transaction to the network for confirmation.
1. **Earn Rewards** - Your assets either lock in your BitGo wallet or they're sent to the validator's staking wallet. Once validated, you begin earning rewards.

## Unstaking Flow

For custody and self-custody wallets, unstaking generally entails the following:

1. **Unstake** - Like staking, to unstake assets you create a staking-request transaction. Unstaking transactions must abide by your enterprise and wallet policies and therefore must receive all required signatures and approvals before BitGo signs and broadcasts the transaction.
    1. **[Request Unstake](/reference/v1stakingrequestcreate)** - Create an unstaking request with the validator. Unstaking requests can include unstaking one or more of your delegations.
    1. **[Approve](/reference/expresspendingapprovals)** (Optional) - You can configure a wallet policy to require admin approval, providing an extra layer of security. Transactions remain in a pending-approval status until final approval. Approving a transaction doesn't apply a signature.
    1. **Send** - Use the JavaScript SDK to sign and send the staking request.
    1. **Broadcast** - Using a BitGo node, BitGo broadcasts the transaction to the network for confirmation.
1. **Claim Rewards** - BitGo automatically generates a transaction to claim your rewards. You can set up a webhook to receive a notification when the transaction is ready for your to approve and sign.
    1. **[Approve](/reference/expresspendingapprovals)** (Optional) - You can configure a wallet policy to require admin approval, providing an extra layer of security. Transactions remain in a pending-approval status until final approval. Approving a transaction doesn't apply a signature.
    1. **Sign** - Use the JavaScript SDK to sign the staking request.
    1. **Broadcast** - Using a BitGo node, BitGo broadcasts the transaction to the network for confirmation. Assets are available in your wallet after any required unbonding or cooldown period.

</Tab>
<Tab title="Go Accounts">

## Staking Flow

1. **Stake** - To stake assets from Go Accounts, you create a staking request. BitGo uses your request to generate staking transactions that delegate your assets to a validator on-chain.
    1. **[Request Stake](/reference/v1gostakingrequestpreview)** - Create a staking request with a whitelisted validator.
    1. **Sign** - Use the JavaScript SDK to sign the Go staking request.
    1. **[Finalize Stake](/reference/v1gostakingrequestfinalize)** - Finalize the staking request by sending the half-signed payload to BitGo.
    1. **Broadcast** - Using a BitGo node, BitGo broadcasts the transaction to the network for confirmation.
1. **Earn Rewards** - Your assets are sent to the validator's staking wallet. Once validated, you begin earning rewards.

## Unstaking Flow

1. **Unstake** - Unlike staking, to unstake assets you only need to create an unstaking request. BitGo uses the request to generate unstaking transactions that undelegate your assets on-chain from the validator.
    1. **[Finalize Unstake](/reference/v1gostakingrequestfinalize)** - Finalize the unstaking request by specifying the unstaking details and sending them to BitGo.
    1. **Broadcast** - Using a BitGo node, BitGo broadcasts the transaction to the network for confirmation. Assets are available in your Go Account after any required unbonding or cooldown period.

</Tab>
</Tabs>

## Guides

* [Stake Assets](/docs/stake-assets)
* [Unstake Assets](/docs/unstake-assets)
* [View Rewards and Delegations](/docs/stake-rewards-delegations)
* [View Rewards for Go Accounts](/docs/stake-rewards-go-account)

## See Also

* [Coins and Tokens](/coins)
* [Concept: Staking](/docs/staking)
