Team reviewing protocol launch plans at a modern WeWork hot desk, rolled blueprints, laptops, and coffee cups scattered around, casual startup planning moment.
Protocols

Integrating the Withdrawal Request Queue

Step-by-step implementation playbook for building a complete unstaking UX on Lido. Covers the WithdrawalQueue contract, request submission, status tracking, and the final claim call using both NFT-based (ERC-721) and permit-based claiming patterns.
introduction
Building a Complete Unstaking UX

Introduction

A technical guide for wallet and frontend teams on integrating the Lido Withdrawal Queue to build a complete, user-facing unstaking flow.

Integrating the Lido Withdrawal Request Queue is the core technical challenge for any application offering a native unstaking flow for stETH or wstETH. Unlike the instant liquidity of a DEX swap, the withdrawal queue provides a trustless path to redeem staked ETH at the protocol's canonical 1:1 rate. This guide covers the full lifecycle: from checking the WithdrawalQueueERC721 contract state and submitting a user's request, to tracking its progress through pending status and finalizing the claim via claimWithdrawal. Builders must handle the NFT-based (ERC-721) representation of a request, which unlocks a permit-based claiming pattern for smart contract wallets and automated services.

The operational complexity lies in managing the asynchronous nature of the queue. After a request is submitted, it enters a pending state until the protocol's finalization step, which is typically triggered by the next Lido Oracle report. The user's claimable ETH amount is fixed at the time of finalization, decoupling it from further stETH rebasing. Integrators must design their UI and backend to poll for the request's status, handle the transition from a non-transferable NFT to a claimable state, and securely manage the claimWithdrawal call, which can be executed by the NFT owner or an approved party. A failure to correctly model these state transitions leads to a broken user experience where funds appear stuck.

For teams building a complete unstaking UX, the integration goes beyond simple contract calls. It requires a robust off-chain tracking service to monitor request IDs, a clear UI for the unbonding period, and a secure mechanism for claiming. Chainscore Labs can review your withdrawal flow architecture to ensure it correctly handles edge cases like oracle report delays, NFT custody in smart contract wallets, and the permit-based claiming flow, helping you deliver a reliable and transparent unstaking experience.

WITHDRAWAL REQUEST QUEUE INTEGRATION

Quick Facts

Operational facts for teams building a UI or service that submits, tracks, and claims withdrawal requests from the Lido WithdrawalQueue contract.

AreaWhat changesWho is affectedAction

Request Submission

Users call requestWithdrawals with an ETH amount. The contract mints an ERC-721 NFT representing the request position and locks the stETH shares.

Wallet and frontend teams building an unstaking UX.

Implement the submit flow with slippage protection. Verify the returned requestId array and NFT minting event.

Request Status Tracking

Requests transition through Pending, Claimable, and Claimed states. The queue processes requests in order as ETH becomes available from validator exits.

Dashboards, portfolio trackers, and backend services.

Poll getWithdrawalStatus or listen for WithdrawalClaimed events. Do not assume a fixed processing time; monitor queue length and buffer size.

Claiming Mechanics

Claimable requests are finalized via claimWithdrawal. The caller must own the NFT or use a signed permit. The NFT is burned upon a successful claim.

Wallet and smart contract integrators.

Support both direct claiming (NFT owner) and permit-based claiming for gasless or delegated UX. Handle the NFT burn in UI state updates.

ERC-721 Ownership

The withdrawal request is an NFT. Transferring the NFT transfers the right to claim. Wallets must display this NFT and its claimable status.

Custodians, exchanges, and non-custodial wallets.

Implement NFT display and transfer logic. Ensure internal accounting systems treat the NFT as a claim ticket, not a liquid token.

Permit-Based Claiming

The request owner can sign an EIP-712 permit authorizing another address to claim. This enables gasless claiming services.

Frontend and relayer teams.

Implement the EIP-712 typed data signing flow. Validate the permit signature and deadline on-chain before submitting the claim transaction.

Finalization Check

A request is claimable only after the oracle finalizes the report that includes the withdrawal. The oracle runs once daily.

All integrators.

Check isFinalized on the WithdrawalQueue contract. Warn users that there is a delay between the queue processing and the claim becoming available.

Contract Address Verification

The canonical WithdrawalQueue contract address is critical. Using an incorrect address risks loss of funds.

All integrators.

Verify the WithdrawalQueue address against the official Lido documentation and deployed contract registry for the target network.

integration-surface
NFT-BASED WITHDRAWAL REQUEST LIFE CYCLE

Integration Surface: The WithdrawalQueueERC721 Contract

The WithdrawalQueueERC721 contract is the primary interface for managing the lifecycle of a withdrawal request from submission to final ETH claim, represented as a transferable NFT.

The WithdrawalQueueERC721 contract in the Lido protocol serves as the canonical entry and exit point for the unstaking flow. When a user or integrator submits a withdrawal request, the contract mints an ERC-721 NFT representing a unique claim on a specific amount of ETH in the queue. This NFT-based model transforms a pending protocol obligation into a standardized, transferable asset, enabling secondary market dynamics and flexible custody patterns that a simple internal accounting system would not support.

