> For the complete documentation index, see [llms.txt](https://docs.hyperunit.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hyperunit.xyz/developers/api/operations/withdrawal-lifecycle.md).

# Withdrawal Lifecycle

{% stepper %}
{% step %}

### SourceTxDiscovered

This is the initial state of an operation, which is created when a deposit is discovered in a Hyperliquid block. A withdrawal is identified as a [Hyperliquid transfer](https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint#l1-spot-transfer) - greater than the [minimum](/developers/api/operations/deposit-lifecycle.md) for the source-chain - to a Unit withdrawal address.&#x20;

Once a sourceTx is discovered, the deposit operation goes through validation, which includes checks for [sanctioned addresses](/legal/regulatory-compliance.md).&#x20;
{% endstep %}

{% step %}

### WaitForSrcTxFinalization

Unit requires 5000 confirmations for a Hyperliquid withdrawal to be considered final.
{% endstep %}

{% step %}

### ReadyForWithdrawQueue

In accordance with throughput limitations of supported networks, destination transactions are staged on a withdraw queue to be triggered in batches. Like sweeps, withdraw queue transactions are triggered every \~3 Bitcoin blocks for bitcoin withdrawals, and \~21 Ethereum slots for ethereum withdrawals.

The operation's `positionInWithdrawQueue` may be used to inform the expected completion of this state.
{% endstep %}

{% step %}

### QueuedForWithdraw

The operation has been included in a withdraw queue batch, the tx-hash of which corresponds to the tx-hash returned by the [withdraw queue endpoint](/developers/api/withdraw-queue.md) and can be inspected on any explorer for the destination network.
{% endstep %}

{% step %}

### Done

The withdrawal is finalized on the destination network. The operation's state is officially "done" - this state is terminal.
{% endstep %}
{% endstepper %}
