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 decimals

The 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

Result (integer arithmetic, truncated like the contract)
Token amount0.241704333457137341
Multiplier (shares per token)1.000021490286701962
Share-equivalent units, base (raw × uiMultiplier ÷ 1e18)241709527752560441
Share-equivalent units0.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.

On-chain check of the formula (2026-10-13)
Raw value241704333457137341
uiMultiplier()1000021490286701962 (1.000021490286701962)
raw × uiMultiplier ÷ 1e18241709527752560441
uiValue emitted by the contract241709527752560441
Difference0

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().