> For the complete documentation index, see [llms.txt](https://wallet-basics-guide.gitbook.io/wallet-basics-guide-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wallet-basics-guide.gitbook.io/wallet-basics-guide-docs/chainflip-choose-a-deposit-channel-or-vault-call.md).

# Chainflip: Choose a Deposit Channel or Vault Call

A deposit channel suits users who send funds from a wallet; a vault call suits apps that can make a contract call for them. The right choice depends on where the user holds their assets and how much control your app needs.

### Deposit channels: when the user sends a transfer

A deposit channel gives a swap its own deposit address and records where the finished assets should go. Your app requests the channel with the source asset, destination asset, destination address, and refund details. The user then sends funds to the address from a wallet or exchange.

Think of it like a parcel label: the address identifies the package, and the label says where it should end up. The user does not need to stay online after sending. This makes channels a good fit for a simple swap screen or an app that accepts transfers from many wallets.

The trade-off is time and timing. The network waits for source-chain confirmations before processing the swap. For example, Bitcoin deposits typically need three blocks, which can take around 30 minutes. Ethereum deposits typically need about six blocks, or around 90 seconds. Check the actual transaction on a public block explorer; confirmation times vary.

Each channel stays open for 24 hours. If a user sends funds after it expires, the network may not recognise them as that swap. Show the expiry clearly and tell users to open a fresh channel for each trade. A refund address and a deadline for acceptable execution also matter: if the price limits are not met by the deadline, funds return to that address, less applicable fees.

### Vault calls: when your app can start the swap

A vault call starts a swap through a contract on a supported chain. A contract is code that runs on a blockchain. Your app can include the swap details in the call, so the user signs one transaction instead of sending funds to a separate deposit address.

This fits wallet-connected apps and other contract-based flows where the user is already making an on-chain transaction. It can also help when a swap is one step in a larger action, such as swapping an asset and then calling a destination-chain app. That follow-on action needs extra message data and enough destination-chain gas.

The user still pays the source chain’s transaction fee, and the transaction can fail before the swap starts. A direct transfer to a vault address without the required swap call and details can lose funds. Test the exact contract flow, token approvals, refund path, and destination call before offering it to users.

### How Chainflip’s swap route differs from this choice

The choice between a channel and a vault call is about how the swap starts; the route describes what happens after that. A channel is like a labeled parcel drop, while a vault call is like submitting the label and parcel together at a staffed counter. [how Chainflip handles cross-chain swaps](https://defiledger-6f4.pages.dev/chainflip-swaps-what-integrators-need-to-know/) covers the full route; here, the deciding factor is whether your user sends a transfer or signs a contract call.

After the deposit is recognised, the protocol processes the trade and sends the result to the destination address. A cross-chain swap can use more than one liquidity pool, meaning the trade may pass through an intermediate asset before reaching its target. For example, a Bitcoin-to-Ethereum trade may go through a Bitcoin-to-USDC pool, then a USDC-to-ETH pool.

Budget for more than the quoted exchange rate. Published protocol figures list a liquidity fee of around 0.10%–0.15% per pool and a 0.10% network fee, plus source-chain gas and a destination transfer fee that varies by chain. Your broker may add a commission. Compare the final estimated output and every fee for the same assets and amount.

### Which method should you build first?

Choose a deposit channel if your users need to pay from different wallets or exchanges, or if your app cannot make a contract call. Choose a vault call if users already connect a wallet and your app benefits from starting the swap in a signed transaction. Neither removes confirmation delays, price changes, or the need for a safe refund path.

I would start with channels for a standalone swap page because the user flow works across wallet types. I would choose vault calls when the swap belongs inside a contract-based action. Before launch, try a small swap for each route you plan to support, inspect its request and status in the Chainflip Explorer, and confirm that a refund reaches the stated address when a swap misses its limits.
