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

# Stablecoin Balances Enriched (XRPL)

> Daily stablecoin balances with address classification on XRPL

export const StablecoinBalancesSupplyNote = ({filterHint, includeCoverageGap = false, includeAddressCategoryBridge = false, hasIsCirculatingField = false}) => <>
    <h2>Interpreting balances vs circulating supply</h2>
    <ul>
      <li>This table records onchain balances per address per day. Totals are not equivalent to circulating supply by default — bridge-locked, issuer-escrow, and CEX proof-of-assets balances are intentionally retained so you can analyze them.</li>
      <li>
        Two metrics, two recipes:
        <ul>
          <li><strong>Total balances</strong> — sum <code>balance_usd</code> with no exclusion filter. Includes bridge-locked funds (e.g., more than $4B USDT can appear in the Tether <code>USDT0Adapter</code> contract on Ethereum while representing circulating <code>USDT0</code> on other chains), issuer escrow, and CEX-locked balances.</li>
          {hasIsCirculatingField ? <li><strong>Circulating supply</strong> — add <code>WHERE is_circulating = true</code>. The flag excludes lock-and-mint / rollup-escrow / check-balance / non-minting bridges (<code>address_subcategory</code> in <code>bridge_lockAndMint</code>, <code>bridge_rollup_escrow</code>, <code>bridge_check_balance</code>, <code>bridge_nonMinting</code>), issuer bridge escrow, and CEX proof-of-assets wallets (e.g., Binance Stablecoin Proof of Assets).</li> : <li><strong>Circulating supply</strong> — this foundation table does not carry the <code>is_circulating</code> flag. Use the enriched balances table (<code>stablecoins_evm.balances_enriched</code>, <code>stablecoins_solana.balances_enriched</code>, or <code>stablecoins_tron.balances_enriched</code>) and filter <code>WHERE is_circulating = true</code>.</li>}
        </ul>
      </li>
      <li>We retain bridge / issuer-escrow / CEX-locked balances in the table itself because exclusions are not objective across bridge designs, and some bridge-held balances represent liquidity for chains not covered elsewhere. The <code>is_circulating</code> flag encodes Dune's best-known classification — readable, auditable, and revisable as coverage improves.</li>
      {includeCoverageGap && <li>Excluding only selected bridges would also be incomplete in practice: some bridge-held balances represent liquidity for chains not covered elsewhere (for example Lighter and Hyperliquid bridge balances).</li>}
      {includeAddressCategoryBridge && <li>Bridge exposure is directly analyzable with <code>address_category = 'bridge'</code>.</li>}
      {filterHint && <li>{filterHint}</li>}
    </ul>
  </>;

export const PremiumDatasetAccessCard = ({href = "https://dune.com/enterprise#contact-form", note = null}) => <Card title="Gated dataset" icon="lock" href={href}>
    Querying this dataset requires an entitlement on your workspace. See <a href="/data-catalog/overview#access-tiers-public-vs-gated-datasets">access tiers</a>, or contact the Dune team to enable access.
    {note && <><br /><br />{note}</>}
  </Card>;

The `stablecoins_xrpl.balances_enriched` table extends XRPL stablecoin balances with address classification, whale flags, and a circulating supply flag.

<PremiumDatasetAccessCard />

Known exchange accounts are labeled `cex` from the served entity lookup (house and hard). Other accounts are `unidentified_whale` at \$10M or more that day, otherwise `unidentified`.

## Table schema

| Column | Type | Description |
| - | - | - |
| `blockchain` | `VARCHAR` | Chain name (`xrpl`) |
| `day` | `DATE` | Balance date (partition column) |
| `address` | `VARCHAR` | Account address |
| `token_symbol` | `VARCHAR` | Token symbol |
| `token_address` | `VARCHAR` | XRPL asset id |
| `token_standard` | `VARCHAR` | Token standard (`issued`) |
| `token_id` | `VARCHAR` | Always `NULL` |
| `balance_raw` | `UINT256` | Raw balance |
| `balance` | `DOUBLE` | Decimals-adjusted balance |
| `balance_usd` | `DOUBLE` | USD value |
| `currency` | `VARCHAR` | ISO 4217 currency code |
| `address_category` | `VARCHAR` | Address category (see below) |
| `address_subcategory` | `VARCHAR` | Address subcategory |
| `address_project` | `VARCHAR` | Exchange entity key (nullable) |
| `address_version` | `VARCHAR` | Always `NULL` |
| `address_label` | `VARCHAR` | Exchange entity key (nullable) |
| `is_smart_contract` | `BOOLEAN` | Always `NULL` |
| `is_whale` | `BOOLEAN` | Account holds >= \$10M total stablecoins that day |
| `is_circulating` | `BOOLEAN` | `true` unless the account is a bridge escrow, an issuer bridge escrow, or the Binance stablecoin proof-of-assets wallet |
| `last_updated` | `TIMESTAMP` | Last balance update time |

## Address categories

| `address_category` | Allowed `address_subcategory` values | Description |
| - | - | - |
| `cex` | `cex` | Known exchange-controlled accounts. |
| `unidentified_whale` | `unidentified_whale` | Unlabeled accounts holding >= \$10M total stablecoin balance that day. |
| `unidentified` | `unidentified` | Accounts with no known classification. |

## Sample query

```sql theme={null}
SELECT
    b.day
    , b.address_category
    , SUM(b.balance_usd) AS balance_usd
FROM stablecoins_xrpl.balances_enriched AS b
WHERE b.day >= CURRENT_DATE - INTERVAL '30' DAY
GROUP BY b.day, b.address_category
ORDER BY b.day DESC
```

## Notes

* Updated daily.
* For best performance, filter by `day`.

<StablecoinBalancesSupplyNote />


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.