Skip to content

Tokenized Treasuries & Earn Tracking

Qeychain recognizes a curated set of tokenized US-Treasury funds and yield-bearing stablecoins (collectively “RWA” — real-world assets). For a tracked wallet, you can list which RWA tokens are held, surface each position with issuer, underlying, and compliance metadata, and classify the accrued yield as ordinary interest income for tax purposes.

This surface is intentionally conservative. It is strongest at detection and holdings (what you hold, and roughly what it is worth). Live yield and APY figures are best-effort and depend on an upstream data source that may be unavailable. Read the caution below before you build on the yield numbers.

All examples use the production base URL:

https://api.qeychain.xyz
Terminal window
curl https://api.qeychain.xyz/api/rwa/tokens

Qeychain recognizes the following tokens. “Yield mechanism” describes how the position accrues return, which in turn drives how yield is estimated:

Symbol Name Issuer Category Yield mechanism
BUIDL BlackRock USD Institutional Digital Liquidity Fund BlackRock Tokenized Treasury (Tier 1) accrual (NAV rises)
USDY Ondo US Dollar Yield Token Ondo Finance Tokenized Treasury (Tier 1) rebase (balance grows)
OUSG Ondo Short-Term US Government Bond Fund Ondo Finance Tokenized Treasury (Tier 1) rebase
BENJI Franklin OnChain U.S. Government Money Fund Franklin Templeton Tokenized Treasury (Tier 1) nav / distribution
USYC Hashnote US Yield Coin Hashnote Yield stablecoin (Tier 2) rebase
USDM Mountain Protocol USD Mountain Protocol Yield stablecoin (Tier 2) rebase
sUSDe Ethena Staked USDe Ethena Labs Yield stablecoin (Tier 2) rebase

Chains. Each issuer publishes its token on several networks. Qeychain detects positions only on the chains it indexes — EVM networks (any 0x… address) and Solana. Recognition is by token symbol (case-insensitive) or by a known Ethereum-mainnet contract address. Issuer-published chains that Qeychain does not index (for example Aptos, Sui, or Stellar) will not surface as holdings. Approximate issuer availability:

  • BUIDL — Ethereum, Polygon, Avalanche, Arbitrum, Optimism, Aptos
  • USDY — Ethereum, Solana, Mantle, Sui, Aptos
  • OUSG — Ethereum, Polygon
  • BENJI — Stellar, Polygon, Ethereum, Arbitrum, Base
  • USYC — Ethereum
  • USDM — Ethereum, Polygon, Arbitrum, Optimism, Base
  • sUSDe — Ethereum

Live NAV / APY enrichment is available for a subset of tokens (BUIDL, USDY, OUSG, BENJI, USYC). For tokens without an upstream data source (such as USDM and sUSDe), NAV defaults to $1.00 and annualized_yield is null.

Return the full registry of recognized RWA tokens with their metadata.

GET /api/rwa/tokens

Auth required: no (these endpoints are currently public) · Path/query params: none

Terminal window
curl https://api.qeychain.xyz/api/rwa/tokens
{
"count": 11,
"tokens": [
{
"symbol": "BUIDL",
"name": "BlackRock USD Institutional Digital Liquidity Fund",
"type": "treasury",
"issuer": "BlackRock",
"underlying": "US Treasury Bills & Repos",
"yield_type": "accrual",
"tier": 1,
"tax_treatment": "interest_income",
"restricted": true,
"restriction_note": "Qualified Purchaser only ($5M+ investable assets)",
"investor_req": "Qualified Purchaser",
"chains": ["ethereum", "polygon", "avalanche", "arbitrum", "optimism", "aptos"]
},
{
"symbol": "USDY",
"name": "Ondo US Dollar Yield Token",
"type": "treasury",
"issuer": "Ondo Finance",
"underlying": "US Treasuries & Bank Demand Deposits",
"yield_type": "rebase",
"tier": 1,
"tax_treatment": "interest_income",
"restricted": true,
"restriction_note": "Non-US investors or US accredited investors only",
"investor_req": "Accredited Investor (non-US or US accredited)",
"chains": ["ethereum", "solana", "mantle", "sui", "aptos"]
}
// …plus OUSG, BENJI, USYC, USDM, sUSDe, and experimental
// placeholder entries (xSTOCKS, SECURITIZE, REALT, LOFTY)
]
}

Look up one token by symbol (case-insensitive) and, when available, enrich it with live data from the upstream provider.

