# Initiating the Withdrawal

Initiating the withdrawal requires depositing your pool tokens into the pending withdrawal contract, starting the cooldown period.&#x20;

The process consists of 3 steps:

1. [Determine the number of pool tokens to withdraw](#1.-identify-the-number-of-pool-tokens-to-withdraw)
2. [Approve](#2.-approve)
3. [Initiate the withdrawal](#3.-initiate-the-withdrawal-begin-cooldown)

### 1. Determine the number of pool tokens to withdraw

{% hint style="info" %}
If you are withdrawing your entire balance, you can skip this step and use the total number of pool tokens in your wallet in the WEI format in the following steps.&#x20;
{% endhint %}

This step will explain how to calculate the number of bnTokens you need to withdraw to receive a specific number of tokens. &#x20;

* Visit the `BancorNetworkInfo` [on etherscan](https://etherscan.io/address/0x8E303D296851B320e6a697bAcB979d13c9D6E760#readProxyContract)
* Execute the `underlyingToPoolToken` function (this is a Read function)

![](https://273705617-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC9gDtGR2KNhur3c7qIJR%2Fuploads%2FCMsPLXsE14jefkhzsjUk%2Fimage.png?alt=media\&token=05f96875-61df-46da-986f-002dc4d92771)

`Input variable`

| Name   | Type    | Description                                                                 |
| ------ | ------- | --------------------------------------------------------------------------- |
| pool   | Token   | The address of the underlying token                                         |
| amount | uint256 | The amount of underlying token you would like to withdraw (in `WEI` format) |

{% hint style="info" %}
For ETH use *0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE*
{% endhint %}

`Output response`

| Name            | Type    | Description                                                    |
| --------------- | ------- | -------------------------------------------------------------- |
| poolTokenAmount | uint256 | The amount of bnToken representing the underlying token amount |

Save the value as this represent the input amount needed to use in the next steps

### 2. Approve

In order for the contract to interact with the tokens in your wallet and perform the transaction, an `Approve` must be set first for the contract.

* Visit the relevant pool token token contract, for example: \
  [bnBNT](https://etherscan.io/token/0xAB05Cf7C6c3a288cd36326e4f7b8600e7268E344#writeContract) | [bnETH](https://etherscan.io/token/0x256Ed1d83E3e4EfDda977389A5389C3433137DDA#writeContract) | [bnDAI](https://etherscan.io/token/0x06CD589760Da4616a0606da1367855808196C352#writeContract) | [bnLINK](https://etherscan.io/token/0x516c164A879892A156920A215855C3416616C46E#writeContract)
* Execute the `Approve` function (this is a Write function)&#x20;

![](https://273705617-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC9gDtGR2KNhur3c7qIJR%2Fuploads%2F6J1FckuUNQ3iEtXKWTTw%2Fimage.png?alt=media\&token=02f3c106-6618-4bc8-b815-184374451060)

<table data-header-hidden><thead><tr><th width="220"></th><th></th></tr></thead><tbody><tr><td>spender</td><td>The contract address of the <code>BancorNetwork</code> <a href="broken-reference">found here</a></td></tr><tr><td>value</td><td>The amount you would like to approve (it can be identical or more than the amount you wish to withdraw, BUT NOT LESS) in <code>WEI</code> format as <a href="broken-reference">explained here</a></td></tr></tbody></table>

{% hint style="warning" %}
The number of tokens you approve represents the bnToken you would like to liquidate
{% endhint %}

* Click `Write` to sign the `Approve` in your wallet

### 3. Initiate the withdrawal (begin cooldown)

This step will explain how to call the initiate cooldown function

* Visit `BancorNetwork` contract [on etherscan](https://etherscan.io/address/0xeEF417e1D5CC832e619ae18D2F140De2999dD4fB#writeProxyContract)
* Execute the `initWithdrawal` function (this is a Write function)&#x20;

![](https://273705617-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC9gDtGR2KNhur3c7qIJR%2Fuploads%2F7fgMShyqh05wdgKvapys%2Fimage.png?alt=media\&token=302f3fe6-2307-48d9-aa6a-d994449fca46)

`Input variable`

| Name            | Type    | Description                                                                                                                       |
| --------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------- |
| poolToken       | Token   | The bnToken address ([found here](https://docs.bancor.network/guides/bancor-etherscan-guide/withdrawing-tokens/broken-reference)) |
| poolTokenAmount | uint256 | The amount of bnTokens to liquidate ([found in step 1](#1.-identify-the-amount-to-liquidate))                                     |

This will initiate the cooldown process and allow to [complete the withdrawal](https://docs.bancor.network/guides/bancor-etherscan-guide/withdrawing-tokens/completing-the-withdrawal)
