Fund an account from any chain a user already holds
Someone holding USDC on Base tops up a Sui balance without leaving your app or learning what a bridge is. You describe the destination; CoinVoyage finds the route.
You pay
8.80 USDC
You receive
10 SUI
Network fee
Quoted upfront
Deposits stall for boring reasons
Almost all of them come down to holding the wrong asset on the wrong chain. That is a routing problem, not a user-education problem.
They pay with what they already hold
The connected wallet is scanned for real balances first, so a user is never shown a route they cannot fund. No pre-swap, no bridge, no second app.
Four chain families in one modal
Sui, Bitcoin, Solana, and every supported EVM network from the same payment sheet. Zcash joins them through Pay to Address, transparent addresses only.
Quotes ranked by what actually lands
Routes are priced live across Uniswap, Jupiter, Cetus, Across, and CCTP, and ranked by what actually arrives, not by headline fee.
The public API key is enough
A DEPOSIT order can be created with your public key, because the user's own destination address defines where the funds go. No server signature required to get started.
Four steps, start to credited
The same lifecycle every CoinVoyage order follows, with nothing extra for the deposit case.
01
Collect the destination
Ask which supported chain and address the user wants to receive funds on. Usually their connected wallet, or an address you assign.
02
Create the order
Call createDepositOrder with the destination chain, token, amount, and recipient. CoinVoyage returns an order ID and fires ORDER_CREATED.
03
Open the payment modal
Render PayButton, or hand the generated orderId to your own checkout UI with PayButton.Custom.
04
Credit from the webhook
Listen for ORDER_COMPLETED, ORDER_EXPIRED, ORDER_REFUNDED, and ORDER_ERROR. Browser callbacks update the UI; webhooks decide whether the balance moves.
const order = await apiClient.createDepositOrder({
amount: "10",
currency: {
chain_id: ChainId.SUI,
address: null, // null = native token
},
recipient: "0xYourWalletAddress",
});The specifics
Order mode
DEPOSIT
Credential
Public API key, no server signature required
Payment window
A unique deposit address and exact amount, typically valid for 30 minutes
Typical settlement
Under 60 seconds end to end for most routes
Failure handling
An automatic refund to the user's refund address, followed by ORDER_REFUNDED
Underpayment
The order enters PARTIAL_PAYMENT and accepts further deposits until funded
Pricing
Depends on the products you use, your volume, and how you settle. Contact us.
Let users deposit from wherever their money already is
Create an organization, generate an API key, and put a working deposit button in front of a user today.