GET /api/rwa/tokens/{symbol}

Auth required: no (these endpoints are currently public)

Parameter Type Required Description
symbol string yes Token symbol, e.g. USDY. Case-insensitive.
Terminal window
curl https://api.qeychain.xyz/api/rwa/tokens/USDY
{
"symbol": "USDY",
"name": "Ondo US Dollar Yield Token",
"type": "treasury",
"issuer": "Ondo Finance",
"underlying": "US Treasuries & Bank Demand Deposits",
"yield_type": "rebase",
"tier": 1,
"tax_treatment": "interest_income",
"restricted": true,
"restriction_note": "Non-US investors or US accredited investors only",
"investor_req": "Accredited Investor (non-US or US accredited)",
"chains": ["ethereum", "solana", "mantle", "sui", "aptos"],
"live_data": {
"symbol": "USDY",
"name": "Ondo US Dollar Yield Token",
"issuer": "Ondo Finance",
"aum_usd": 584000000,
"nav": 1.0921,
"apy": 4.85,
"underlying": "US Treasuries",
"chains": ["ethereum", "solana"],
"source": "rwa_xyz"
}
}

A symbol that is not in the registry returns 404 with RWA token '<symbol>' not found in registry. When the upstream provider is unavailable or has no entry, live_data is an empty object ({}) or contains only symbol, source, and an error string — the registry fields above are always present regardless.

This is the primary earn-tracking endpoint. It reads the wallet’s on-chain positions, keeps only recognized RWA tokens, and enriches each with live NAV, yield, and compliance metadata.

GET /api/rwa/wallets/{address}/rwa-holdings

Auth required: no (these endpoints are currently public)

Parameter Type Required Description
address string yes Wallet address. EVM (0x…), Bitcoin, or Solana.
Terminal window
curl https://api.qeychain.xyz/api/rwa/wallets/0x742d35cc6634c0532925a3b844bc454e4438f44e/rwa-holdings
{
"wallet_address": "0x742d35cc6634c0532925a3b844bc454e4438f44e",
"rwa_holdings": [
{
"symbol": "USDY",
"name": "Ondo US Dollar Yield Token",
"balance": 10250.5,
"issuer": "Ondo Finance",
"underlying": "US Treasuries & Bank Demand Deposits",
"yield_type": "rebase",
"tax_treatment": "interest_income",
"restricted": true,
"restriction_note": "Non-US investors or US accredited investors only",
"investor_req": "Accredited Investor (non-US or US accredited)",
"is_rwa": true,
"current_nav_usd": 1.0921,
"current_value_usd": 11194.57,
"annualized_yield": 0.0485,
"data_source": "rwa_xyz",
"accrued_yield_usd": 194.57,
"yield_vs_cost": 0.0177
}
],
"summary": {
"total_rwa_positions": 1,
"total_rwa_value_usd": 11194.57,
"total_accrued_yield_usd": 194.57
}
}
  • current_nav_usd — live NAV per token, or 1.0 when unavailable.
  • annualized_yield — APY as a decimal (0.0485 = 4.85%), or null when unavailable.
  • accrued_yield_usd and yield_vs_cost are conditional: they appear only when the position has a known acquisition cost basis and an annualized yield is available. If either is missing, both fields are omitted and the position still returns its balance and current value.
  • summary.total_accrued_yield_usd sums whatever accrued_yield_usd values are present, so it can under-report when cost basis or yield data is missing.

Aggregate accrued yield across all of a wallet’s RWA positions, with a per-token breakdown. This endpoint applies yield-mechanism-specific math (accrual, rebase, or nav distribution) per token.

GET /api/rwa/wallets/{address}/rwa-yield-summary

Auth required: no (these endpoints are currently public)

Parameter Type Required Description
address string yes Wallet address.
Terminal window
curl https://api.qeychain.xyz/api/rwa/wallets/0x742d35cc6634c0532925a3b844bc454e4438f44e/rwa-yield-summary
{
"wallet_address": "0x742d35cc6634c0532925a3b844bc454e4438f44e",
"yield_summary": {
"total_rwa_value_usd": 11194.57,
"total_acquisition_cost_usd": 11000.0,
"total_accrued_yield_usd": 194.57,
"total_yield_pct": 1.769,
"positions": 1,
"by_token": {
"USDY": {
"balance": 10250.5,
"current_value_usd": 11194.57,
"accrued_yield_usd": 194.57,
"annualized_rate": 0.0485,
"yield_type": "interest_income"
}
}
},
"records": [
{
"token_symbol": "USDY",
"current_balance": 10250.5,
"current_nav": 1.0921,
"current_value_usd": 11194.57,
"accrued_yield_usd": 194.57,
"annualized_rate": 0.0485,
"issuer": "Ondo Finance",
"tax_treatment": "interest_income"
}
]
}

