# Rewards: Leaving the Rewards Contract

Removing tokens from the *`StandardRewards`* contract requires the user to indicate the program ID and the token amount. The following steps explain how to collect the data necessary to call the  `leave` function that returns the bnTokens to your wallet. Once the bnTokens are back in your wallet, you can reclaim your deposit by following the instructions in the [Withdraw Tokens](/guides/bancor-etherscan-guide/withdrawing-tokens.md) guide.&#x20;

### 1. Program ID

This step will explain how to identify the ID of the rewards program you are staked in:

* Visit *`StandardRewards`* contract [on etherscan](https://etherscan.io/address/0xb0B958398ABB0b5DB4ce4d7598Fb868f5A00f372#readProxyContract)
* Execute the *`providerProgramIds`* function (this is a Read function) with your Ethereum address:

![](/files/3q5y03p9L4OhnRBG5x93)

`Input variable`

| Name       | Type    | Description         |
| ---------- | ------- | ------------------- |
| \_provider | address | User wallet address |

`Output response`

List of 1+ IDs to represent the different programs you are staked in

{% hint style="info" %}
Save the IDs that are returned for use in later steps.&#x20;
{% endhint %}

### 2. Identify which ID to use

{% hint style="info" %}
If you only have 1 ID ([extracted in step 1](#1.-program-id)),  skip to [step 3](#3.-available-amount).
{% endhint %}

If you are actively staked in more than 1 program, this step will explain how to identify the program ID for the rewards program you would like to unstake from

* Visit *`StandardRewards`* contract [on etherscan](https://etherscan.io/address/0xb0B958398ABB0b5DB4ce4d7598Fb868f5A00f372#readProxyContract)
* Execute the *`programs`* function (this is a Read function)

![](/files/nV4UR3dM7J7kUAb3AWQz)

`Input variable`

| Name | Type    | Description                              |
| ---- | ------- | ---------------------------------------- |
| ids  | uint256 | An array of 1 or more reward program IDs |

`Output response`

<table><thead><tr><th width="250.33333333333331">Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>uint256</td><td>The unique identifier of the rewards program</td></tr><tr><td>pool</td><td>Token</td><td>The deposited token (i.e BNT, ETH, DAI, LINK) address</td></tr><tr><td>poolToken</td><td>IPoolToken</td><td>The relevant bnToken address</td></tr><tr><td>rewardsToken</td><td>Token</td><td>The address of the rewards token that is given in this program</td></tr><tr><td>isEnabled</td><td>bool</td><td>True/False indication if the program is active</td></tr><tr><td>startTime</td><td>uint32</td><td>The start time of the program</td></tr><tr><td>endTime</td><td>uint32</td><td>The end time of the program</td></tr><tr><td>rewardRate</td><td>uint256</td><td>The amount of tokens per second that are distributed</td></tr></tbody></table>

Using the output data,&#x20;

1. Identify the program with the *`pool`* token you would like to withdraw
2. Identify the program *`id`* to use in the following step

### 3. Available amount

This step will explain how to identify the number of available tokens to unstake from the contract

* Visit *`StandardRewards`* contract [on etherscan](https://etherscan.io/address/0xb0B958398ABB0b5DB4ce4d7598Fb868f5A00f372#readProxyContract)
* Execute the *`providerStake`* function (this is a Read function)

![](/files/cIi7WwtBzh08s4Joz9TA)

`Input variable`

| Name     | Type    | Description                                  |
| -------- | ------- | -------------------------------------------- |
| provider | address | Your wallet address                          |
| id       | uint256 | The unique identifier of the rewards program |

`Output response`

| Name   | Type    | Description                                        |
| ------ | ------- | -------------------------------------------------- |
| Amount | uint256 | The bnToken amount staked into the rewards program |

{% hint style="info" %}
Note the number returned by the function - this is the number of pool tokens you own, which you will need to input to leave the rewards contract. \
Note that this value is already returned in wei format, so you will **not** need to add zeroes to it.
{% endhint %}

### 4. Leaving the StandardRewards Contract

This step will explain how to call the`leave` function, removing your tokens from the rewards program.

* Visit *`StandardRewards`* contract [on etherscan](https://etherscan.io/address/0xb0B958398ABB0b5DB4ce4d7598Fb868f5A00f372#writeProxyContract)
* Execute the *`leave`* function (this is a Write function)

![](/files/cwgbN2t821FgsH0NdyMP)

`Input variable`

| Name            | Type    | Description                                                                             |
| --------------- | ------- | --------------------------------------------------------------------------------------- |
| id              | uint256 | The unique identifier of the rewards program ([found in steps 1 and 2](#1.-program-id)) |
| poolTokenAmount | uint256 | The amount of bnTokens to unstake ([found in step 3](#3.-available-amount))             |

`Output`

The bnTokens will return to your wallet.&#x20;

{% hint style="info" %}
Now that once the bnTokens are in your wallet, you can follow the [Withdraw Tokens](/guides/bancor-etherscan-guide/withdrawing-tokens.md) guide.&#x20;
{% endhint %}


---

# 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/rewards-leaving-the-rewards-contract.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.
