Checking Token Balance using Soroban Python SDK
Tags: soroban, sorobanathon, python, stellar
Published: 2023-03-24 22:12:14

In my [Sending Payment using Soroban Python SDK](https://dev.to/darkvallen/sending-payment-using-soroban-python-sdk-34mk) blog post, I wrote how to check token balance using Soroban-CLI, after few hours i'm start to thinking "_How to check token balance using Soroban SDK?_" so after that i tried to write the script. So in this post, we'll use Soroban Python SDK to check token balance. 

#Preparation
First, create a Futurenet account, this account will be used to invoke `balance` function from the token contract using Soroban Python SDK. Create account at [Stellar Laboratory](https://laboratory.stellar.org/#account-creator?network=futurenet) and make sure to fund them. The account that i will be using :

```
Public Key	GATQFKA7BV7LYYE6UJ2LRL56W3BZRRSWTINA6TG2EM5CCDORFIERAKWV
Secret Key	SCHKLGAGY7QGWUKUFDGHEQMSCPFZNMLEHQE6Y6WPGYGHQIM23T3NJE3C
```

The file that we're gonna use : 
> [`check_token_balance.py`](https://github.com/darkvallen/soroban-python/blob/main/check_token_balance.py) - The python script to check the token balance.

##Checking the Token Balance
To check the token balance, open the `check_token_balance.py` file and adjust the following parameters:
```python
contract_id = "d93f5c7bb0ebc4a9c8f727c5cebc4e41194d38257e1d0d910356b43bfc528813"
tx_submitter_kp = Keypair.from_secret(
    "SCHKLGAGY7QGWUKUFDGHEQMSCPFZNMLEHQE6Y6WPGYGHQIM23T3NJE3C"
)

```
>`tx_submitter_kp`: The secret key of the account whose balance you want to check. **The contract ID that i'm using is native token contract(XLM Lumens)**
>`contract_id`: Token Contract ID of the token that you want to check. 

Save the `check_token_balance` file with your changes.

Before running the script, i want to explain this specific codes :
```python
func_name = "balance"
args = [Address(tx_submitter_kp.public_key)]

invocation = AuthorizedInvocation(
    contract_id=contract_id,
    function_name=func_name,
    args=args,
    sub_invocations=[],
)

contract_auth = ContractAuth(
    address=None,
    nonce=None,
    root_invocation=invocation,
)

source = soroban_server.load_account(tx_submitter_kp.public_key)
tx = (
    TransactionBuilder(source, network_passphrase)
    .add_time_bounds(0, 0)
    .append_invoke_contract_function_op(
        contract_id=contract_id,
        function_name=func_name,
        parameters=args,
        auth=[contract_auth],
    )
    .build()
)
```
From the script above the function of the token contract that we're going to invoke is `balance` function, for more info about Token contract functions check [here](https://soroban.stellar.org/docs/reference/interfaces/token-interface). **This script utilizing transaction invoker authorization to invoke the function.**

Now we will run the script using this command :
```
python check_token_balance.py
```
We will get result:
```
Your token Balance: 99999999400
```
To cross-check it, we can use [Stellar Laboratory`s](https://laboratory.stellar.org/#explorer?resource=accounts&endpoint=single&network=futurenet
) explore endpoints tools.

![Stellar Laboratory](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5lhdnnwcpbjs6hz2p55b.png)

##Closing
In this blog post, we have gone over the steps to Check Token Balance using Soroban Python SDK. From the script you will get an insight how to check token balance using Soroban Python SDK.