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

# Stablecoins

> Supply, transfer volume and active addresses by stablecoin and by chain

## Snapshot by stablecoin

```bash theme={null}
curl -s "https://data-svc.artemisxyz.com/v2/data/STABLECOIN_SUPPLY,STABLECOIN_TRANSFER_VOLUME,STABLECOIN_DAU?symbols=usdc,usdt,dai,usde&startDate=2026-08-01&endDate=2026-08-01&summarize=true&APIKey=$ARTEMIS_API_KEY"
```

| Stablecoin | Supply    | Transfer volume | Active addresses |
| ---------- | --------- | --------------- | ---------------- |
| USDT       | \$184.22B | \$28.25B        | 3,155,414        |
| USDC       | \$73.34B  | \$82.78B        | 1,039,965        |
| DAI        | \$3.85B   | \$1.14B         | 111,987          |
| USDe       | \$3.55B   | \$0.18B         | 1,237            |

USDC turns over more than its own supply in a day; USDT turns over about 15% of its. That's a velocity comparison, not a ratio of like quantities. Supply is a closing-balance snapshot and transfer volume is a daily `SUM`. `summarize=true` returns the `endDate` day's value for each metric here, not a period aggregate; see [Core concepts](/docs/artemis-api/core-concepts).

## Metrics

| Metric                       | Label                         | Unit     | Aggregation |
| ---------------------------- | ----------------------------- | -------- | ----------- |
| `STABLECOIN_SUPPLY`          | Stablecoin Supply             | Currency | `FIRST`     |
| `STABLECOIN_TRANSFER_VOLUME` | Stablecoin Transfer Volume    | Currency | `SUM`       |
| `STABLECOIN_DAU`             | Stablecoin Daily Active Users | Nominal  | `AVERAGE`   |
| `STABLECOIN_DAILY_TXNS`      | Stablecoin Transactions       | Nominal  | `SUM`       |

`STABLECOIN_DAU`, like every `*DAU` metric, aggregates `AVERAGE`: a period figure is an average of daily actives, never a summed count.

<Note>
  `STABLECOIN_SUPPLY` is a closing-balance snapshot: each monthly bucket carries that month's **last** day. Verified against the daily series for May 2026 (matches 2026-05-31) and June 2026 (matches 2026-06-30).
</Note>

<Note>
  Transfer volume reflects **gross transfers** as of the July 2026 methodology change, and the previously available Artemis-filtered and P2P variants have been retired. See [Stablecoin metrics methodology](/docs/data-reference/stablecoin-methodology).
</Note>

## Split supply by chain

```bash theme={null}
curl -s "https://data-svc.artemisxyz.com/v2/data/STABLECOIN_SUPPLY?symbols=usdc&startDate=2026-08-01&endDate=2026-08-01&dimensionType=CHAIN&APIKey=$ARTEMIS_API_KEY"
```

29 rows come back, one per chain, `asset` named `<chain>-usdc` (`ethereum-usdc`, `solana-usdc`, and so on) with a human-readable `display_name`. The top eight on 2026-08-01:

| Chain             | Supply   | Share |
| ----------------- | -------- | ----- |
| Ethereum          | \$48.59B | 66.3% |
| Solana            | \$6.96B  | 9.5%  |
| Hyperevm          | \$5.65B  | 7.7%  |
| Base              | \$4.19B  | 5.7%  |
| Arbitrum          | \$2.32B  | 3.2%  |
| Polygon PoS       | \$1.74B  | 2.4%  |
| BNB Chain         | \$1.63B  | 2.2%  |
| Avalanche C-Chain | \$0.48B  | 0.6%  |

All 29 rows sum to \$73,339,893,117.60, exactly the undifferentiated `STABLECOIN_SUPPLY` total for `usdc` on the same day, so this particular cut is a clean partition. That's worth checking rather than assuming: `cuts` in `/supported-metrics/` lists what a metric *advertises*, not what it delivers, and a listed `dimensionType` can still fail to reconcile, or fail outright. Confirm with a live call before publishing a breakdown built on one.

## Track supply over time

```python theme={null}
import datetime
import os
import requests

resp = requests.get(
    "https://data-svc.artemisxyz.com/v2/data/STABLECOIN_SUPPLY",
    params={
        "symbols": "usdc,usdt",
        "startDate": "2026-05-01",
        "endDate": "2026-08-01",
        "granularity": "MONTH",
        "APIKey": os.environ["ARTEMIS_API_KEY"],
    },
    timeout=120,
)
resp.raise_for_status()

for s in resp.json()["series"]:
    print(s["display_name"])
    for ts, v in s["data"]:
        if v is not None:
            date = datetime.datetime.utcfromtimestamp(ts / 1000).date()
            print(f"  {date}  ${v/1e9:,.2f}B")
```

```
USDC
  2026-05-01  $73.47B
  2026-06-01  $74.68B
  2026-07-01  $73.26B
USDT
  2026-05-01  $188.69B
  2026-06-01  $185.07B
  2026-07-01  $184.25B
```

Each month is labelled by its **first** day, so `2026-06-01` is June's bucket. That's the same start-of-period convention every ordinary time series uses (see [Core concepts](/docs/artemis-api/core-concepts)), even though the value inside it is that month's **closing** supply, not its opening one.

Only three months print for a range that asks for four, because a `MONTH` bucket resolves once `endDate` reaches that period's end. For a period still in progress, it resolves to the most recent day with data.

Keep the `if v is not None` guard: an unresolved bucket comes back as a well-formed row with a null value, the same shape covered in [Sector leaderboards](/docs/artemis-api/recipes/sector-leaderboards).
