For the complete documentation index, see llms.txt. This page is also available as Markdown.

Smart Contract Withdrawals

You can withdraw funds from Reya Network through the dApp or interact with the smart contracts directly. The deprecated standalone Reya Bridge website is separate from the Socket contracts used by the dApp's USDC withdrawal flow.

This guide covers rUSD or USDC held directly in your wallet on Reya Network (chain ID 1729). It unwraps wallet rUSD into USDC, then bridges the USDC to your wallet on a destination chain.

Before you start

Identify where your funds are held:

Location
Starting point

rUSD in your wallet on Reya Network

Follow this guide from step 1.

USDC in your wallet on Reya Network

Prepare the route in step 1, then skip the unwrap in step 2.

Margin account or Passive Pool / Earn position

Use the corresponding withdrawal flow in the dApp. If you need a direct contract withdrawal, contact support to prepare the account- or pool-specific call before continuing with wallet funds.

Passive Pool shares are not a fixed amount of rUSD: their redemption value depends on the share price. Do not calculate a share withdrawal by multiplying a desired rUSD amount by 10^30. Likewise, a minimum output amount is a lower bound, not the actual amount received. Always check the resulting wallet balance before unwrapping or bridging.

Direct contract transactions require native ETH on Reya Network for transaction gas and Socket's bridge fee. The dApp's gas sponsorship does not apply to these wallet transactions. If you do not have ETH on Reya Network, contact support for the current funding route before proceeding; do not rely on the deprecated bridge website.

1. Prepare the destination and bridge fee

The USDC Socket controller on Reya Network is 0x1d43076909Ca139BFaC4EbB7194518bE3638fc76. The dApp's Periphery uses this same controller for USDC withdrawals.

Choose a destination chain and a receiving address you control on that chain. These Reya-side connectors were checked against the deployed Periphery configuration on 12 September 2026:

Destination
Chain ID
Connector on Reya Network

Ethereum mainnet

1

0x807B2e8724cDf346c87EEFF4E309bbFCb8681eC1

Arbitrum One

42161

0x3F19417872BC9F5037Bc0D40cE7389D05Cf847Ad

Optimism

10

0x321C2Bd69819a43C340b55db40F7c8Eb3334cDe0

Polygon

137

0x2aF7a52C1fe0Ef66af0a65d32c6ab4112Db393ED

Configuration can change. To refresh it, read getTokenController(token) and getTokenChainConnector(token, chainId) on the Periphery, using the Reya USDC token address 0x3B860c0b53f2e8bd5264AA7c3451d41263C933F2 and the destination chain ID above. These are read-only calls.

An enabled connector (validConnectors(connector) = true) does not by itself prove that relayers are delivering funds. Before unwrapping, confirm recent completed deliveries for the selected route, including the destination token transfer, or ask support to verify it. A successful source transaction alone is insufficient. Explorer history can lag behind the chain; a lack of recent entries is not proof that a route is inactive.

Read getMinFees(connector, msgGasLimit, payloadSize) on the Socket controller with:

Parameter
Value

connector

The current connector for your destination chain

msgGasLimit

10000000

payloadSize

160 (the encoded bridge payload size when execPayload is 0x)

The returned totalFees is the bridge fee in wei of native ETH on Reya Network. Quote it again immediately before the bridge transaction. Do not use a fixed 0.01 ETH or 0.001 ETH amount: fees change, and excess payment should not be assumed to be refunded. Transaction gas is additional; msgGasLimit is the destination message gas limit, not your wallet transaction's gas limit.

2. Unwrap wallet rUSD into USDC

Skip this step if the funds are already USDC in your wallet on Reya Network.

Connect the wallet holding the rUSD to Reya Network and call withdraw(uint256 amount) on RUSDProxy, at 0xa9F32a851B1800742e47725DA54a09A7Ef2556A3.

Both rUSD and its underlying USDC use 6 decimals. For example, to unwrap 50 rUSD, enter 50000000 as the raw amount. This burns the wallet's rUSD and returns the same raw amount of USDC to that wallet on Reya Network. It does not bridge funds to another chain.

Wait for confirmation and check your USDC balance at 0x3B860c0b53f2e8bd5264AA7c3451d41263C933F2. You can import this token into your wallet or read balanceOf(yourWalletAddress) on the token contract.

3. Bridge the USDC

Refresh the fee quote from step 1. From the wallet holding the USDC, on Reya Network, call bridge(address,uint256,uint256,address,bytes,bytes) on the Socket controller:

Field
Value

receiver

Your receiving wallet address on the destination chain

amount

USDC to bridge, in 6-decimal raw units; for example, 50000000 for 50 USDC

msgGasLimit

10000000, matching the fee quote

connector

The current Reya-side connector for your destination chain

execPayload

0x

options

0x

Transaction value / native ETH

The freshly quoted totalFees

If the transaction-value field expects wei, enter totalFees directly. If it expects ETH, divide totalFees by 10^18. Keep the USDC amount separate from this native ETH fee, and do not apply the token's 6-decimal scaling twice.

Review the destination, receiver, amount and fee in your wallet before signing. If the wallet reports a simulation failure or the contract interface does not expose the expected function, ask support to check the call before proceeding.

4. Verify delivery

Save the Reya transaction hash and check the bridge's destination execution and the token transfer to your receiving address. The withdrawal is complete when the funds have arrived on the destination chain, not merely when the Reya transaction succeeds.

If delivery is delayed or fails, contact support through Reya's official Discord with the source transaction hash, wallet address and destination chain. Ask support to trace the existing bridge message before submitting another bridge transaction.

Last updated