Skip to main content
Zodia Custody enables you to stake DOT from a DeFi custody wallet directly through the Digital Asset Service Desk API, and to track your stake balance, nomination status and unbonding amounts with a dashboard endpoint. For ETH staking, see the ETH staking guide.

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 with ER-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 with POST /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: amount must be a plain decimal number, otherwise the request is rejected with ER-116. It must be above zero and at least the smallest unit of DOT (0.0000000001 DOT), otherwise it is rejected with ER-121.
  • Balance: the wallet must hold the amount plus the network fee, otherwise the request is rejected with ER-255 or ER-214.
  • Status: the first bond of a wallet moves its dashboard status from NOT_BONDED to BONDED.

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 status shows NOMINATING.

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: amount can’t exceed the amount available to unbond, which is the dashboard stakeBalance minus the amounts in unbondingIntents. A larger amount is rejected with ER-122, and the message gives the limit.
  • Still bonded: unbonding DOT stays part of stakeBalance until it is withdrawn.
  • Withdrawal date: each unbond appears in unbondingIntents with a withdrawableAt date, 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 withdrawableAt date yet, the request is rejected with ER-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:
Here is an example response for a wallet that is nominating and has one unbond in progress:
  • Amounts: amount is a string in DOT with 8 decimals and comma thousands separators. fiatValue is a string with 2 decimals and comma thousands separators, expressed in fiatCurrency, the fiat currency configured for your account.
  • No staking activity: a wallet that has never bonded returns NOT_BONDED, a stakeBalance of 0 and an empty unbondingIntents list, 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, use withdrawableAt 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. The withdrawableAt 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 leaves stakeBalance 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.

Contact

If you’re a Zodia client and want to learn more about this feature or enable it, contact our customer service team. Email us at customerservice@zodia.io. We’re here to answer questions, provide more details, or help activate the feature. Our team is ready to assist you with quick and effective support.