# Read balances

{% hint style="info" %}
An API key is required to use the infrastructure to power gasless transactions. Visit  <https://app.rallyprotocol.com/> to generate both Amoy and Mainnet Polygon API keys.&#x20;
{% endhint %}

## Check balances with RLY token

{% hint style="success" %}
In this section, we leverage the RLY token ([polygonscan](https://polygonscan.com/token/0x76b8D57e5ac6afAc5D415a054453d1DD2c3C0094)) and our faucet to enable developers to read on-chain balances in just seconds. Use the following code to claim test RLY tokens and check the RLY balance of wallets.
{% endhint %}

```csharp
//get amoy config
var amoy = NetworkProvider.RlyAmoy;

//add your API Key (can also be chained)
amoy.WithApiKey(env.API_KEY);

//claim 10 test RLY tokens gaslessly for testing
await amoy.ClaimRly();

// get balance of RLY token
await amoy.GetBalance()

//get exact balance of RLY token on Amoy testnet for transfer purposes
await amoy.GetExactBalance();
```

## Check balances with your chosen ERC-20 token

Use the following code to check the chosen token balance of wallets.&#x20;

```csharp
//get amoy config
var amoy = NetworkProvider.RlyAmoy;

//add your API Key (can also be chained)
amoy.WithApiKey(env.API_KEY);

//hex address of token contract.
var tokenAddress = "0x...." 

// get balance of specified token
await amoy.GetBalance(tokenAddress)

//get exact balance of specified token on Amoy testnet for transfer purposes
await amoy.GetExactBalance(tokenAddress);
```

<br>
