Skip to main content

Documentation Index

Fetch the complete documentation index at: https://yieldxyz.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Real-world asset (RWA) yields give wallets exposure to off-chain, regulated assets — U.S. Treasury bills, money-market funds, private credit pools, and structured carry strategies — through tokenized vaults that settle on-chain. Yield.xyz exposes every RWA yield through the same lifecycle as any other yield on the platform (enteraccrueexit). The only thing that varies is whether the underlying issuer requires KYC. That single distinction drives everything else: discovery, error handling, redemption mechanics, and the user-facing onboarding path.

Permissioned (KYC Required)

Issuer enforces an on-chain allowlist. Users complete KYC at the issuer’s portal before deposits or redemptions can settle. Examples: Superstate USTB / USCC, BlackRock BUIDL, Ondo OUSG.

Permissionless (No KYC)

Open ERC-4626-style vaults or issuance contracts. Any address can deposit. Examples: Maple Syrup USDC / USDT, Midas mTBILL, Frax sfrxUSD, Ondo USDY (secondary market).
All RWA yields share type: "real-world-asset" and the same enter / exit action contract. The permissioned vs permissionless split is surfaced through the requirements block on the yield metadata — covered in Identifying RWA Yields.

Why RWA Yields

RWA yields complement on-chain native yield in three ways that matter for institutional and treasury workflows:

Regulated backing

Returns sourced from U.S. Treasuries, money-market funds, and private credit — not protocol incentives or reflexive on-chain demand.

Stable yield profile

Lower volatility relative to crypto-native strategies. Yield tracks short-duration rates rather than DeFi cycles.

Composable on-chain

Tokenized vault shares plug into the same wallet, custody, and accounting infrastructure as any ERC-20 — no off-chain settlement on the integrator side.

The Integration Model

Every RWA yield — KYC-gated or not — follows the same three-phase lifecycle exposed by the Yield.xyz API.

Discover

Call GET /v1/yields to enumerate enabled yields for your project. Filter on type === "real-world-asset" to isolate the RWA set.

Enter

Call POST /v1/actions/enter with a yield ID, user address, and amount. Yield.xyz returns one or more fully constructed unsigned transactions (typically APPROVAL then DEPOSIT). Sign and submit in order.

Exit

Call POST /v1/actions/exit. Depending on the issuer, redemption is either atomic (instant) or asynchronous (T+1 to T+10, surfaced as a pending balance until settlement).
The only structural difference for permissioned yields: the API performs an on-chain allowlist check before constructing transactions and returns a recoverable HTTP 412 if the address is not yet KYC’d. See KYC Precondition Errors.

Identifying RWA Yields

Every RWA yield is returned by GET /v1/yields (and the per-yield endpoints) with the canonical shape:
{
  "id": "ethereum-usdc-superstate-ustb-vault",
  "type": "real-world-asset",
  "requirements": {
    "kycRequired": true,
    "kycUrl": "https://superstate.com"
  }
}

Filter strategies

const rwaYields = yields.filter(
  (y) => y.type === "real-world-asset"
);
When requirements.kycUrl is present, redirect users there before attempting the first enter call. The KYC URL is the issuer’s onboarding portal — completion adds the user’s address to the on-chain allowlist.
kycRequired is only set when the issuer enforces KYC. Lending markets that accept an RWA token as collateral (e.g. Kamino lending USDC against syrupUSDC) appear under their host protocol’s type (lending / vault), not as real-world-asset, and do not set kycRequired. See Indirect RWA Exposure.

Permissioned RWA Yields

Permissioned yields are restricted by the issuer to verified investors — typically U.S. Qualified Purchasers, accredited investors, or KYC’d entities under the issuer’s compliance program. Yield.xyz handles the on-chain allowlist check; the off-chain KYC happens on the issuer’s portal.

Issuer coverage

IssuerAssetsStatus
SuperstateUSTB (T-Bills), USCC (crypto carry)
Live
Securitize / BlackRockBUIDL (BlackRock USD Institutional Digital Liquidity Fund)Upcoming
Ondo FinanceUSDY, rUSDY, OUSGUpcoming
HashnoteUSYCUpcoming
Backed FinancebIB01, bC3MUpcoming
Franklin TempletonBENJIUpcoming
Mountain ProtocolUSDM, wUSDMUpcoming
MidasmUSDC, mTBILL, mBASISUpcoming
Figure MarketsPRIME, CASHUpcoming

Superstate (USTB, USCC) — Live

