> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getpara.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Query Wallet Balances with Stellar Libraries

> Check XLM and token balances using the Stellar SDK with Para wallets

Query XLM and token balances for your connected Para wallet or any Stellar address using the Horizon API.

<Card title="Setup Stellar Libraries First" description="Configure the Stellar SDK with Para SDK first" href="/v3/react/guides/web3-operations/stellar/setup-libraries" horizontal />

## Query Balances

```typescript theme={null}
import { useState } from "react";
import { useParaStellar } from "./hooks/useParaStellar";

function BalanceDisplay() {
  const { server, signer, isLoading } = useParaStellar();
  const [balances, setBalances] = useState<{ asset: string; balance: string }[]>([]);

  const queryBalances = async () => {
    if (!signer) return;

    const account = await server.loadAccount(signer.address);

    const parsed = account.balances.map((b) => {
      if (b.asset_type === "native") {
        return { asset: "XLM", balance: b.balance };
      }
      return { asset: `${b.asset_code}:${b.asset_issuer}`, balance: b.balance };
    });

    setBalances(parsed);
    console.log("Balances:", parsed);
  };

  if (isLoading) return <div>Loading...</div>;

  return (
    <div>
      <p>Address: {signer?.address}</p>
      <button onClick={queryBalances}>Query Balances</button>
      {balances.map((b) => (
        <div key={b.asset}>
          {b.balance} {b.asset}
        </div>
      ))}
    </div>
  );
}
```

## Query a Specific Asset

```typescript theme={null}
import { Horizon } from "@stellar/stellar-sdk";

async function getAssetBalance(address: string, assetCode: string, assetIssuer: string) {
  const server = new Horizon.Server("https://horizon.stellar.org");
  const account = await server.loadAccount(address);

  const match = account.balances.find(
    (b) => b.asset_type !== "native" && b.asset_code === assetCode && b.asset_issuer === assetIssuer
  );

  return match ? match.balance : "0";
}

// Example: Check USDC balance
const usdcBalance = await getAssetBalance(
  "GABCD...",
  "USDC",
  "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN"
);
```

<Note>
  A balance of `"0"` for a custom asset means the account has a trustline but no tokens. If `find` returns `undefined`, the account has no trustline for that asset and cannot receive it until one is created. See [Execute Transactions](/v3/react/guides/web3-operations/stellar/execute-transactions) for how to add trustlines.
</Note>

## Next Steps

<CardGroup cols={3}>
  <Card title="Send Tokens" description="Transfer XLM and custom assets" href="/v3/react/guides/web3-operations/stellar/send-tokens" icon="paper-plane" />

  <Card title="Configure RPC" description="Set up custom Horizon endpoints" href="/v3/react/guides/web3-operations/stellar/configure-rpc" icon="network-wired" />

  <Card title="Execute Transactions" description="Build complex Stellar transactions" href="/v3/react/guides/web3-operations/stellar/execute-transactions" icon="bolt" />
</CardGroup>
