Withdraw Collateral
Withdraws specified amount of collateral from Vertex.
Rate limits
With spot leverage: 60 withdrawals/min or 10 withdrawals every 10 seconds per wallet. (weight = 10)
Without spot leverage: 30 withdrawals/min or 5 withdrawals every 10 seconds per wallet. (weight=20)
Request
Request Parameters
tx
object
Yes
tx.sender
string
Yes
Hex string representing the subaccount's 32 bytes (address + subaccount name) of the tx sender.
tx.productId
number
Yes
A spot product ID to withdraw from.
tx.amount
string
Yes
tx.nonce
string
Yes
signature
string
Yes
spot_leverage
boolean
No
Indicates whether leverage should be used; when set to false
, the withdrawal fails if the transaction causes a borrow on the subaccount. Defaults to true
.
Signing
The solidity typed data struct that needs to be signed is:
struct WithdrawCollateral {
bytes32 sender;
uint32 productId;
uint128 amount;
uint64 nonce;
}
sender
: a bytes32
sent as a hex string; includes the address and the subaccount identifier.
productId
: a uint32
that specifies the product you’d like to withdraw collateral from; must be for a spot product.
amount
: the amount of asset to withdraw, sent as a string. Note that this is different from the amounts provided in transactions that aren’t depositCollateral
. This is the raw amount of the ERC20 token you want to receive, i.e. if USDC has 6 decimals and you want to withdraw 1 USDC, specify 1e6; if wETH has 18 decimals and you want to withdraw 1 wETH, specify 1e18. Use all products query to view the token address of the corresponding product which can be used to determine the correct decimals to use.
nonce
: the tx_nonce
. This is an incrementing nonce, can be obtained using the Nonces query.
Note: for signing you should always use the data type specified in the solidity struct which might be different from the type sent in the request e.g: nonce
should be an uint64
for Signing but should be sent as a string
in the final payload.
Response
Success
{
"status": "success",
"signature": {signature},
"request_type": "execute_withdraw_collateral"
}
Failure
{
"status": "failure",
"signature": {signature},
"error": "{error_msg}",
"error_code": {error_code},
"request_type": "execute_withdraw_collateral"
}
Last updated