Skip to Content

Withdrawals

A withdrawal is an outgoing transaction from a Vault wallet to an external address. All withdrawals must pass the policy engine before reaching the MPC signing layer. This page covers how to initiate withdrawals, fee estimation, and how to track broadcast status.

Withdrawal Flow Summary

  1. Client submits a withdrawal request via API or dashboard.
  2. The policy engine evaluates the request against the wallet’s policy (whitelist, limits, quorum).
  3. If policy passes, the MPC coordinator initiates a signing session.
  4. Mobile signer(s) receive a push notification and confirm signing from the app.
  5. The coordinator collects the required partial signatures and assembles the final transaction.
  6. The Vault broadcasts the signed transaction to the network.
  7. The transaction is monitored for confirmation.

See Transaction Lifecycle for a detailed sequence diagram.

Initiating a Withdrawal via the Dashboard

Open the Wallet

Navigate to Wallets and click the wallet you want to withdraw from.

Click “New Withdrawal”

Click the New Withdrawal button in the top-right corner of the wallet detail page.

Fill in the Transfer Form

  • Wallet — Select the source wallet.
  • Asset — Select the asset to send (only assets with a positive balance are shown). The network is determined by the asset.
  • Address — Choose a whitelisted destination or enter an address directly (validated for the asset’s network). A non-whitelisted address may be blocked by policy.
  • Amount — Enter the amount to send. The available balance and a fiat estimate are shown.

The fee is derived from the network at submission time; there is no per-tier fee selection.

Review and Submit

Review the fee estimate and total deducted amount. Click Submit Withdrawal. The transaction enters the approval flow.

Initiating a Withdrawal via the API

Withdrawals can be initiated programmatically as transfers. An API-initiated transfer goes through exactly the same policy evaluation, approval, and MPC signing pipeline as one submitted from the dashboard — an API key cannot bypass whitelists, limits, or the mobile approval step. See the Transfers API reference for endpoints, request/response shapes, statuses, and idempotency requirements.

Fee Estimation

Before submitting, you can retrieve a fee estimate without creating a transfer. The estimate is a single point-in-time figure for the transfer (there are no per-tier prices); see Fee Estimation for the per-chain fee models and the Transfers API for the exact request and response.

Transfer Statuses

A withdrawal moves through these statuses — the same set the dashboard shows, the API returns, and webhooks report:

StatusDescription
PENDINGPolicy evaluation in progress
PENDING_APPROVALAwaiting the required mobile approvals
PENDING_SIGNATUREApprovals collected; MPC signing in progress
READY_TO_SENDSigned; ready to broadcast
SENTBroadcast to the network — terminal success
REJECTEDRejected by an approver or signer, or cancelled by a user
REJECTED_BY_POLICYBlocked by a policy rule
NO_POLICY_FOUNDNo matching policy (default-deny)
EXPIREDApproval window expired
FAILEDSigning or broadcast failed

See the Transaction Lifecycle for the full state diagram and transition rules.

Cancelling a Pending Withdrawal

A withdrawal that is still PENDING_APPROVAL can be cancelled from the dashboard (it becomes REJECTED with a “cancelled by user” reason). Once signing has begun (PENDING_SIGNATURE or later), it can no longer be cancelled.

Once a transfer is broadcast (SENT), it cannot be reversed. Ensure destination addresses are correct before submitting.