Integrators must model the full state machine of this NFT. Upon submission via requestWithdrawals, the token is minted in a pending state. It remains non-transferable until the protocol finalizes the claim, at which point the request is marked as claimable. The owner of the NFT can then call claimWithdrawal to burn the token and receive the underlying ETH. A critical operational detail is that the finalization step is permissionless and can be batched via finalize; however, the claimable status depends on the queue's processing order and the availability of ETH in the protocol's buffer, meaning integrators cannot assume a fixed time-to-claim.

For builders creating a full unstaking UX, the contract's ERC-721 surface enables standard wallet integration for tracking user positions, but the transfer restriction before finalization requires explicit UI handling to prevent user confusion. Additionally, the contract supports an alternative permit-based claiming flow, where a signed off-chain authorization allows a relayer to execute the final claim on behalf of the user, abstracting gas costs. Teams building institutional or exchange-grade integrations should assess their internal systems for handling the NFT's transient non-transferable state and evaluate the permit pattern as a mechanism to simplify the user's final claim step.

WITHDRAWAL QUEUE IMPACT

Affected Integrators

Wallet and Frontend Teams

Wallets and frontend interfaces must build a complete unstaking UX that guides users through the multi-step withdrawal flow. This includes querying the WithdrawalQueue contract to display current queue length and expected wait times, submitting a withdrawal request by calling requestWithdrawals, and tracking the request's lifecycle from pending to claimable.

Key Actions:

  • Implement status polling using getWithdrawalStatus to surface the current state (pending, claimable) to users.
  • Handle the final claimWithdrawal call, supporting both direct claiming and NFT-based (ERC-721) claiming patterns where the request is represented as a transferable token.
  • Build clear UI for the unbonding period, setting user expectations that the process is not instant.
  • Integrate permit-based claiming flows for gasless UX where supported.

Chainscore Labs can review your withdrawal flow integration to ensure correct status tracking and claim handling, preventing stuck funds and user confusion.

implementation-workflow
WITHDRAWAL QUEUE INTEGRATION

Implementation Workflow

A step-by-step technical workflow for building a complete unstaking user experience by integrating with the WithdrawalQueue contract. Covers request submission, status tracking, and the final claim process.

WITHDRAWAL REQUEST QUEUE

Integration Rollout Checklist

A step-by-step readiness checklist for wallet, frontend, and backend teams building a complete unstaking UX on top of the Lido Withdrawal Queue. Each item maps to a critical integration point in the request-submit-track-claim lifecycle.

Confirm the canonical WithdrawalQueueERC721 contract address for the target network (Mainnet, Holesky, or Sepolia). The contract inherits from ERC721, so your integration must handle standard NFT transfer, approval, and ownership query methods alongside the custom withdrawal logic.

  • What to check: The contract address against the Lido documentation and the symbol() and name() methods to confirm the correct NFT token.
  • Why it matters: The withdrawal request is represented as an ERC-721 token. Your system must be able to display it, track its owner, and call transferFrom or safeTransferFrom if you support transferring the request to another address.
  • Readiness signal: Your test suite successfully calls balanceOf and ownerOf for a known request ID on the target testnet.
WITHDRAWAL REQUEST QUEUE INTEGRATION

Integration Risk Matrix

Operational risks and compatibility concerns for wallets, exchanges, and DeFi protocols integrating the Lido WithdrawalQueue contract to handle stETH/wstETH unstaking flows.

AreaWhat changesWho is affectedAction

Request Finalization

Withdrawal requests are placed into a queue and finalized when the protocol has sufficient ETH to process them. Finalization time is variable and unbounded.

Wallets, Exchanges, Custodians

Do not assume a fixed unbonding period. Poll finalizationStatus or listen for WithdrawalsFinalized events to update UI state.

NFT-Based Claiming

Withdrawal requests mint an ERC-721 NFT representing the claim right. The claimer must hold this NFT to call claimWithdrawal.

Wallets, Smart Contract Integrators

Ensure the claiming address holds the NFT. For smart contract integrations, implement onERC721Received to accept the transfer before claiming.

Permit-Based Claiming

The NFT holder can sign a permit to allow another address to claim. This offloads gas costs to the claimer.

Wallets, Frontend Teams

Implement EIP-712 signing for the permit. Verify the permit's deadline and that the signature is from the current NFT owner.

Request Status Tracking

A request transitions from pending to finalized to claimed. The status is determined by on-chain state, not a simple time parameter.

Indexers, Data Teams, Frontends

Query getWithdrawalStatus for individual requests. Do not rely solely on block timestamps. Monitor for WithdrawalRequested and WithdrawalClaimed events.

Claim Window Risk

A finalized withdrawal can be claimed at any time by the NFT holder. There is no expiry, but the NFT could be lost or the holder could become unresponsive.

