> For the complete documentation index, see [llms.txt](https://docs.swapper.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.swapper.finance/deposit-methods/overview.md).

# Overview

The widget's home screen offers several ways for a user to fund your destination: three methods shown by default, plus opt-in source flows you enable explicitly. This section explains what each one does, what the user experiences, and what your app receives.

You control which appear with [`supportedDepositOptions`](/widget-integration/configuration.md#supporteddepositoptions); omit it to show the default set.

## The default methods

| Method                                                      | Key               | User pays with                                                                                                   | Best when                                                                    |
| ----------------------------------------------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| [Pay with Card](/deposit-methods/fiat-onramp.md)            | `depositWithCash` | Card / Apple Pay / bank (fiat)                                                                                   | Users have no crypto yet.                                                    |
| [Transfer Crypto (QR)](/deposit-methods/transfer-crypto.md) | `transferCrypto`  | A transfer to a deposit address — from any wallet or exchange, any supported chain (incl. Bitcoin, Solana, Tron) | Users holding crypto anywhere, including on exchanges; no wallet connection. |
| [Wallet Deposit](/deposit-methods/wallet-deposit.md)        | `walletDeposit`   | Tokens in a wallet they connect (EVM or Solana), signing the route themselves                                    | Users with a browser or mobile wallet at hand.                               |

All three converge on the same outcome: your `dstTokenAddr` on `dstChainId`, delivered to `depositWalletAddress`.

## Opt-in source flows

Two additional funding sources, **off by default** — enable them explicitly in [`supportedDepositOptions`](/widget-integration/configuration.md#supporteddepositoptions). Each pulls the user's balance from that platform and swaps/bridges it to your destination token, much like [Wallet Deposit](/deposit-methods/wallet-deposit.md) but sourced from a specific platform account rather than a connected wallet.

| Method                  | Key                     | Source                                        |
| ----------------------- | ----------------------- | --------------------------------------------- |
| Deposit from Polymarket | `depositFromPolymarket` | The user's Polymarket USDC balance            |
| Deposit from Perps      | `depositFromPerps`      | The user's balance on a supported perps venue |

## How they map to a deposit's `method`

When a deposit completes, its record (in [webhooks](/tracking-deposits/webhooks.md)) carries a `method` field. It relates to the widget option like so:

| Widget option     | UI label       | Deposit `method`                                         | `flow`              |
| ----------------- | -------------- | -------------------------------------------------------- | ------------------- |
| `depositWithCash` | "…with Fiat"   | `onramp` (and, if swept onward, a linked `smart_wallet`) | `deposit_with_fiat` |
| `transferCrypto`  | "…with QR"     | `smart_wallet` or `relay_deposit_address`                | `transfer_crypto`   |
| `walletDeposit`   | "…with Wallet" | `dex_swap`                                               | `wallet_deposit`    |

Group on `flow` to report per widget option: the QR flow settles through two different methods. One exception: the `smart_wallet` leg of an on-ramp sweep also reports `flow: "transfer_crypto"`, so [link it to its on-ramp deposit](/tracking-deposits/webhooks.md#linking-onramp--smart-wallet-deposit) before counting.

The onramp-plus-sweep case produces **two linked deposits** — see [Webhooks → Linking](/tracking-deposits/webhooks.md#linking-onramp--smart-wallet-deposit).

## Amounts and limits

* Deposit size can be clamped in USD with [`minDepositUsd` / `maxDepositUsd`](/widget-integration/configuration.md#mindepositusd--maxdepositusd).
* The QR (transfer) flow always floors the minimum by an estimate of the route's cost so fees are covered.
* All reported amounts are [base-unit strings](/getting-started/core-concepts.md#amounts-are-base-unit-strings).

## Choosing what to show

* **Consumer app, mainstream users** → lead with `depositWithCash`; keep `transferCrypto` for users whose crypto sits on an exchange or another chain.
* **DeFi / on-chain product** → `walletDeposit` and `transferCrypto`.
* **Not sure** → show the default set and let users pick.
* **Built on Polymarket or a perps venue?** → enable the matching opt-in source flow so users can fund straight from their platform balance.

Read the per-method pages for the details:

* [Pay with Card](/deposit-methods/fiat-onramp.md)
* [Transfer Crypto (QR)](/deposit-methods/transfer-crypto.md)
* [Wallet Deposit](/deposit-methods/wallet-deposit.md)
