How DOT Staking Works
DOT staking is made of five operations, each submitted as its own service request:
Unbonding and withdrawing are two separate steps: Unbond starts the unbonding period, and Withdraw Unbonded completes it once the period is over. The dashboard shows when each unbond can be withdrawn.
Wallets
All five operations require a DeFi wallet that holds DOT. Otherwise the request is rejected withER-259 for a wallet that isn’t a DeFi wallet, or ER-3016 for a wallet that doesn’t hold DOT.
Staking Operations
Every DOT staking operation is submitted the same way as any other Digital Asset Service Desk product: create the instruction withPOST /v3/api/servicedesk/create and a {"serviceId": ..., "payload": ...} body, then submit, confirm and approve it following the same steps described in Signing the Payload and demonstrated end-to-end in Wallet Creation. What follows is what’s specific to each DOT operation; see Products & Services for the exact payload template of each one.
Amounts are expressed in DOT and sent as strings. In the wallet’s transactions, each DOT staking operation appears as a transfer to your own wallet: no funds move to another account.
Bond (0x0020-012)
Bonding locks amount DOT from walletId for staking.
- Amount:
amountmust be a plain decimal number, otherwise the request is rejected withER-116. It must be above zero and at least the smallest unit of DOT (0.0000000001 DOT), otherwise it is rejected withER-121. - Balance: the wallet must hold the amount plus the network fee, otherwise the request is rejected with
ER-255orER-214. - Status: the first bond of a wallet moves its dashboard
statusfromNOT_BONDEDtoBONDED.
Bond Extra (0x0020-013)
Bond Extra adds amount DOT to the wallet’s existing bond. The payload and the rules on amount and balance are the same as for Bond. It doesn’t change the dashboard status.
Nominate (0x0020-047)
Nominating chooses the validators or nomination pools your bonded DOT is nominated to, with the addresses in stakePoolAddresses. Nominating again replaces the previous nominations.
- Addresses: send between 1 and 16 addresses, otherwise the request is rejected with
ER-3007. An address can’t be blank (ER-107). Zodia doesn’t check the addresses when the request is created, so check them before you submit. - Bonded DOT: nominating requires bonded DOT.
- Status: once a Nominate request is confirmed, the dashboard
statusshowsNOMINATING.
Unbond (0x0020-014)
Unbonding starts the unbonding period for amount DOT. The rules on amount and balance are the same as for Bond.
- Available amount:
amountcan’t exceed the amount available to unbond, which is the dashboardstakeBalanceminus the amounts inunbondingIntents. A larger amount is rejected withER-122, and the message gives the limit. - Still bonded: unbonding DOT stays part of
stakeBalanceuntil it is withdrawn. - Withdrawal date: each unbond appears in
unbondingIntentswith awithdrawableAtdate, the point at which it can be withdrawn. - Status: unbonding doesn’t change the dashboard
status.
Withdraw Unbonded (0x0020-015)
Withdraw Unbonded moves back to your wallet all the unbonded DOT whose unbonding period is over. There is no amount: if you send one, it is ignored.
- Nothing to withdraw: if no unbond has reached its
withdrawableAtdate yet, the request is rejected withER-3008. - One at a time: a request withdraws what is eligible when it is confirmed, so submit one Withdraw Unbonded at a time for a wallet.
Tracking Your Position
Get DOT Staking Dashboard returns the staking position of a DOT wallet: its status, its stake balance and its unbonding amounts. It takes the wallet ID only:- Amounts:
amountis a string in DOT with 8 decimals and comma thousands separators.fiatValueis a string with 2 decimals and comma thousands separators, expressed infiatCurrency, the fiat currency configured for your account. - No staking activity: a wallet that has never bonded returns
NOT_BONDED, astakeBalanceof0and an emptyunbondingIntentslist, not an error. - Up to date: the figures reflect your confirmed staking requests at the time of the call.
Notifications
Each DOT operation results in an on-chain transaction. If you have webhooks configured, you receive Transfer notifications when it is posted on chain and when it is confirmed. To know when unbonded DOT can be withdrawn, usewithdrawableAt on the dashboard.
Errors
See Staking Error Codes for the errors specific to DOT staking.FAQs
How long until I can withdraw unbonded DOT?
Unbonded DOT can be withdrawn once the network’s unbonding period is over. ThewithdrawableAt date of each entry in unbondingIntents shows when.
Why does my stake balance still include the DOT I unbonded?
Unbonding DOT stays bonded until it is withdrawn, as it does on Polkadot itself. It leavesstakeBalance once you withdraw it with Withdraw Unbonded. The amount you can still unbond is stakeBalance minus the amounts in unbondingIntents.
Can I change the validators I nominate?
Yes. Send a new Nominate request: its addresses replace the previous ones.Why does my wallet show BONDED and not NOMINATING?
NOMINATING appears once a Nominate request (0x0020-047) for the wallet is confirmed. Until then, a wallet with bonded DOT shows BONDED.
Why was my Withdraw Unbonded rejected with ER-3008?
None of the wallet’s unbonds has reached its withdrawableAt date yet. Check the dashboard and try again once one has.