How to Identify RWA Tokens Onchain
Zerion API offers RWA classification, making it easy to indentify tokenized stocks, stablecoins, and other tokenized real-world assets onchain.
The tokenization of real-world assets brings financial and non-financial assets onchain as tokens. This means you can use tokenized assets in existing wallets, protocols, and apps.
But for developers, that creates a classification problem: a tokenized stock looks just like any other ERC-20 or SPL token. Highlighting RWAs in a portfolio or restricting their trading requires knowing more than the ticker or token name.
This guide shows how to identify RWA tokens with Zerion API’s asset_class attribute. RWA classification is a premium offering that can be enabled for your API key.
Why tokenzed assets are hard to identify onchain
RWA tokens are based on the same ERC-20 or SPL token standards and do not tell your app what they represent.
The same issuer can also have assets on several chains, leaving you to connect each implementation with the correct category.
The common approach is to maintain an address list to handle this. But if you miss a listing or a new chain integration, a tokenized stock will appear as an ordinary token.
Zerion API uses asset_class to give your app a category to use for portfolio grouping, discovery, jurisdiction checks, and swap restrictions.
How to classify RWAs with Zerion API
Step 1: Sign up for Zerion API
Get the free developer API key, which gives up to 2,000 requests per day. The free key alone does not include RWA classification.
Step 2: Enable RWA classification
Zerion API’s RWA classification is a paid add-on, enabled per organization. Without it, asset_class is absent from responses, and classification filters return 403.
Request access from the Dashboard support widget or at [email protected]. If you don’t have a paid plan, please share your detailed use case.
Step 3: Read the class on a fungible asset
Once enabled, asset_class appears on fungibles returned by:
GET /v1/fungibles/GET /v1/fungibles/{fungible_id}GET /v1/fungibles/by-implementation
For example, for NVIDIA xStock, the classification field is:
{
"asset_class": "tokenized_stock"
}This reduced JSON shows only the relevant field. The tokenized_stock category covers tokenized equities, such as xStocks, including tokenized ETFs.
The full set of asset_class values is listed in the RWA classification documentation:
| Value | Covers |
|---|---|
tokenized_stock |
Equities and ETFs represented as tokens |
tokenized_treasury |
Treasury instruments and other government debt |
commodity |
Commodity tokens, such as tokenized gold |
stablecoin |
Tokens pegged to fiat currencies |
other_financial |
Financial assets such as funds, bonds, and private credit |
other_non_financial |
Real estate, carbon credits, and collectibles represented as tokens |
unknown |
Likely RWA awaiting a more specific category |
Step 4: Read the class in positions and webhooks
For portfolio views, classification appears on fungible_info, including its receipt, in:
GET /v1/wallets/{address}/positions/GET /v1/wallet-sets/{wallet_set_id}/positions/
A reduced positions fragment looks like this:
{
"fungible_info": {
"asset_class": "tokenized_stock"
}
}Use the field to group holdings alongside their position data. It is also available in webhook payloads for use in your product’s event handling.
Step 5: Filter assets by class
On the fungible token list, use filter[asset_class] to select one or more comma-separated classes:
GET /v1/fungibles/?filter[asset_class]=tokenized_stock
Combine this with the endpoint’s chain and sorting options to build a list of tokenized stocks on Solana, ordered by market capitalization.
To return assets that have any classification, use:
GET /v1/fungibles/?filter[has_asset_class]=true
Both filters support chain, search query, sorting, and pagination, but they apply only to the fungibles list.
Step 6: Handle missing and unknown values separately
A missing asset_class means no classification information is available. It does not mean the asset is “not an RWA.” The field is absent without the add-on, and coverage is not exhaustive.
The value unknown means the asset is likely an RWA, with its specific category pending.
What you can build with RWA classification
- Jurisdiction checks: Send classified tokenized stocks, such as xStocks, through your product’s eligibility checks.
- Swap restrictions: Flag or block restricted asset classes before including tokens in routes, with separate handling for unknown assets.
- Portfolio breakdowns: Group holdings by class, including tokenized treasuries alongside DeFi yield positions.
- RWA discovery: Build filtered market views by asset class and chain, with sorting and pagination.
How classification works
Zerion’s RWA classification is issuer-driven, rather than inferred from token names through heuristics or AI.
Zerion tracks known RWA issuers and the contracts they deploy. So an asset from a recognized issuer carries the same classification on every chain it appears on.
Coverage expands as issuers are added. If you represent an issuer that is not yet tracked, send us an email at [email protected].
Add RWA classification to your app
Zerion API makes it easy to classify RWA assets on Solana and all major EVM chains.
Use the RWA classification documentation to integrate the field and filters into your app.
RWA classification is available as a paid add-on. Request access via the support widget in the API Dashboard or at [email protected].
FAQ
What is a tokenized stock?
A tokenized stock represents exposure to an equity through a blockchain token. xStocks is an example. Zerion API uses tokenized_stock for tokenized equities, including tokenized ETFs.
Are stablecoins RWAs?
Fiat-pegged stablecoins are included in Zerion’s RWA classification system under stablecoin, separate from tokenized stocks, treasuries, and other assets.
What are tokenized securities?
Tokenized securities are securities represented through blockchain tokens, such as equities or debt instruments. Zerion API’s classification can inform your application’s jurisdiction checks and trading restrictions.
Does Zerion classify every RWA?
No. Coverage is strongest for major issuers and expands as new issuers are added. A missing asset_class means no classification information is available; unknown means the asset is likely an RWA, with its specific class pending.