How yield accrues
All yield sources are variable-rate. Rates change over time based on market conditions and protocol performance.NAV-based tokens (Syrup USDC, Morpho vaults)
These positions appreciate in value over time. When you deposit USDC, it is converted into the underlying yield token or vault shares at the current exchange rate. As the protocol earns yield, the NAV (net asset value) per share increases, making those shares worth more USDC. The wallet’sbalance.totalUsd reflects the current market value of all positions, so NAV appreciation is automatically captured in the balance.
Wallet-level earnings
Yield is reported at the wallet level, not per position. This is because rebalances move funds between positions over time, making per-position attribution misleading. TheearnedUsd field represents lifetime yield earned across all positions since the wallet was created. It is computed internally using per-position yield accrual tracking rather than a simple deposit/withdrawal accounting formula, so it accurately reflects actual yield even through rebalances and partial withdrawals.
Yield does not move on the same cadence for every source:
syrup-usdcupdates continuously from live onchain share-to-assets conversion.- Morpho ERC-4626 vaults exposed by the live catalog update continuously from live onchain ERC-4626 conversion reads.
balance.totalUsd = depositUsd + balance.earnedUsd exactly to the smallest USDC unit.
The yield endpoint
UseGET /v2/wallets/:id/yield for a detailed yield breakdown:
Response fields
| Field | Description |
|---|---|
earnedUsd | Cumulative yield earned (same as balance.earnedUsd on the wallet) |
currentBalanceUsd | Current total wallet balance |
positions | Per-source APY and allocation breakdown |
Yield source fields
| Field | Description |
|---|---|
yieldSourceId | Identifier for the yield source |
name | Display name |
apyBps | Current annualized yield in basis points (100 bps = 1%). null if unavailable. |
pct | Target allocation percentage for this source in the wallet’s strategy |
Displaying yield to users
Recommended approach
- Total earned — use
balance.earnedUsdfrom the wallet response orearnedUsdfrom the yield endpoint - Current APY — compute a blended APY from the yield endpoint’s
positionsarray: - Yield breakdown — show each yield source’s
name,apyBps, andpctfrom the yield endpoint
Important notes
- Ground surfaces annualized rates in
apyBps, but the methodology varies by source. Syrup and Morpho vaults do not use identical lookback windows. - Balances may briefly lag deposits or withdrawals due to caching. See Balances and Yield for valuation notes.
earnedUsdis lifetime. It remains monotonic even when individual source valuations update on different cadences.