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

# Connect an exchange

> Enable centralized exchange funding in the deposit widget.

Enable Connect exchange when users should fund from a supported centralized exchange inside the widget. Complete the shared [widget quickstart](/deposits/overview/widget/quickstart) and [backend setup](/deposits/overview/widget/backend-setup) first; your proxy must forward the Swapped Connect routes.

## Enable exchange funding

```tsx theme={null}
import { DepositModal } from "@rhinestone/deposit-modal";
import "@rhinestone/deposit-modal/styles.css";

<DepositModal
  isOpen={isOpen}
  onClose={() => setIsOpen(false)}
  targetChain={8453}
  targetToken="0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
  recipient="0xYOUR_RECIPIENT_ADDRESS"
  backendUrl={process.env.NEXT_PUBLIC_DEPOSIT_PROXY_URL}
  enableExchangeConnect
  onLifecycle={(event) => event.type === "complete" && console.log(event)}
/>
```

`enableExchangeConnect` adds the Connect exchange funding row. The user picks an exchange inside Swapped's iframe and chooses the amount there. The flow needs no connected wallet.

When this is the only funding path you want to show, disable the default wallet and transfer rows:

```tsx theme={null}
<DepositModal
  // ...required props
  enableWallet={false}
  enableQrTransfer={false}
  enableExchangeConnect
/>
```

The backend provides the supported exchange list and mints the signed Connect URL. If the exchange is not available in Connect, use the crypto [deposit address and QR code](/deposits/crypto/deposit-addresses-and-qr-codes) flow for a manual withdrawal instead.

## Mobile apps

The native wrappers need an `openUrl` handler before they offer the exchange row. Present the provider in an in-app browser rather than a bare WebView; see [mobile apps](/deposits/overview/widget/mobile-apps).

## Track completion

Use [callbacks and error handling](/deposits/overview/widget/callbacks-and-error-handling) for the open widget and [webhooks](/deposits/headless/processing-and-tracking/webhooks) for backend fulfillment.

A completed provider order means Swapped sent the crypto onchain. It does not prove that Rhinestone delivered the funds to your configured destination. Track both stages through [onramp and exchange orders](/deposits/headless/processing-and-tracking/track-onramp-and-exchange-orders). The shared guide covers the same-chain case where no bridge event follows.

Use [widget configuration](/deposits/overview/widget/widget-configuration), [theming](/deposits/overview/widget/theming-and-customization), and [analytics](/deposits/overview/widget/analytics) for the remaining integration options.