records contains one detailed yield record per position. Positions whose yield record cannot be built (for example a live-data fetch failure) are skipped rather than failing the whole request, so the array may be shorter than the wallet’s RWA holdings.

Generate a tax report that separates RWA yield (ordinary interest income) from RWA token disposals (capital gains). It returns a structured summary plus a ready-to-download CSV string.

GET /api/rwa/wallets/{address}/rwa-tax-report

Auth required: no (these endpoints are currently public)

Parameter Type Required Description
address string yes Wallet address.
tax_year integer no Four-digit year. Defaults to the current year.
Terminal window
curl "https://api.qeychain.xyz/api/rwa/wallets/0x742d35cc6634c0532925a3b844bc454e4438f44e/rwa-tax-report?tax_year=2026"
{
"wallet_address": "0x742d35cc6634c0532925a3b844bc454e4438f44e",
"tax_year": 2026,
"tax_report": {
"tax_year": 2026,
"disclaimer": "Note: IRS has not issued specific guidance on tokenized treasury RWAs as of 2026. This classification applies conservative treatment (yield = interest income). Consult a tax advisor for authoritative guidance.",
"interest_income": {
"total_usd": 194.57,
"form": "Schedule B / 1099-INT",
"classification": "Ordinary Interest Income",
"rows": [
{
"token_symbol": "USDY",
"issuer": "Ondo Finance",
"wallet_address": "0x742d35cc6634c0532925a3b844bc454e4438f44e",
"tax_year": 2026,
"accrued_yield_usd": 194.57,
"acquisition_date": null,
"reporting_date": "2026-07-29T00:00:00",
"yield_type": "rebase",
"classification": "interest_income",
"form": "Schedule B / 1099-INT"
}
]
},
"capital_gains": {
"total_gains_usd": 0.0,
"total_losses_usd": 0.0,
"net_usd": 0.0,
"form": "Form 8949",
"short_term": { "count": 0, "net_usd": 0.0, "rows": [] },
"long_term": { "count": 0, "net_usd": 0.0, "rows": [] }
},
"summary": {
"total_taxable_income_usd": 194.57,
"total_capital_gains_usd": 0.0,
"total_capital_losses_usd": 0.0,
"note": "RWA yield is classified as interest income, NOT crypto capital gains"
}
},
"csv_export": "=== RWA INTEREST INCOME (Schedule B / 1099-INT) ===\n..."
}

The same report is available as a downloadable CSV file:

GET /api/rwa/wallets/{address}/rwa-tax-report/csv
Terminal window
curl "https://api.qeychain.xyz/api/rwa/wallets/0x742d35cc6634c0532925a3b844bc454e4438f44e/rwa-tax-report/csv?tax_year=2026" \
-o rwa-tax-2026.csv

The response is text/csv with a Content-Disposition attachment header.

Qeychain treats reward, interest, and yield activity as ordinary income recognized at fair market value on the date received, not as capital gains. Under the hood, income inflows are bucketed by type — airdrop, staking_reward, mining_reward, interest, and other — and the cost basis engine records each at its FMV when it enters the wallet.

For tokenized treasury RWAs specifically, accrued yield is classified conservatively as ordinary interest income and mapped to Schedule B / 1099-INT, kept separate from crypto capital gains. This reflects the conservative treatment of these tokens as debt-like instruments; the API itself returns a disclaimer noting the IRS has not issued specific RWA guidance.

General crypto income (staking rewards, airdrops, mining) surfaces on the /api/v1 Schedule 1 (Form 1040), Line 8z “Other income” export, broken out into staking, airdrop, mining, and interest categories. See the Tax Reporting guide for those endpoints.

Two behaviors worth flagging:

  • RWA disposals are capital gains (Form 8949) in principle, but as noted above the RWA tax report does not yet compute them — use the standard v1 tax endpoints for realized capital gains and losses.
  • Wash-sale detection is off by default. Qeychain does not apply wash-sale adjustments unless it is explicitly enabled via the ENABLE_WASH_SALES configuration flag. Leave it off to follow the common position that wash-sale rules do not apply to crypto property; enable it if your policy requires it.