Skip to main content

Withdraw as a Liquidity Provider

LP withdrawals are asynchronous - shares are burned immediately, but WETH is delivered as Lido withdrawal claims are processed. This two-step process follows the EIP-7540 async redemption standard.

Step 1 - Request redemption

Call requestRedeem(shares, controller, owner):

  • shares - number of seevWETH shares to redeem.
  • controller - address that will claim the WETH (usually your own address).
  • owner - address whose shares are burned (usually your own address, or an operator can act on your behalf).

Shares are burned immediately. The vault records the WETH amount owed based on the current share price.

Withdraw tab - enter shares, request redemption, confirm tx

Step 2 - Wait for allocation

The vault needs WETH to fulfill your request. WETH becomes available as the keeper processes finalized Lido withdrawal NFTs.

You can check your request status:

  • pendingRedeemRequest(requestId, controller) - WETH not yet allocated.
  • claimableRedeemRequest(requestId, controller) - WETH allocated and ready to claim.
  • maxWithdraw(controller) - total WETH currently claimable by your controller address.

Anyone can call claimPendingWithdrawalsAndServeRedeemRequests() to advance the queue.

Step 3 - Claim WETH

Once WETH is allocated, call withdraw(assets, receiver, controller):

  • assets - amount of WETH to withdraw (up to maxWithdraw(controller)).
  • receiver - address to receive the WETH.
  • controller - your controller address.

Alternatively, call claimRedeem(receiver, controller) to claim all currently available WETH in one call (no fee deduction path - use withdraw for the standard flow).

Withdraw tab - claimable amount shown, claim WETH, confirm tx

Withdrawal fee

If withdrawalFeeBps > 0, a fee is deducted from the withdrawn amount. The fee WETH stays in the vault as liquidity; the owner receives equivalent shares. Check the current fee on the vault's stats view.

Operators

You can approve another address to manage requests on your behalf:

setOperator(operatorAddress, true)

Operators can call requestRedeem and withdraw/claimRedeem for your controller address.