Wallet Infrastructure
Wallet Infrastructure
Swaps & Transfers

Cross-Network Transfers

Move USD₮ between networks, including to Tron.

Transfer flow
CustomerWallet on source networkamount
USD₮
Wallet InfrastructureBridgedeposited
amountOut
RecipientDestination networkfilled
refund
CustomerBack to the walletrefunded

Routes

Move USD₮ from an EVM wallet on Ethereum, Arbitrum, Polygon, Optimism, Base or Plasma to a recipient on another of those networks, or on Tron.

Flow

  1. Quote bridge. amountOut is what arrives after the bridge fee.
  2. Prepare bridge. It checks the balance, refusing with insufficient_funds when it cannot cover the amount and gas, and returns a userOpHash.
  3. Have the customer sign the userOpHash with their passkey.
  4. Submit bridge before quoteExpiresAt.

Fees

  • The bridge fee comes out of the USD₮ sent.
  • The customer pays source-network gas in USD₮, on top of the amount.
  • Transfers to Tron carry a flat destination cost of about 19 TRX, so small amounts lose a large share.

Tracking

Follow a transfer with Get bridge or the bridge.filled, bridge.refunded, bridge.failed and bridge.stalled events.

StatusMeaning
preparedBuilt, not yet signed.
submittedSigned and sent.
depositedDeposited with the bridge, awaiting delivery.
filledArrived at the recipient.
refundedCould not be delivered; the USD₮ returned to the wallet.
failedDid not leave the wallet.
stalledTracking stopped before an outcome was seen.

The sending side also appears in List transactions with purpose: bridge.

Errors

CodeStatusCause
validation_failed400Malformed body, a recipient not valid for the destination, or a body that differs from what was prepared.
validation_failed409The quote expired before submit.
chain_unavailable400, 409, 501The source network is not enabled for transfers (400, 501), or the wallet is not deployed on it (409).
insufficient_funds400The wallet cannot cover the amount plus gas.
forbidden409The wallet is under recovery.
passkey_credential_invalid409The passkey does not own this wallet.
idempotency_conflict409The transfer was already submitted.
not_found404Nothing was prepared under this userOpHash, or no transfer has this id.

On this page