Skip to main content
This guide walks through the complete withdrawal flow: discover the account, approve share spending, prepare the withdrawal order calldata, submit, and monitor status.
Withdrawals on Amplify are asynchronous. Submitting a withdrawal order places it in a queue. Once processed by the protocol, the requested asset is transferred to the user. Monitor order status via GET /v2/amplify/withdrawalRequests.

Prerequisites

  • A Paxos Labs API key
  • An EVM-compatible signer (private key, HSM, or wallet service)
  • The user must hold vault shares (the BoringVault ERC-20 token) from a prior deposit

Step 0: Fetch Account Details

Retrieve the account’s contract addresses. You need the boringVaultAddress (the share token) and the withdrawQueueAddress (the approval spender).

Step 1: Approve Share Spending

Before submitting a withdrawal order, the WithdrawQueue contract must be approved to spend the user’s vault shares. Construct a standard ERC-20 approve(spender, amount) call:
  • Token contract: the boringVaultAddress
  • Spender: the withdrawQueueAddress
  • Amount: the share amount to withdraw (in share token base units, 18 decimals)
Submit this approval transaction and wait for confirmation before proceeding.

Step 2: Prepare Withdrawal Calldata

GET /v2/amplify/withdraw returns the transaction to submit a withdrawal order.

Parameters

The server decides whether to queue the order (submitOrder) or settle it atomically (submitOrderAndProcessAll) based on the account’s on-chain RolesAuthority configuration. You do not need to pass an atomic flag — atomic-eligible accounts are routed automatically.

Response

Step 3: Sign and Submit

Broadcast the transaction using the to, data, and value fields. The vault shares are locked in the WithdrawQueue upon confirmation.

Step 4: Monitor Status

Poll GET /v2/amplify/withdrawalRequests to track order progress. Omit the status predicate so the order remains visible as it transitions through terminal states:
Filtering on status=PENDING will cause the order to disappear from the response as soon as it reaches a terminal state, which hides the final outcome from readers polling for completion.

Complete Examples

Error Responses