Stake Assets - Go Account
Build, sign, and send staking requests for Go Account wallets. See the Guide.
-
Using the JavaScript SDK, you can build, sign, and send the staking request to BitGo all in one call.
If your staking request doesn't require approval, BitGo applies the final signature using the BitGo key and broadcasts the transaction to the blockchain. If you Create Policy Rules to require approvals, the staking request remains in a
PENDING_APPROVALstatus until an admin approves it.Prerequisites:
- Complete the Get Started guide
- Set up your Go Account
- Enable staking in your enterprise by contacting sales@bitgo.com
-
If you have a policy that requires approval, you must approve the staking request before BitGo adds the final signature with the BitGo key. You cannot approve your own transactions — another admin must approve them.
// 1. Build, Sign, and Send Staking Request
// Use the JavaScript SDK for this step (see JavaScript tab)
// 2. Approve Request (Optional)
export APPROVAL_ID="<APPROVAL_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export OTP="<YOUR_OTP>"
curl -X PUT \
https://app.bitgo-test.com/api/v2/pendingApprovals/$APPROVAL_ID \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-d '{
"state": "approved",
"otp": "'"$OTP"'"
}'
// 1. Build, Sign, and Send Staking Request
const goStakingWallet = wallet.toGoStakingWallet();
const goStakingRequest = await goStakingWallet.stake({
amount: '<AMOUNT_IN_BASE_UNITS>',
walletPassphrase: '<PASSPHRASE>',
});
// 2. Approve Request (Optional)
const baseCoin = this.bitgoSDK.coin(initialPendingApproval.coin);
const pendingApproval = await baseCoin.pendingApprovals().get({ id: initialPendingApproval.id });
const result = await pendingApproval.approve(params);
// 1. Build, Sign, and Send Staking Request Response
{
"id": "5bdeed2f-a173-4ca1-936b-a36399af8152",
"type": "STAKE",
"coin": "tsol",
"status": "NEW",
"goSpecificStatus": "NEW",
"statusModifiedDate": "2025-07-25T20:30:57.046379144Z",
"createdDate": "2025-07-25T20:30:57.046365Z",
"amount": 1000000,
"frontTransferSendRequest": {
"halfSigned": {
"payload": "{\"coin\":\"ofctsol\",\"recipients\":[{\"address\":\"BpkMFStkryPDkVYqTbEGLqWD3FLoPLCwTV4sdN1XKBPF\",\"amount\":\"1000000\"}]...}",
"signature": "1f8e22206d9c95cff29154679f9d0b03bbb33e38b1f801090d0fb4f2e9464b969c263497689af974d13915dc72e00ffb3dfdac05c312ba9711e77014ffe2431c75"
}
}
}
// 2. Approve Request Response
{
"id": "e055adbc-66a3-4ccd-9a9d-726a05bca0cf",
"coin": "hteth",
"wallet": "2032e75g451052000636831abd797bd3",
"enterprise": "1032e75c451052000436831deb797af1",
"state": "approved",
"approvalsRequired": 1
}