Superstate issues two tokenized funds, both restricted to U.S. Qualified Purchasers.
Yield IDUnderlying strategyReward token
ethereum-usdc-superstate-ustb-vaultShort-duration U.S. TreasuriesUSTB
ethereum-usdc-superstate-uscc-vaultCrypto carry strategyUSCC
Onboarding. Before any enter / exit transaction is built, the API calls isAllowed(address) on the on-chain Superstate allowlist. If the address is not allowlisted, the API responds with HTTP 412 Precondition Failed and the issuer’s KYC URL. Treat this as a recoverable state — redirect the user, complete KYC, and retry.Lifecycle.
PhaseMechanismNotes
Entersubscribe(amountUSDC, USDC) on the Superstate token contractRequires prior approve on USDC. Minimum 100,000 USDC.
AccrualNAV/share updates daily via Chainlink oraclegetBalances returns USDC-equivalent value, not raw shares
ExitoffchainRedeem(shares)Submits a redemption request. Settled T+1 via Superstate’s off-chain process.
Pending redemptions surface as BalanceTypes.Unstaking entries with an expectedSettlementAt date.Pause behavior. Both funds expose paused(). When paused, getStatus returns { enter: false, exit: false } and the yield is hidden from discovery.
BlackRock USD Institutional Digital Liquidity Fund, distributed via Securitize. Backed by short-duration U.S. Treasuries, repos, and cash. Restricted to qualified institutional investors per Securitize’s onboarding requirements.Integration target: same enter / exit contract; KYC handled via Securitize’s investor portal.
Tokenized exposure to short-term Treasuries via Ondo’s institutional product line. OUSG and rUSDY are KYC-gated for primary mint/redeem. Note: USDY is also covered but accessed via secondary market and is treated as permissionless from an integration standpoint — see Permissionless RWA Yields.
Hashnote (USYC), Backed Finance (bIB01, bC3M), Franklin Templeton (BENJI), Mountain Protocol (USDM, wUSDM), Midas (mUSDC, mTBILL, mBASIS), and Figure Markets (PRIME, CASH) are on the roadmap. Each will follow the same enter / exit lifecycle with issuer-specific KYC handoff.

KYC Precondition Errors

When a user attempts to interact with a permissioned yield from a non-allowlisted address, the API returns HTTP 412 Precondition Failed:
{
  "error": "PRECONDITION_FAILED",
  "message": "Address 0xabc… is not allowlisted for Superstate. Complete KYC at https://superstate.com",
  "details": {
    "address": "0xabc…",
    "protocol": "Superstate",
    "kycUrl": "https://superstate.com"
  }
}
This is intentionally HTTP 412, not 403 — the request is well-formed, but a precondition (allowlist membership) is unmet. Recommended UX:
  1. Catch the 412 response.
  2. Redirect the user to details.kycUrl.
  3. After the issuer confirms allowlist inclusion (typically minutes to hours), retry the original request.

Permissionless RWA Yields

Permissionless RWA yields require no KYC and no allowlist — any address can deposit through the standard enter / exit flow. They expose users to the same off-chain assets (Treasuries, private credit, structured strategies) but route access through open vault contracts or DEX secondary markets.
requirements is not set on permissionless RWA yields. There are no preconditions beyond holding the input token.

At a glance

AssetProtocolTVLIndicative APYBackingRedemption
Syrup USDC / USDTMapleVariablePrivate-credit poolsPer pool terms
mTBILLMidas~$36.8M~3.3%U.S. Treasuries (BUIDL-linked)Instant or T+1–3
sfrxUSDFrax~$25M~5.2%Mixed: stablecoins, RWA, AMOsInstant
USDYOndo~$680M~3.6%Short-dated U.S. Treasuries + cashDEX secondary
sUSDeEthena~$3.46B~4.2%Delta-hedged crypto + stables7-day cooldown
stUSDTJustLend / Tron~$63M~3.8%T-bills + cash equivalentsUp to ~3 days
Nest Credit (vaults)Nest~$37M~6.1%–14.0%Vault-specific RWA mix1–10 days
TVL and APY are point-in-time snapshots. Always source live values from the GET /v1/yields/{id} metadata endpoint before surfacing numbers in client UI.

Protocol details

Open ERC-4626-style vaults backed by Maple’s private-credit pools. No KYC, no allowlist, no minimum.
Yield IDInputVault token
ethereum-usdc-syrupusdc-…-4626-vaultUSDCsyrupUSDC
ethereum-usdt-syrupusdt-…-4626-vaultUSDTsyrupUSDT
Lifecycle. Standard ERC-4626 deposit / redeem. requirements is not set.

Indirect RWA Exposure

