Withdraw from a vault from a Smart Account
Withdraws the vault’s underlying asset (e.g. USDC) from an end user’s EVM Smart Account’s position in a vault. The share approval and withdrawal are batched into a single user operation, whose hash is returned in userOpHash.
The withdrawal reverts if the vault’s share price moves beyond maxSlippageBps before the user operation is included onchain.
Poll getUserOperationWithEndUserAccount until the user operation reaches a terminal status.
For withdrawals from EOA accounts, use withdrawFromVaultWithEndUserAccount instead.
Provide either amount or withdrawAll: true. The amount field accepts human-readable amounts as decimal strings (e.g., “1.5”, “25.50”) in the standard unit denomination of the vault’s underlying asset. Set withdrawAll to true to withdraw the entire position: every vault share held by the account is redeemed, so no residual shares remain from interest that accrues before execution.
Authorizations
A JWT signed using the developer's own JWT private key (in the case of JWT authentication), or an end user JWT signed by CDP, encoded in base64. This is used for End User Account APIs.
Headers
A JWT signed using your Wallet Secret, encoded in base64. Refer to the Generate Wallet Token section of our Authentication docs for more details on how to generate your Wallet Token.
Path Parameters
The ID of the end user.
^[a-zA-Z0-9-]{1,100}$The 0x-prefixed address of the EVM Smart Account to withdraw from. A blockchain address. Format varies by network (e.g., 0x-prefixed for EVM, base58 for Solana).
1 - 128^0x[0-9a-fA-F]{40}$"0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
Query Parameters
The ID of the CDP Project. Required for end users authenticated using custom auth (i.e. a non-CDP JWT provider).
^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"8e03978e-40d5-43e8-bc93-6894a57f9324"
Body
A request to withdraw the vault's underlying asset (e.g. USDC) from a vault position held by an end user's EVM Smart Account. The share approval and withdrawal are batched into a single user operation.
The globally unique ID of the vault, which is a UUID prefixed with the string vault_.
^vault_[a-f0-9-]{36}$"vault_019f5f10-096a-7a23-86df-f479650d813f"
The amount of the vault's underlying asset to withdraw, as a decimal string in standard unit denomination of the asset (i.e. "25.50" for 25.50 USDC). Cannot be used when withdrawAll is true.
^\+?(?:(?:0*[1-9]\d*)(?:\.\d*)?|0*\.\d*[1-9]\d*)$"25.50"
Whether to withdraw the account's entire position in the vault. When true, every vault share held by the account is redeemed for the underlying asset (e.g. USDC). Cannot be true when amount is set.
true
The 0x-prefixed address that receives the withdrawn underlying asset. Defaults to the withdrawing account given in the path.
1 - 128^0x[0-9a-fA-F]{40}$"0x1234567890123456789012345678901234567890"
The maximum share-price movement tolerated between calldata construction and onchain execution, in basis points. Defaults to 100 bps (1%) when omitted.
0 <= x <= 9999100
The ID of the Temporary Wallet Secret that was used to sign the X-Wallet-Auth Header.
^[a-zA-Z0-9-]{1,100}$"e051beeb-7163-4527-a5b6-35e301529ff2"
Whether to use CDP Paymaster to sponsor gas fees. When true, the user operation gas will be paid by the Paymaster, allowing users to withdraw without holding native gas tokens. Cannot be used together with paymasterUrl.
true
Optional custom Paymaster URL to use for gas sponsorship. This allows you to use your own Paymaster service instead of CDP's Paymaster. Cannot be used together with useCdpPaymaster.
11 - 2048^https?://.*$"https://api.developer.coinbase.com/rpc/v1/base/AbCdEf123456"
The ERC-7677 context object forwarded to the paymaster service as part of the paymasterService capability. The fields in this object are defined by the paymaster service provider; CDP forwards them to the paymaster unchanged. This field is only valid when a paymaster is configured for the request. Providing paymasterContext without a paymaster configured results in an invalid_request error.
Response
Successfully broadcast the withdrawal user operation.
The result of a vault withdrawal from an EVM Smart Account after broadcast.
The hash of the user operation executing the withdrawal, as a 0x-prefixed hex string. Poll getUserOperationWithEndUserAccount for the operation's status.
^0x[0-9a-fA-F]{64}$"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"