> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rwa.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Corporate actions & rebasing

> How dividends, stock splits, and income accrual are reflected in supply, NAV, flows, and performance

Corporate actions change how much of the underlying asset one token is worth. They include cash and stock dividends, stock splits, reverse splits, spinoffs, and income accrual on yield-bearing tokens. Issuers reflect these changes in one of three ways. RWA.xyz follows each issuer's mechanism and does not re-model it.

| Approach | Where the adjustment goes | Examples |
| - | - | - |
| [**Balance rebasing**](#balance-rebasing) | **Supply.** Every balance is scaled by a rebase multiplier. NAV tracks the price of one unit of the underlying. | bStocks, ST0x, USDM, USDO |
| [**NAV accumulation**](#nav-accumulation) | **NAV.** The token count is unchanged, and NAV = underlying price × stock shares per token. | Ondo Global Markets, Coinbase tokenized stocks, accumulating funds |
| [**Distribution**](#distributions) | **Neither.** Income is paid out to holders, and NAV is unchanged or drops on the ex-date. | Distributing funds |

Rebasing and NAV accumulation produce the same dollar value. **The adjustment is applied exactly once:** a token either carries a rebase multiplier on its supply or accumulates the adjustment in its NAV, never both.

![The same 2-for-1 split under balance rebasing, where the token count doubles and NAV halves, and NAV accumulation, where the token count stays fixed and each token represents two stock shares](https://mintcdn.com/rwaxyz/g9oMaeoD06yUWMA2/images/corporate-actions-split.svg?fit=max\&auto=format\&n=g9oMaeoD06yUWMA2\&q=85\&s=e4aba565887d53c13b327c94fe7e1653)

## Key terms

| Term | Definition |
| - | - |
| Raw share | The unit a rebasing contract stores. A rebase does not change it. |
| Displayed unit | Raw shares × rebase multiplier: what `balanceOfUI()` and wallets show for a rebasing token. |
| Rebase multiplier (*m*) | Displayed units per raw share. It is 1 for tokens that do not rebase. Measure 67, `rebase_multiplier`. |
| Raw supply | Supply in raw shares. Measure 68, `raw_supply`. |
| Total supply | Supply in displayed units: raw supply × *m*. Measure 4, `total_supply_token`. |

**Units.** Total supply, circulating supply, and holder balances are in displayed units, the same as `balanceOfUI()` on a rebasing token. NAV is quoted per displayed unit, so for rebasing stock wrappers it equals the underlying's price. NAV-accumulation tokens are published with *m* = 1, even where the contract has its own multiplier. Their supply is the on-chain token count, even where a wallet shows a scaled balance (Coinbase tokenized stocks, and Ondo on Solana and BNB Chain).

## Balance rebasing

A rebasing token scales every balance by *m*, so one displayed unit keeps tracking one unit of the underlying. A 2-for-1 split doubles *m*, and a reinvested cash dividend raises it slightly. For example, QQQB's multiplier stood at 1.000725 in October 2026 after dividend credits.

### The two transfer units

Rebasing contracts differ in what their `Transfer` events carry, which decides how we turn on-chain events into supply. The token field `rebase_transfer_unit` records it.

| | `shares` | `amounts` |
| - | - | - |
| `Transfer`, mint, and burn amounts | Raw shares | Displayed units |
| Contract state | `balanceOf()` = raw shares; `balanceOfUI()` = raw shares × *m* | `balanceOf()` = raw shares × *m* |
| Converting an event to raw shares | None | Divide by *m* |

`rebase_transfer_unit` is `null` for tokens that do not rebase. It is returned on every token from `/v4/tokens` and on the tokens embedded in `/v4/assets`. The unit is set per platform integration or per contract. Tokens on ERC-8056 or BEP-8056 default to `shares`.

### Standards and platforms

| Unit | Mechanism | Platforms |
| - | - | - |
| `shares` | **ERC-8056 / BEP-8056** (Scaled UI Amount Extension for ERC-20): raw balances, with `uiMultiplier()` used only for display | bStocks (BNB Chain), Reality (Arbitrum), Robinhood Chain, Superstate SBET (Ethereum), Coinbase tokenized stocks (Base)\* |
| `shares` | **ERC-4626 vault shares** valued by `assetsPerShare` | ST0x (Ethereum, Base, HyperEVM) |
| `shares` | **Solana token-2022** `ScaledUiAmount` or `InterestBearingConfig` extension: raw amounts, with only the displayed amount scaled | xStocks, Ondo Global Markets\*, and stock mints from Remora, Securitize, Superstate, and WisdomTree |
| `amounts` | **Multiplier ERC-20s** whose `Transfer` events carry displayed units (`rewardMultiplier`, `bonusMultiplier`, `multiplier()` with `TransferShares`, `balancePerShare()`) | Mountain USDM, OpenEden USDO, Matrixdock STBT, Dinari, xStocks (EVM), Backed (Arbitrum, Avalanche, Base), Robinhood (Arbitrum) |

\* Coinbase tokenized stocks and Ondo Global Markets transfer raw shares but use [NAV accumulation](#nav-accumulation), so no multiplier is applied to their supply.

### Multiplier sources

Examples of multiplier sources:

| Platform | Source |
| - | - |
| bStocks | `UIMultiplierUpdated` events on BNB Chain |
| ST0x | Wrap ratio (`assetsPerShare`) history from the ST0x API |
| Mountain USDM | `RewardMultiplier` events |
| OpenEden USDO | `BonusMultiplier` events |

*m(d)* is the multiplier in effect at the start of UTC day *d*, after all rebases through *d* − 1. It is carried forward until the next change.

### Calculations

```
shares tokens:   raw(d) = raw(d−1) + net(d)
amounts tokens:  raw(d) = raw(d−1) + net(d) / m(d)

total(d)       = raw(d) × m(d)
circulating(d) = total(d) − treasury(d) × m(d)
circ_value(d)  = circulating(d) × NAV(d)
```

`raw` is raw supply, `total` is total supply, and `circ_value` is circulating asset value (measure 63). `net(d)` is the day's mints − burns as emitted on chain. `treasury(d)` is the treasury wallets' balance in raw shares.

Holder balances follow the same rule. They accumulate in raw shares and are published × that day's *m*, so holder balances and concentration are in the same units as circulating supply.

## NAV accumulation

An accumulating token keeps its token count unchanged through a corporate action. The action raises the number of stock shares each token represents, and the token's NAV reflects it:

```
NAV per token = underlying price × stock shares per token
```

### Ondo Global Markets

Ondo Global Markets tokens are total-return trackers. Cash dividends, net of withholding tax, are reinvested into the referenced stock. Stock dividends, splits, and spinoffs also change the stock shares per token, which Ondo publishes as `sharesMultiplier`. Over time one token can represent more than one stock share, and the token price diverges from the stock price.

* **NAV (measure 3)** is the primary-market price per token from the Ondo Global Markets API, which already includes reinvested dividends and other corporate actions.
* **Supply** is the on-chain token count, with no rebase multiplier.
* **Solana and BNB Chain.** Ondo supports Scaled UI there, so wallets show the balance × stock shares per token, priced at the stock price. This only changes the display. We use the on-chain balance, which is the unit Ondo's price is quoted in. Ondo's Solana mints are tagged `shares`; its other tokens have no transfer unit.

### Coinbase tokenized stocks

Coinbase tokenized stocks on Base implement ERC-8056, and their transfers move raw shares. Their on-chain multiplier is applied to NAV instead of supply:

* **NAV** is the Coinbase API NAV where one is reported. Otherwise it is the underlying's close × the multiplier in effect at the end of that UTC day, replayed from the on-chain multiplier history. For example, METAc on 2026-10-25 was 642.62 × 1.000314 = 642.82.
* **Supply** is raw shares, with no rebase multiplier.

### Accumulating funds

Funds that reinvest income into NAV, such as accumulating treasury and money market products, work the same way. Supply is the token count, and NAV carries the return. See [NAV & Yield](https://docs.rwa.xyz/methodology/nav-and-yield.md#accumulating-vs-distributing-structures).

## Distributions

Distributing products pay income out instead of reinvesting it, so there is no multiplier and no NAV adjustment. Yield comes from a direct yield feed (see [NAV & Yield](https://docs.rwa.xyz/methodology/nav-and-yield.md#method-b-direct-yield-feed)). Distributions paid in newly minted tokens appear as mints.

## Impact on metrics

![How a rebasing token's on-chain amounts become raw supply, total and circulating supply, and asset value, and separately how adjusted mints and burns are valued into fund flows](https://mintcdn.com/rwaxyz/g9oMaeoD06yUWMA2/images/corporate-actions-pipeline.svg?fit=max\&auto=format\&n=g9oMaeoD06yUWMA2\&q=85\&s=928dd94ef8b96d678abb141c9c1393b6)

In this table, *net* is adjusted mints − adjusted burns, and *price* is that day's price, falling back to NAV.

| Metric | Balance rebasing | NAV accumulation |
| - | - | - |
| Supply and holder balances | Displayed units (raw shares × *m*) | Token count |
| Raw supply | Raw shares (`amounts` events ÷ *m*) | Same as supply |
| NAV | Per displayed unit | Per token, including all corporate actions |
| Token volumes | As emitted: raw shares (`shares`) or displayed units (`amounts`) | Tokens |
| Dollar volumes | Amount × price × *m* (`shares`), amount × price (`amounts`) | Amount × price |
| Fund flows | *net* × NAV × *m* (`shares`), *net* × NAV (`amounts`) | *net* × NAV |
| Performance | NAV ratio × *m* ratio | NAV ratio |

Ondo Global Markets and Coinbase tokenized stocks use the NAV accumulation column, even where their transfer unit is `shares` (Coinbase, and Ondo on Solana).

### Worked example

A token is backed 1:1 by a stock trading at \$100. 1,000 raw shares are minted, so supply is 1,000 and asset value is \$100,000. The stock then splits 2-for-1 and trades at \$50. Later, a holder redeems \$25,000, which is 500 displayed units or 250 raw shares.

| | `shares` | `amounts` | NAV accumulation |
| - | - | - | - |
| Multiplier after split | 2 | 2 | 1 |
| NAV after split | \$50 | \$50 | \$100 |
| Supply after split | 2,000 | 2,000 | 1,000 |
| Burn event amount | 250 | 500 | 250 |
| Supply after burn | 1,500 | 1,500 | 750 |
| Burn value (\$25,000) | 250 × \$50 × 2 | 500 × \$50 | 250 × \$100 |

The NAV-accumulation token's NAV is \$50 × 2 stock shares per token = \$100. The `amounts` burn converts to 500 ÷ 2 = 250 raw shares. All three end with \$75,000 of asset value and record the same \$25,000 burn in both `daily_burns_dollar` and fund flows. The split itself emits no transfer, so it is neither a flow nor a volume.

### Net flows

The fund flows endpoints (`/v4/tokens/aggregates/fund_flows` and `/v4/tokens/aggregates/net_flows`) sum adjusted mints − adjusted burns over the window and value the total at the window's end:

```
net_flows = Σ (adj_mints − adj_burns) × NAV × m
```

The sum runs over tokens. NAV is the asset's latest NAV on or before the window's end. *m* is the token's latest multiplier on or before the window's end for `shares` tokens, and 1 for all others.

Adjusted mints and burns (measures 85 and 86) exclude treasury wallets and count transfers out of or into treasury as mints or burns. For a `shares` token launched within the window that has no treasury, net flows equal ending circulating asset value. This is the "YTD net flows = AUM" check that issuers reconcile against.

For `amounts` tokens, flows are the displayed units transferred at the time of each event. Balance growth from later rebases, such as USDM's accrued yield, is not a flow, so circulating asset value exceeds cumulative net flows by the accrued amount.

### Volumes

Token volumes, such as `daily_transfer_volume_token` (measure 13) and daily mints and burns (16 and 17), sum amounts as emitted on chain: raw shares for `shares` tokens and displayed units for `amounts` tokens.

Dollar volumes, which are transfer volume (20), mints and burns (18 and 19), and adjusted mints and burns (87 and 88), multiply each event's amount by that day's price, falling back to NAV. For `shares` tokens they also multiply by that day's *m*, so every dollar volume is in the same units as asset value. Dollar volumes value each day at that day's price, while the fund flows endpoints value the whole window at its ending NAV.

### Performance

`daily_asset_performance_rate` (measure 90) compounds the NAV change with the change in the asset's rebase multiplier:

```
rate = (nav_ratio × rebase_ratio − 1) × 100 + yield
```

`nav_ratio` is NAV(d) ÷ NAV(d − 1), `rebase_ratio` is m(d) ÷ m(d − 1), and `yield` is any direct daily yield in percentage points. The asset's multiplier is the largest across its tokens on each date, because a multi-chain asset's multiplier may be published on only one of its chains. On a 2-for-1 split the NAV ratio is 0.5 and the rebase ratio is 2, so the day's return is 0% rather than −50%. A reinvested dividend lowers NAV on the ex-date and raises the multiplier by the same proportion, so the holder's return is preserved. For NAV-accumulation tokens the NAV ratio already captures both effects.

## Limitations

* **Intraday timing.** Multiplier changes are applied at UTC day boundaries. Mints and burns on the day of a rebase are converted at that day's multiplier, which causes small deviations.
* **Wrapper tokens.** ERC-4626 wrappers around another token, such as xStocks wrappers, are linked to the token they wrap. They are excluded from supply and flow measures, because their supply is already counted on the wrapped token.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.