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
- Client submits a withdrawal request via API or dashboard.
- The policy engine evaluates the request against the wallet’s policy (whitelist, limits, quorum).
- If policy passes, the MPC coordinator initiates a signing session.
- Mobile signer(s) receive a push notification and confirm signing from the app.
- The coordinator collects the required partial signatures and assembles the final transaction.
- The Vault broadcasts the signed transaction to the network.
- 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:
| Status | Description |
|---|---|
PENDING | Policy evaluation in progress |
PENDING_APPROVAL | Awaiting the required mobile approvals |
PENDING_SIGNATURE | Approvals collected; MPC signing in progress |
READY_TO_SEND | Signed; ready to broadcast |
SENT | Broadcast to the network — terminal success |
REJECTED | Rejected by an approver or signer, or cancelled by a user |
REJECTED_BY_POLICY | Blocked by a policy rule |
NO_POLICY_FOUND | No matching policy (default-deny) |
EXPIRED | Approval window expired |
FAILED | Signing 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.