Several non-RWA integrations let users gain RWA exposure without KYC by lending against an RWA token as collateral. These appear under their host protocol’s type (lending / vault) — never as real-world-asset — and do not set kycRequired.
Yield IDWrapsSurface type
solana-kamino-maple-syrupusdc-…-lendingMaple syrupUSDC market on Kaminolending
solana-kamino-maple-pyusd-…-lendingMaple PYUSD market on Kaminolending
solana-kamino-superstate-opening-bell-usdc-…-lendingSuperstate Opening Bell market on Kaminolending
ethereum-syrupusdc-esyrupusdc-…-4626-vaultEuler Yield over syrupUSDCvault
plasma-syrupusdt-aave-v3-lendingAave v3 lending of syrupUSDT on Plasmalending
Risk profile is different. Users take on (1) the wrapping protocol’s smart-contract risk, (2) the underlying RWA’s credit risk, and (3) any peg/oracle risk on the collateral asset. Surface this distinction in any UI that groups these alongside direct RWA yields.

Integration Walkthrough — Syrup USDC

The Yield.xyz API contract is identical for every RWA yield. We use Maple’s syrupUSDC below as the concrete example as it represents the most common permissionless RWA pattern: a standard ERC-4626 vault with asynchronous withdrawals (similar to EIP-7540). Most permissionless RWA integrations on the platform follow this same shape.

Dashboard setup & API key

  1. Log in to dashboard.yield.xyz.
  2. Navigate to Projects → Create Project.
  3. Inside the project: API Keys → Create API Key.
Each project is isolated. Use separate projects for separate clients or environments.

Enable RWA yields

By default, no yields are enabled in a new project. You must explicitly enable each one.
  1. In your project, scroll to the Yields section.
  2. Open the RWA category.
  3. Search for and select the yields you want enabled (e.g. syrupUSDC on Ethereum).
  4. Click Save.
Only enabled yields will be returned by GET /v1/yields for this project’s API key.

Discover yields and fetch metadata

    curl --request GET \
      --url 'https://api.yield.xyz/v1/yields?offset=0&limit=20' \
      --header 'accept: application/json' \
      --header 'x-api-key: <YOUR_API_KEY>'
Metadata includes:
apy
number
Current annualized yield, sourced from the underlying Maple private credit pool.
tvl
number
Total value locked in the yield.
status
object
{ enter: boolean, exit: boolean } — current action availability.
arguments
object
Required fields per action. The amount field is denominated in USDC (the input asset), not in syrupUSDC shares.
chain
string
Network identifier. Ethereum mainnet is the primary deployment. Cross-chain mint/redeem on Base and Arbitrum via CCIP is on the roadmap.

Deposit (Enter)

Deposit USDC and receive syrupUSDC — an ERC-4626 vault share token. No KYC, no allowlist, no minimum.
    curl --request POST \
      --url https://api.yield.xyz/v1/actions/enter \
      --header 'content-type: application/json' \
      --header 'x-api-key: <YOUR_API_KEY>' \
      --data '{
        "yieldId": "<SYRUPUSDC_YIELD_ID>",
        "address": "<USER_WALLET_ADDRESS>",
        "arguments": { "amount": "10000" }
      }'
The response contains one or more fully constructed unsigned transactions, in order:
StepTransactionWhat happens
0APPROVALApprove the Maple vault to spend USDC
1DEPOSITDeposit USDC into the ERC-4626 vault; syrupUSDC shares are minted to the user wallet
No client-side calldata construction is required. Sign and submit each transaction in order via your custody infrastructure.
Deposit behavior. Single atomic flow — shares mint in the same transaction as the deposit.

Redeem (Exit)

Maple’s withdrawal flow is asynchronous — modeled on ERC-4626 with async withdrawal handling (similar to EIP-7540). The same /exit endpoint covers two paths:
    curl --request POST \
      --url https://api.yield.xyz/v1/actions/exit \
      --header 'content-type: application/json' \
      --header 'x-api-key: <YOUR_API_KEY>' \
      --data '{
        "yieldId": "<SYRUPUSDC_YIELD_ID>",
        "address": "<USER_WALLET_ADDRESS>",
        "arguments": { "amount": "10000" }
      }'

Standard async withdrawal

  • Flow: submit redemption request → pool processes → USDC returned to user
  • Settlement: typically near-instant when pool liquidity is available
  • Worst case: up to 30 days, depending on underlying pool liquidity
  • Fee: none beyond standard pool economics

Secondary market swap

  • Flow: swap syrupUSDC → USDC on a DEX
  • Settlement: atomic
  • Tradeoff: subject to price impact and slippage vs vault NAV
  • When to use: users needing immediate exit when the async queue is congested
