# withdraw()

{% hint style="warning" %}
It is highly recommended to call the function [isPoolStable()](https://docs.bancor.network/developer-guides/read-functions/liquidity-pool-details/ispoolstable) to check if the withdrawal can currently be processed before calling withdraw().
{% endhint %}

{% hint style="info" %}
Every pending withdrawal has a unique ID. To get a list of pending withdrawals for an address, see [withdrawalRequestIds()](https://docs.bancor.network/developer-guides/read-functions/withdrawals/withdrawalrequestids).
{% endhint %}

### **Function withdraw()**

```solidity
function withdraw(uint256 id) external whenNotPaused nonReentrant returns (uint256)
```

`withdraw()` is a function that burns the pool tokens and sends the underlying asset to the beneficiary wallet address.&#x20;

### **Function Arguments**

<table><thead><tr><th width="161">Name</th><th width="150">Type</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>uint256</td><td>The id of the pending withdrawal that was initiated by the <code>initWithdrawal</code> transaction</td></tr></tbody></table>

{% hint style="info" %}
Withdrawing the BNT token requires vBNT tokens in your wallet equal to the number of pool tokens being withdrawn.

vBNT must be approved in order to successfully complete this process
{% endhint %}

### Return Variables

This function returns the number of tokens received from the withdrawal.&#x20;

| Variable Type | Description                     |
| ------------- | ------------------------------- |
| uint256       | The number of tokens withdrawn. |
