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.

Integrating the Withdrawal Request Queue
Introduction
A technical guide for wallet and frontend teams on integrating the Lido Withdrawal Queue to build a complete, user-facing unstaking flow.
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.
Quick Facts
Operational facts for teams building a UI or service that submits, tracks, and claims withdrawal requests from the Lido WithdrawalQueue contract.
| Area | What changes | Who is affected | Action |
|---|---|---|---|
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: 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.
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
getWithdrawalStatusto surface the current state (pending, claimable) to users. - Handle the final
claimWithdrawalcall, 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
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.
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()andname()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
transferFromorsafeTransferFromif you support transferring the request to another address. - Readiness signal: Your test suite successfully calls
balanceOfandownerOffor a known request ID on the target testnet.
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.
| Area | What changes | Who is affected | Action |
|---|---|---|---|
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 |
NFT-Based Claiming | Withdrawal requests mint an ERC-721 NFT representing the claim right. The claimer must hold this NFT to call | Wallets, Smart Contract Integrators | Ensure the claiming address holds the NFT. For smart contract integrations, implement |
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 | Indexers, Data Teams, Frontends | Query |
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 | Wallets, Exchanges | Estimate gas using |
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. |
Canonical Resources
Use these canonical resources to verify contract behavior, addresses, oracle dependencies, and governance context before integrating Lido withdrawal requests into a wallet, exchange, vault, or backend service.
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
- Arbitrum
- Optimism
- Polygon
- Avalanche
- Cronos

Non-EVM ecosystems
- Solana
- Sui
- Aptos
- Hedera
- Stellar
- NEAR
Additional ecosystems
- Polkadot
- Cosmos
- TON
- Cardano
- Algorand
- Tempo
Also available for Base, appchains, custom EVM networks, and cross-chain product architecture.
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, andclaimWithdrawalfunctions. - 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.
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
“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.”
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.
Exploration & Strategy
Define your product goals and choose the right blockchain architecture for your use case.
Architecture & Design
Design the smart contracts, tokenomics, and security parameters of your system.
Development & Integration
Build and integrate with wallets, oracles, and front-end dApps for a seamless experience.
Security & Launch
Comprehensive audits followed by a risk-managed mainnet deployment to protect your users.
Discover our
blockchain development services.
We build production-grade blockchain solutions for top-tier projects across DeFi and Web3.
Need a blockchain engineering team?
Send the project context and we will respond with next steps, scope questions, and a practical path to delivery.