Syrup has a single withdrawal flow (async by default), with the DEX swap as an independent alternative — there is no instant/standard mode toggle on the redemption itself. Surface both options in client UI when settlement timing matters to the user.

Track balances and lifecycle

    curl --request POST \
      --url 'https://api.yield.xyz/v1/yields/<SYRUPUSDC_YIELD_ID>/balances' \
      --header 'content-type: application/json' \
      --header 'x-api-key: <YOUR_API_KEY>' \
      --data '{ "address": "<USER_WALLET_ADDRESS>" }'
Response surfaces:
active
object
syrupUSDC shares held and earning yield. Includes both share-denominated and USD-equivalent values.
pending
object
Shares submitted for async redemption, awaiting pool processing. Includes an expectedSettlementAt estimate.
Unit-of-account nuance. The API takes amount in USDC (the input asset) on enter / exit, but the on-chain balance is denominated in syrupUSDC shares. The share-to-USDC ratio drifts upward over time as yield accrues. When surfacing balances in client UI:
  • Display the USD-equivalent as the primary value the user sees.
  • Treat the share count as a secondary detail (or hide it entirely for non-technical users).
  • This avoids the most common UX confusion: a user depositing 10,000 USDC and seeing “9,847 syrupUSDC” in their balance.
For multi-yield, multi-address portfolio views, use the batch endpoint POST /v1/yields/balances.
Reference: Balances

Position Lifecycle & Balance States

The Yield.xyz balance model normalizes every RWA position into one of four states, regardless of issuer:
StateMeaningWhen it surfaces
ActiveTokens held, accruing yieldAfter successful enter
Unstaking / PendingRedemption submitted, awaiting settlementT+1 (Superstate), 1–3 days (Midas standard), 1–10 days (Nest), 7 days (Ethena)
ClaimableSettled, awaiting user claimAfter cooldown elapses for protocols requiring a separate claim transaction (e.g. Ethena unstake)
Pause / HiddenIssuer-paused or temporarily unavailableSurfaced via getStatus returning { enter: false, exit: false }
For institutional portfolio reporting, treat Pending and Claimable as still allocated to the strategy — they are off-chain settling cash flows, not realized exits.

Error Handling Reference

Returned for permissioned yields when the user address is not on the issuer’s allowlist. Recoverable.
{
  "error": "PRECONDITION_FAILED",
  "message": "Address 0xabc… is not allowlisted for <issuer>",
  "details": {
    "address": "0xabc…",
    "protocol": "<issuer>",
    "kycUrl": "https://<issuer>.com"
  }
}
Action: redirect to details.kycUrl, retry after allowlist confirmation.
Returned when an enter or exit is attempted on a yield whose underlying contract has been paused by the issuer (e.g. Superstate paused() returns true).Action: poll GET /v1/yields/{id} until status.enter or status.exit returns to true. There is no manual override.
Returned when the requested amount is below the issuer’s minimum (e.g. Superstate’s 100,000 USDC floor).Action: surface the minimum to the user from the yield metadata arguments.amount.min field before request submission.
Returned for Midas Instant Redemption when the instant pool liquidity is insufficient to cover the request.Action: offer the user the standard redemption path (1–3 business days) or reduce the amount to fit available liquidity.

Comparison Reference

For product reviewers comparing options across the integrated set:
AssetBackingKYCRedemption windowDEX exit available
USTB / USCC (Superstate)T-Bills / crypto carryRequiredT+1No
mTBILL (Midas)T-Bills (BUIDL-linked)NoneInstant or T+1–3Limited
Syrup USDC / USDT (Maple)Private creditNonePer pool termsYes
sfrxUSD (Frax)Mixed yield strategyNoneInstantYes
USDY (Ondo)T-Bills + cashNone (secondary)Instant via DEXYes
sUSDe (Ethena)Delta-hedged syntheticNone7-day cooldownYes
stUSDTT-Bills + cash (limited disclosure)NoneUp to ~3 daysYes (Tron)
Nest vaultsVault-specific RWA mixPredicate AML check1–10 daysNo
Backing transparency varies. Treasury-backed exposure (USTB, mTBILL, USDY) is well-attested. Strategy products (sfrxUSD, sUSDe) and limited-disclosure products (stUSDT) require additional review. Surface backing composition prominently when presenting these to end users or institutional reviewers.

Resources

API Reference

Full Yield.xyz API specification — endpoints, schemas, response shapes.

Yield Metadata

Detailed reference for the /yields discovery endpoint and metadata fields.

Balances

Balance lifecycle states and the per-yield / batch balance endpoints.

Creating an API Key

Project setup and API key creation in the Yield.xyz dashboard.