Custodians, Institutional Integrators

Implement robust key management for the claiming address. Consider the operational risk of a lost NFT preventing ETH recovery.

Gas Cost Variability

The claimWithdrawal cost varies based on the number of requests being claimed in a batch and the current gas price.

Wallets, Exchanges

Estimate gas using eth_estimateGas. For batching, be aware that a revert in one claim will revert the entire batch.

wstETH Unwrap Requirement

Users holding wstETH must first unwrap to stETH before requesting a withdrawal. This is a separate transaction.

Wallets, Frontend Teams

Build the unwrap-and-request flow as a multi-step process or use a smart contract helper. Clearly communicate the two-step requirement to users.

Contract Immutability

The WithdrawalQueue contract is a core protocol component. Its address and core logic are not expected to change frequently, but upgrades are possible via DAO governance.

All Integrators

Do not hardcode the contract address without a governance-monitoring process. Subscribe to Lido DAO governance updates to detect proxy upgrades or address changes.

Chains We Build On

Looking to build on a specific blockchain?

We build smart contracts, DeFi applications, wallets, tokenization platforms, and blockchain infrastructure across the major ecosystems teams choose today. That includes Ethereum, Arbitrum, Optimism, Polygon, Avalanche, Solana, Sui, Aptos, Hedera, Stellar, and NEAR, with support for additional EVM and non-EVM networks based on your product requirements.

EVM ecosystems

  • Ethereum logo
    Ethereum
  • Arbitrum logo
    Arbitrum
  • Optimism logo
    Optimism
  • Polygon logo
    Polygon
  • Avalanche logo
    Avalanche
  • Cronos logo
    Cronos

Non-EVM ecosystems

  • Solana logo
    Solana
  • Sui logo
    Sui
  • Aptos logo
    Aptos
  • Hedera logo
    Hedera
  • Stellar logo
    Stellar
  • NEAR logo
    NEAR

Additional ecosystems

  • Polkadot logo
    Polkadot
  • Cosmos logo
    Cosmos
  • TON logo
    TON
  • Cardano logo
    Cardano
  • Algorand logo
    Algorand
  • Tempo logo
    Tempo

Also available for Base, appchains, custom EVM networks, and cross-chain product architecture.

WITHDRAWAL QUEUE INTEGRATION

Frequently Asked Questions

Common questions from frontend and wallet teams building a complete unstaking flow using the Lido WithdrawalQueue contract.

The canonical contract is the WithdrawalQueueERC721 deployed on Ethereum mainnet. This contract manages the full lifecycle of a withdrawal request as an ERC-721 NFT.

What to check:

  • Verify the contract address against the official Lido documentation for your target network.
  • Confirm the contract's ABI includes the requestWithdrawals, getWithdrawalStatus, and claimWithdrawal functions.
  • Do not interact with the stETH token contract directly for exits; it does not handle the withdrawal queue.

Why it matters: Using an incorrect or outdated contract address is a critical failure vector that can lead to permanent loss of funds. The WithdrawalQueue is the sole entry point for exiting stETH via the protocol's unbonding mechanism.

Trusted by Industry Leaders

Delivering blockchain solutions for 5+ years.

We have partnered with 50+ leading DeFi protocols, NFT ecosystems, and fintech innovators to build secure, scalable, and capital-efficient blockchain products.

Selected Partners & Clients

ChainVote logo
Reax logo
Sokail logo
Swapsicle logo
SyntheX logo
Tekika logo
Telos logo
Zexe logo
ChainVote logo
Reax logo
Sokail logo
Swapsicle logo
SyntheX logo
Tekika logo
Telos logo
Zexe logo
ChainVote logo
Reax logo
Sokail logo
Swapsicle logo
SyntheX logo
Tekika logo
Telos logo
Zexe logo
ChainVote logo
Reax logo
Sokail logo
Swapsicle logo
SyntheX logo
Tekika logo
Telos logo
Zexe logo
I've been working with Chainscore Labs for last 3+ years, they've consistently delivered with strong ownership across multiple projects. The team is reliable and detail-oriented.
L
Lee Erswell
CEO, Telos Foundation
how to get started

How to get started?

If you're looking for blockchain integration, ChainScore Labs has 5+ years of experience helping teams build and integrate exchanges, wallets, smart contracts, tokenization solutions, and protocol-connected products, we can help you choose the right path, integrate securely, and get to production faster. Our team consists of experienced blockchain developers and architects who can help you with your blockchain integration needs.

01

Exploration & Strategy

Define your product goals and choose the right blockchain architecture for your use case.

02

Architecture & Design

Design the smart contracts, tokenomics, and security parameters of your system.

03

Development & Integration

Build and integrate with wallets, oracles, and front-end dApps for a seamless experience.

04

Security & Launch

Comprehensive audits followed by a risk-managed mainnet deployment to protect your users.

Start a build

Need a blockchain engineering team?

Send the project context and we will respond with next steps, scope questions, and a practical path to delivery.