FIRST-DRAFTbydOrg
Edition 30

Your vault has assets. Can users withdraw today?

Turn a slow redemption into a clear user journey: request shares, make part claimable, and collect only what is ready.

Your vault has assets. Can users withdraw today?
··3 min read·

The write-up

The dashboard says a customer holds 100 vault shares. They press Withdraw. The strategy needs time to turn its holdings into the underlying asset. The customer wants to know: did I ask for my money, is it ready, or did I receive it?

A share valuation and an available withdrawal answer different questions. A product that displays one number for both will eventually promise something its contracts cannot deliver.

Show what can leave now

For a synchronous vault, ERC-4626 separates conversion previews from limits. A preview estimates an outcome; it does not tell the frontend how much this account can redeem right now. The relevant limit and the contract's actual execution still matter.

Some vaults need asynchronous exits because assets cannot be returned atomically. ERC-7540 extends the vault interface with asynchronous requests. In its redemption flow, requested shares leave the owner's custody on submission. The request becomes claimable and the user or an authorized operator must separately claim. The implementation determines the applicable rate; the original estimate need not equal the final payout.

Design three receipts, not one progress spinner

Pending: show how many shares entered the request and whether anything can be claimed yet. Do not show the same shares as available for another request.

Claimable: show what the actual vault exposes to this controller. There may be partial fulfillment. Distinguish what is available now from what is still queued and show when that state was last verified.

Claimed: distinguish what was received from the original estimate. Keep the transaction with the position history. If the user opens another tab, current contract state must govern what they can withdraw; a cached page cannot authorize the action.

Test the promise the interface makes

Write acceptance cases against the specific implementation. Can an unauthorized wallet claim for the controller? Does a partial claim leave the remainder pending? What happens if state changes between loading and signing? Avoid promising a cancellation path or settlement date unless the vault actually supports it.

An operator view should separate strategy liquidity, amounts queued, claimable amounts and payouts. That is also how to tell whether an apparent missing balance is a UX issue, a data issue or a contract issue.

Try Withdrawal Queue Lab

Request 100 fictional shares, make 40 claimable and collect the partial payout. Try to claim early, as a different controller or twice. The lab uses a fixed illustrative conversion rate, a single request and no contracts or market prices. It illustrates the lifecycle, not a complete implementation of the standard.

What dOrg would build first: one vault adapter and withdrawal UI with a request receipt, partial claim support, and contract and interface tests for stale state and unauthorized claims. Bring one vault and its liquidity rules.

Working proof · Built by dOrgPrototype

Don't just read the thesis

See what happens when the idea has to work.

Request 100 shares. Release liquidity in batches of up to 40, then try claiming with and without authorization.

Interactive simulationFictional data
Open in a new tab

Simulated where noted. No wallet, transaction or purchase is required.

What's not in this prototype
  • One fictional request at a fixed 1:1 rate. No contracts, assets, or full ERC-7540 implementation.
Build notes: audience, approach and business model

Optional background for readers exploring implementation.

01

The Problem

Distinguish pending, claimable and paid balances. Show how partial fulfillment changes the claim. Reject early, unauthorized and duplicate claims.

Who feels it

DeFi protocols, wallet teams and tokenized asset products integrating asynchronous redemptions.

02

The Solution

What it does

01

Request 100 shares

02

Make up to 40 claimable

03

Claim as controller

Built withJavaScriptHTMLCSS

Business Model

Bring one vault and its liquidity rules. We can scope an adapter, a claim interface and tests for partial fulfillment and stale state.

End Goal

Make asynchronous withdrawals understandable and verify the behavior of one real vault.

Building a queued withdrawal flow?

Bring one vault and its liquidity rules. We can scope an adapter, a claim interface and tests for partial fulfillment and stale state.

Just browsing? Get the next edition by email

Previous

#28 The wallet paid. Why is checkout still waiting?

Next

#29 What happens when “verified” changes?