Skip to content

wallet-cli stake withdraw

Withdraw expired unfrozen TRX.

Synopsis

wallet-cli stake withdraw [--dry-run | (--sign-only | --build-only) [--expiration <ms>] | --wait [--wait-timeout <ms>]]
                          [--permission-id <n>] [options]

Description

Claims every pending unstake whose waiting period has expired, moving the TRX back into the account's available balance. One call sweeps all expired entries — there is nothing to select. See what is currently withdrawable (and when the rest matures) with stake info.

Withdrawing also frees up unstake slots (max 32 pending unstakes per account).

By default the command returns at submission; --wait blocks until confirmed. Requires an account. The master password (via --password-stdin) is needed only by the modes that sign — --dry-run and --build-only do not unlock the wallet and run without it. Watch-only accounts fail with watch_only_no_signer in a signing mode.

Options

Option Description
--dry-run Estimate only, no signature/broadcast; excludes --sign-only / --build-only
--sign-only Sign without broadcasting, output the signed hex; excludes --dry-run / --build-only; pairs with --expiration
--build-only Build and estimate, output the unsigned hex; excludes --dry-run / --sign-only; pairs with --expiration
--expiration <ms> Transaction expiration in ms, up to 86400000 (24h); only with --sign-only or --build-only; omitted = node default (~60s)
--permission-id <n> Permission group to sign with (0=owner, 1=witness, 2-9=active); default 0
--wait / --wait-timeout <ms> Poll after broadcast until confirmed/failed (cap default: config waitTimeoutMs, built-in 60000)
--password-stdin Master password from stdin

Plus the global options.

Examples

In the examples, $PW is your master password (from an environment variable, password manager, etc.), fed on stdin via --password-stdin.

Default — returns the submitted receipt:

echo "$PW" | wallet-cli stake withdraw --network tron:3448148188 --password-stdin
⏳ Withdrew expired TRX to balance
  TxID    e5f...
  Status  pending — not yet on-chain
! Track it: wallet-cli tx info --network tron:3448148188 --txid e5f...
echo "$PW" | wallet-cli stake withdraw --network tron:3448148188 --password-stdin -o json
{"schema":"wallet-cli.result.v1","success":true,"command":"stake.withdraw","data":{"kind":"stake-withdraw","stage":"submitted","txId":"e5f..."},"meta":{"durationMs":15,"warnings":[]},"chain":{"family":"tron","network":"tron:3448148188","chainId":"3448148188"}}

Add --wait to block until confirmed:

echo "$PW" | wallet-cli stake withdraw --network tron:3448148188 --wait --password-stdin
✅ Withdrew expired TRX to balance
  TxID    e5f...
  Block   #68,763,120
  Status  success

Output

data varies by stage:

Stage Fields
default (submit) kind: "stake-withdraw", stage: "submitted", txId
--wait (confirmed) above, plus confirmed, blockNumber, feeSun, failed

Exit status

0 submitted (or built/signed in early-exit modes) · 1 execution failure (watch_only_no_signer, auth_failed, rpc_error, timeout) · 2 usage error.

See also

stake unfreeze · stake info · reward withdraw (voting rewards are a separate command)