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

# Get A Balance

> Query the stablecoin balance of an internal (custodial) address or the USD balance of a Plaid-linked bank address.

Use `GET /accounts/{account_id}/addresses/{address_id}/balance` for both address types. Balances require both `transfer_type` and `value_type`.

## Wallet balance

**1. Prerequisites**

* Get your `account_id`: [How to get your account\_id](https://docs.brale.xyz/guides/how-to/get-your-account-id.md)
* Get a custodial `address_id`: list addresses and choose one with `type=internal`:

```bash theme={null}
curl --request GET \
  --url "https://api.brale.xyz/accounts/${ACCOUNT_ID}/addresses" \
  --header "Authorization: Bearer ${AUTH_TOKEN}"
```

**2. Call the balance endpoint**

Use your `account_id` and an internal `address_id`.

`GET /accounts/{account_id}/addresses/{address_id}/balance`

| Parameter | Description | Example |
| - | - | - |
| `transfer_type` | Blockchain network | `solana`, `base`, `ethereum` |
| `value_type` | Token symbol (case-sensitive) | `SBC`, `USDC`, `PYUSD` |

```bash theme={null}
curl --request GET \
  --url "https://api.brale.xyz/accounts/${ACCOUNT_ID}/addresses/${ADDRESS_ID}/balance?transfer_type=base&value_type=SBC" \
  --header "Authorization: Bearer ${AUTH_TOKEN}"
```

**3. Review the response**

```json theme={null}
{
  "address": {
    "id": "2VcUIonJeVQzFoBuC7LdFT0dRe4",
    "address": "0xcdEA458750b9A8D6C4Ba8B3D68CE98Ba2330352A"
  },
  "balance": {
    "value": "45314.07",
    "currency": "USD"
  },
  "value_type": "SBC",
  "transfer_type": "base"
}
```

## Plaid-linked bank balance

**1. Prerequisites**

* Get your `account_id`: [How to get your account\_id](https://docs.brale.xyz/guides/how-to/get-your-account-id.md)
* Get the `address_id` of a bank account registered through Plaid. See [Create addresses through Plaid](https://docs.brale.xyz/key-concepts/addresses.md#create-via-plaid-linked-bank-account).

**2. Call the balance endpoint**

| Parameter | Value |
| - | - |
| `transfer_type` | `ach_debit` |
| `value_type` | `USD` |

```bash theme={null}
curl --request GET \
  --url "https://api.brale.xyz/accounts/${ACCOUNT_ID}/addresses/${ADDRESS_ID}/balance?transfer_type=ach_debit&value_type=USD" \
  --header "Authorization: Bearer ${AUTH_TOKEN}"
```

**3. Review the response**

```json theme={null}
{
  "address": {
    "id": "34yknnMShvDbSW6tQg4HLlN41QO",
    "address": null,
    "account_number": "****1234"
  },
  "balance": {
    "value": "1250.42",
    "currency": "USD"
  },
  "value_type": "USD",
  "transfer_type": "ach_debit"
}
```

* Brale uses Plaid's available balance when Plaid supplies it. Otherwise, Brale uses the current balance.
* Successful reads may be cached for up to 30 seconds.
* The balance is a point-in-time snapshot. It does not guarantee that an ACH debit will settle.
* Brale never returns the full bank account number. `account_number` is masked.
* Only Plaid-linked USD bank addresses support balance lookup. Bank addresses created through Direct bank entry do not.

For error responses, see [Get an address balance](https://docs.brale.xyz/api-reference/brale/get-address-balance.md#errors).

> [!NOTE]
>
> Balance queries are supported for internal custodial addresses and Plaid-linked bank addresses. Other external addresses—including self-custody wallets and bank addresses created through Direct bank entry—do not expose balances through Brale.

## Notes

* Always send both `transfer_type` and `value_type`; a custodial address can hold multiple tokens across chains.
* See [Value Types](https://docs.brale.xyz/coverage/value-types.md) and [Transfer Types](https://docs.brale.xyz/coverage/transfer-types.md) for supported combinations.
