# 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)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.bancor.network/guides/bancor-etherscan-guide/withdrawing-tokens/initiating-the-withdrawal.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
