Passage: embed Ondo tokenized stocks without pretending they are shares
Passage is the embed. Ondo is the catalog. Users get price exposure, not title. Checkout is Ethereum for now. Solana is where the token can live after.
devrels.xyz/a/265Passage: embed Ondo tokenized stocks without pretending they are shares. CoinList’s Passage SDK lets a wallet or fintech surface Ondo’s catalog. The user signs in with CoinList OAuth, clears eligibility, pays USDC, and the token lands in their own wallet.
The page that started this is docs.passage.coinlist.co/assets/partners/ondo. Read it before you copy Superstate flows onto Ondo tickers. Same Passage checkout. Different legal object.
The short version
Ondo Global Markets issues 400+ tokens: single-name stocks, index and sector funds, Treasuries and credit, metals and energy. The token is a claim on a bankruptcy-remote SPV that holds the underlying 1:1 at US broker-dealers. Your user has economic exposure. They do not have title. They do not get voting rights. They do not get tax docs from Passage or Ondo.
Superstate Opening Bell is the other Passage partner. That token is the share, allowlisted, often for US persons. If your copy says “you own Tesla,” you are on the wrong partner.
| Ondo | Superstate | |
|---|---|---|
| What the token is | Wrapped exposure / total-return tracker | Direct ownership of the share |
| Who it is for | Non-US (US is blocked) | Typically US individuals |
| Allowlist | None. P2P and DeFi transfers work | Per wallet per offer. Wrong dest reverts |
| Buy | RFQ mint, USDC, atomic | Direct issuance, then allowlist |
| Dividends | Reinvested. No cash. No 1099 from Passage | Paid to the investor. Tax docs from Superstate |
| Passage offer type | ondo::swap | Superstate swap + authorizeWallet |
Solana is not the mint (yet)
Passage docs are explicit: Superstate and Ondo purchases are Ethereum-only for now. The SDK wallet seam is EvmWallet plus viem. Additional chains follow when issuers expand.
After mint, Ondo tokens are transferable on Ethereum, BNB Chain, and Solana, and bridgeable to HyperEVM. No allowlist. On Solana, Passage says a scaled UI makes the unit look share-like. On Ethereum it does not. Dividends show as an increasing token balance on Solana (docs still say support coming soon) and as tracker value on Ethereum.
If you are building a Solana wallet, the honest product is: KYC and mint on Ethereum through Passage, then let the user hold or bridge to Solana. Do not advertise an in-app Solana buy button until Passage ships that chain on checkout.
Checkout: two calls, one minute
Install @coinlist-co/react. Keep client_secret on the server. Start at L3 CheckoutContainer. It detects ondo::swap and runs the flow. Drop to useOndoBuyCheckoutViewModel if you need your own markup.
Ondo will not let you fold prepare and execute into one click:
prepareSwapapproves spend, then builds firm calldata withexpiresAt(about 60 seconds).- User reviews pay amount, fee (taken off the deposit, not added), and tokens out.
executeSwapbroadcasts that calldata as-is.
getTradingStatus and getQuote are free to poll. buildSwapTransaction spends an attestation. Budget one build per order, plus one if they refresh. Quotes price against Ondo production even on testnet: the number is real, the money is not. Ondo has no sandbox.
Sell is the same RFQ, atomic burn to USDC. Passage says only buy ships in the SDK today; sell gets its own page later. Secondary AMMs exist and are often thin. For size, use Passage’s Ondo swap, not a pool you found on a scanner.
import { defaultCheckoutConfig, AssetSymbol } from "@coinlist-co/react/shared"
const checkoutConfig = defaultCheckoutConfig({
"ondo::swap": { symbol: (offer) => AssetSymbol(offer.asset.code) },
})
// CheckoutContainer offer={offer} chain="ethereum_mainnet" wallets={wallets} config={checkoutConfig}
// symbol is Ondo's API symbol, not ERC-20 symbol(). Map exceptions.Price, hours, geo
One token is not always one share. Total-return trackers reinvest dividends net of withholding. On issue day the price matches the cash ticker. Later it drifts. Do not paste traditional market data on the card. Use Ondo’s official price or CoinGecko.
Most names trade 24/5 on US hours. Weekends, holidays, session gaps, corporate actions, and tripped risk limits pause mint/redeem. Transfers keep working. Live: status.ondo.finance. Minimum order is $1. Caps are per asset on the offer. USDC only.
US, Canada, China, and a long sanctions list are blocked. Per-token extras live on the offer. Holding a token from a DEX does not make someone eligible to redeem. No onboarding, no mint/redeem path, only secondary where allowed.
Token list source of truth: ondoprotocol/ondo-global-markets-token-list. Do not freeze a 400-name roster in your UI.
People and links
| What | Where |
|---|---|
| Ondo partner page | docs.passage.coinlist.co/assets/partners/ondo |
| Ondo swap buy | SDK: Ondo Swap Buy |
| Quickstart | @coinlist-co/react |
| Partner demo | coinlist/partner-demo |
| Product | passage.coinlist.co |
| X | @CoinList |
Resources
- Superstate partner page (direct shares)
- Wallets and chains (Ethereum purchases today)
- Kamino Lend (permissioned RWA pools are Superstate-shaped, not this wrap)
Keep reading
Robinhood Chain's mainnet went live July 1 with 24/7 'Classic Stock Tokens' in 120+ countries — on an Arbitrum Orbit L2, not Solana. Here's the honest comparison: 100ms sequencer blocks vs Solana's L1 finality, a corporate single-sequencer chain vs a permissionless network, tokens with no shareholder rights vs Solana's own tokenized-equity scene, and why every big exchange now wants its own chain.
You are not integrating an Aave clone. You pick a market, talk to klend (or a vault on top of it), and you use the same oracle the liquidators use.
Blinks = one-click onchain actions in-feed; Alerts = wallet-auth notifications (email, push, Telegram, in-app); docs.dialect.to + @dialectlabs packages.
Get new articles in your inbox
Technical deep-dives on Solana tooling, infrastructure, and ecosystem. No noise.
