Top up your account
Fund your balance from any wallet on any chain. Flow swaps it to USDC and credits your platform wallet.
Users arrive holding whatever they hold — an external wallet, a Coinbase balance, or a token bridged from another chain. Fireblocks Flow provides the swap and settlement infrastructure[†] to credit an embedded wallet, Fireblocks vault, or any provided deposit wallet.
Fund your balance from any wallet on any chain. Flow swaps it to USDC and credits your platform wallet.
Your application should make clear to end-users that asset conversion and cross-chain routing are executed by independent third-party providers. Users keep full control of their assets and must explicitly sign each transfer. On-chain transactions are final and cannot be reversed.
By continuing, you agree to our Terms of Service and Privacy Policy.
Flow runs on mainnet networks only. Use a sandbox environment id with real mainnet addresses for development.
Server-side. Creates a flow with the deposit amount, platform settlement asset, and the user's destination embedded wallet. Authenticated by an API token with flow.write scope.
// Runs on your server — one Flow per payment/deposit/withdraw.
// Requires an API token with flow.write scope.
const res = await fetch(
`https://app.dynamic.xyz/api/v0/server/${process.env.ENV_ID}/flow/deposit`,
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.DYNAMIC_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
amount: "5.00",
currency: "USD",
settlementConfig: {
strategy: "preferred_order",
settlements: [
{
chainName: "EVM",
chainId: "8453",
symbol: "USDC",
tokenAddress: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
tokenDecimals: 6,
},
],
},
destinationConfig: {
destinations: [
{
chainName: "EVM",
type: "address",
identifier: "<destination_address>",
},
],
},
}),
},
);
const { flow } = await res.json();
const flowId = flow.id;
// Pass flowId to your frontend.Declare the wallet and chain the user is depositing from. Returns a session token (dft_…) for subsequent calls. Dynamic runs risk + sanctions screening here; a 403 means the source is blocked.
import { addEvmExtension } from "@dynamic-labs-sdk/evm";
import { attachFlowSource } from "@dynamic-labs-sdk/client";
addEvmExtension();
// Declare the payer's wallet + chain. Returns an updated flow and
// stores a session token (dft_…) for subsequent calls automatically.
await attachFlowSource({
flowId,
fromAddress: wallet.address,
fromChainId: String(fromChainId), // from the picked token — not getActiveNetworkData()
fromChainName: isSolanaChainId(fromToken.chainId) ? "SOL" : "EVM",
sourceType: "wallet",
});
// 403 → source blocked by risk/sanctions screening.Quote the cross-chain swap from the user's chosen token into the platform's settlement asset. Quotes expire in 60 seconds — re-quote if the user takes longer to confirm.
import { getFlowQuote } from "@dynamic-labs-sdk/client";
const quoted = await getFlowQuote({
flowId,
fromTokenAddress: fromToken.address,
fromChainId: String(fromToken.networkId),
slippage: 0.005, // 0.5%
});
// quoted.quote.expiresAt — re-quote if the user takes longer than 60s.The user signs in their external wallet; Dynamic broadcasts and tracks settlement. SDK collapses prepare + sign + broadcast into submitFlowTransaction; REST keeps them separate so a custom wallet client can hook in.
import { submitFlowTransaction } from "@dynamic-labs-sdk/client";
// prepare → sign (wallet popup) → broadcast in one helper.
await submitFlowTransaction({
flowId,
walletAccount: wallet,
});Call getFlow to read executionState and settlementState. Production should subscribe to the flow.settlement.updated webhook for push-driven updates. On completed, credit the user's platform balance; on failed, surface a retry path.
import { getFlow } from "@dynamic-labs-sdk/client";
const flow = await getFlow({ flowId });
// flow.executionState — lifecycle phase (e.g. "source_confirmed", "failed")
// flow.settlementState — "none" | "completed" | "failed"
// flow.settlement — { txHash?, … } once settledDynamic does not control the swap, bridge, or routing protocols used to convert and deliver assets. Rates and fees are sourced from third-party providers and may change between quote and execution.
Cross-chain transfers carry risk — including slippage, partial fills, and failed conversions. On-chain transactions are final and cannot be reversed.
These materials are not investment, financial, legal, or tax advice. You are responsible for evaluation at your own discretion. Please review Dynamic's terms and conditions for full details on acceptable use.