Skip to content

Stock payouts ​

When a worker chose a stock token, the payout swaps the worker's USDG for that token on a Uniswap V3 pool and sends it straight to the worker's wallet, in one transaction, after a series of safety checks. If any check fails, nothing is swapped: the payout stays pending in USDG and is retried.

Who can run a swap ​

A stock payout only swaps when the transaction is sent by the worker or the operator. When anyone else completes the work (an employer approving, the arbiter settling a dispute, a third party releasing after 7 days), the payout is created but stays pending until the operator or the worker runs it. This keeps outsiders from placing their own trades around the swap to move the price.

USDG payouts are not swapped and are sent at once, whoever completes the work.

Checks before every swap ​

  1. The token is enabled in StockPayout.
  2. Robinhood's stock token registry is not paused.
  3. The token is not paused.
  4. The worker's wallet is not blocked by Robinhood's registry.
  5. For oracle-protected tokens: the token's price oracle is not paused, and the Chainlink price is valid and not older than the allowed age.
  6. For quote-protected tokens: the amount is within the per-payout cap, and a quote-based minimum was supplied.
  7. After the swap, the amount that actually arrived in the worker's wallet (measured from the balance before and after) is at least the minimum.

Every read from Robinhood's contracts fails closed: if it cannot be read, the swap does not run.

Oracle-protected tokens ​

These are the most liquid stocks, with a Chainlink price feed. The minimum the worker receives is:

text
fair amount = USDG amount ÷ Chainlink price
minimum     = fair amount × (1 − slippage)

The slippage allowance is 1% (100 basis points). If the operator's or the worker's fresh quote gives a higher minimum, the higher one is used; a quote can only tighten the minimum, never loosen it.

The price may be at most 25 hours (90,000 seconds) old. The Chainlink feeds for these stocks update 24 hours a day, 5 days a week, so over a weekend the price becomes too old and these payouts wait until the feed updates again. The same happens whenever a feed stops updating for longer.

Quote-protected tokens ​

These tokens have a Uniswap pool but either no usable Chainlink feed, or a pool price that did not stay close enough to the feed when the list was built. The minimum comes from a Uniswap QuoterV2 quote taken right before the swap:

text
minimum = quoted amount × (1 − slippage)

Because the contract cannot compare this with an oracle, each payout in these tokens is capped at 25 USDG. For a larger reward or budget, the picker marks these tokens as unavailable.

Token list ​

As of 30 September 2026, 63 stock tokens are enabled for payouts:

ProtectionCountTokens
Oracle-protected25AAPL, AMD, AMZN, ASML, BABA, CRCL, DELL, GLD, GOOGL, INTC, META, MSFT, MSTR, MU, NVDA, PLTR, QQQ, SGOV, SLV, SNDK, SPCX, SPY, TSLA, USAR, USO
Quote-protected (25 USDG cap per payout)38AMC, AVGO, BA, BB, BE, COST, DJT, F, FIG, GLXY, GME, HIMS, IBM, JNJ, LLY, LMT, LULU, MRNA, MRVL, NET, NFLX, ON, PENG, PFE, QUBT, RBLX, RDDT, RIVN, SHOP, SKHY, SNAP, SNOW, SOXX, TSM, TTWO, UPS, VTI, WYFI

The app always shows the current list, including any change the admin makes later.

How the list was chosen ​

Every token in Robinhood's official token list was checked on-chain with a script that only reads:

  • Identity: the token must belong to Robinhood's official token contracts and registry, with the symbol from Robinhood's list, 18 decimals and an active status. Tokens failing any identity check are never listed.
  • Liquidity: a Uniswap V3 pool with at least 5,000 USDG on the USDG side. The deepest pool is used.
  • Oracle-protected if the token has exactly one valid Chainlink feed and a 10 USDG quote clears the oracle minimum with room to spare. Otherwise quote-protected.
  • Tokens without a USDG pool or with a shallower pool are not listed. The admin may add them later.

The admin can add, change or disable tokens later. The app always shows the current list.

When a payout waits ​

The payout stays Pending and its USDG stays in the escrow. When a swap was attempted and failed, the reason is recorded on-chain (a PayoutDeferred event) and shown on the Dashboard. Then:

  • the operator retries pending stock payouts about every 10 minutes, whenever a fresh quote passes the checks;
  • the worker can retry at any time with Try now;
  • after 3 days, the worker can switch the payout to another token or to USDG.

See Getting paid.

work2own is an independent project. It is not affiliated with, endorsed by or sponsored by Robinhood Markets, Inc. Nothing here is investment advice.