Stock Token units calculator
Last updated:
The formula
underlying shares (base units) = raw token amount × uiMultiplier ÷ 1e18 // integer division
underlying shares (display) = underlying shares (base units) ÷ 1e18 // 18 decimalsThe first line is the issuer's conversion from Building with Stock Tokens; the second only formats the 18-decimal result. Use big-integer arithmetic: raw amounts are 18-decimal integers and their product with the multiplier is far beyond what a floating-point number holds exactly.
Calculate
| Token amount | 0.241704333457137341 |
|---|---|
| Multiplier (shares per token) | 1.000021490286701962 |
| Share-equivalent units, base (raw × uiMultiplier ÷ 1e18) | 241709527752560441 |
| Share-equivalent units | 0.241709527752560441 |
Build the read for your own key
Optional: enter a token contract and a holder address to get a JSON-RPC batch that reads the raw balance, the multiplier, the contract's own balanceOfUI and any scheduled change. This page only prints the request; send it from your code with your key.
curl -s https://triport.io/rpc/robinhood \
-H "x-token: $TRIPORT_API_KEY" -H "content-type: application/json" \
-d '[
{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"<TOKEN_ADDRESS>","data":"0x70a082310000000000000000000000000000000000000000000000000000000000000000"},"latest"]},
{"jsonrpc":"2.0","id":2,"method":"eth_call","params":[{"to":"<TOKEN_ADDRESS>","data":"0xa60bf13d"},"latest"]},
{"jsonrpc":"2.0","id":3,"method":"eth_call","params":[{"to":"<TOKEN_ADDRESS>","data":"0x437a99580000000000000000000000000000000000000000000000000000000000000000"},"latest"]},
{"jsonrpc":"2.0","id":4,"method":"eth_call","params":[{"to":"<TOKEN_ADDRESS>","data":"0xdc767007"},"latest"]},
{"jsonrpc":"2.0","id":5,"method":"eth_call","params":[{"to":"<TOKEN_ADDRESS>","data":"0x97a4064f"},"latest"]}
]'Worked example from the chain
The default inputs are real values read on 2026-10-13 at block 0x539e561: the raw value of one TransferWithScaledUI log and the token contract's uiMultiplier() at that block.
| Raw value | 241704333457137341 |
|---|---|
uiMultiplier() | 1000021490286701962 (1.000021490286701962) |
| raw × uiMultiplier ÷ 1e18 | 241709527752560441 |
uiValue emitted by the contract | 241709527752560441 |
| Difference | 0 |
Reading the two inputs
Both are plain eth_call reads: balanceOf(address) (selector 0x70a08231) for the raw amount and uiMultiplier() (selector 0xa60bf13d) for the ratio. Read them at the same block number so they describe the same state, and check newUIMultiplier() and effectiveAt() for a scheduled change. For history, the contracts emit TransferWithScaledUI with both the raw value and the multiplied one; the Stock Token transfers guide covers subscriptions, de-duplication and backfill.
Do not apply it to the price
The issuer's Oracles & Price Feeds page states that each token's Chainlink feed returns the price of one token, which already includes the multiplier. Use this tool for share-equivalent units; for value, multiply the token amount by the feed price and leave the multiplier out.
Availability and legal status
This tool does arithmetic on public contract values. It is not investment, legal or tax advice and expresses no view on any token. The issuer, Robinhood Assets (Jersey) Limited, describes Stock Tokens as tokenised debt securities that give economic exposure to underlying securities without legal or beneficial rights in them, and states that they may not be offered, sold or delivered in the United States or to U.S. persons and that offers are restricted in other jurisdictions, including Canada, the United Kingdom and Switzerland — see the Stock Tokens page and the list at docs.robinhood.com/rhj.
FAQ
- Why does balanceOf not change after a dividend or a split?
- Stock Tokens implement ERC-8056: a corporate action updates uiMultiplier() and leaves raw balances and total supply unchanged. They are not rebasing tokens, so the share-equivalent amount is always raw × uiMultiplier ÷ 1e18.
- Should I multiply the Chainlink price by uiMultiplier?
- No. The issuer's documentation states that each token's Chainlink feed already returns the price of one token including the multiplier. Token value is the token amount times the feed price; multiplying again counts the corporate action twice.
- Why does my result differ by one unit from balanceOfUI?
- Usually rounding. The contract divides with truncation; this tool does the same with BigInt arithmetic. Floating-point math or round-to-nearest produces one-unit differences at 18 decimals.
- Does this page call the blockchain or send my addresses anywhere?
- No. It makes no network request. Values you type stay in the page, are not stored and are not added to the URL. The request builder only prints a JSON-RPC batch for you to send from your own code with your own API key.
- Where do I get the token address?
- From the issuer's Token Contracts page. A token with a matching name or ticker at a different address is not a Robinhood Stock Token, so pin addresses rather than matching on symbol().