Build a custom extension that turns a Fireblocks Flow deposit into a deep link or QR code for a mobile wallet app.
This guide is for teams that operate their own mobile wallet app and want a dedicated Fireblocks Flow integration with the Dynamic JavaScript SDK, without using WalletConnect. Instead of connecting the wallet inside the SDK and signing through submitFlowTransaction, you create a Flow with sourceType: 'deposit_address' and pass the payment details to your wallet app through a deep link or QR code. The wallet app controls the send UX, and Flow monitors the deposit.
A custom deep link lets the wallet app own the payment experience:
No SDK wallet connection — the app running the SDK never has to connect to the user’s wallet.
Fewer hops — the connected-wallet path requires the user to connect the wallet and then sign a transaction, which means switching to the wallet twice. A deep link lets the user confirm and send in the wallet app once.
Pre-filled, correct details — the deep link can carry the exact deposit address, amount, asset, and chain, so the wallet app can build a dedicated confirmation screen instead of asking the user to copy and paste values.
Less room for error — with a raw deposit address, the user must send the exact correct amount. Any mismatch typically triggers a refund. A deep link removes most manual entry and reduces that risk.
One code path for QR and deep links — the same URL can be rendered as a QR code on desktop, opened as a deep link on mobile web, or invoked directly from a mobile native app.
Use sourceType: 'deposit_address' and a custom deep link when:
You control the wallet app and want to keep the send UX inside it.
The app running the SDK should not connect to the user’s wallet.
You want one implementation that covers desktop QR codes, mobile web deep links, and mobile native deep links.
You want to reduce the chance of the user sending the wrong amount, asset, or address.
For the connected-wallet alternative — where the SDK attaches sourceType: 'wallet' and signs inside submitFlowTransaction through executeSwapTransaction — see Add swap capabilities.
attachFlowSource supports three source types: wallet, exchange, and deposit_address.
sourceType: 'wallet' — the SDK connects a wallet and signs. This is the connected-wallet path covered in Add swap capabilities.
sourceType: 'deposit_address' — Flow generates a unique deposit address and amount. Your extension turns that address and amount into a deep link or QR code. The wallet app sends the funds, and Flow detects the deposit and advances executionState to source_confirmed.
The deposit-address path does not require a WalletProvider and does not call submitFlowTransaction.
Create a single extension function that takes a Flow and builds a custom-app deep link. The example uses mywallet://deposit, but replace the scheme with your own wallet’s URL scheme.
import { getDefaultClient } from "@dynamic-labs-sdk/client";import type { DynamicClient, Flow } from "@dynamic-labs-sdk/client";import { getCore } from "@dynamic-labs-sdk/client/core";const APP_SCHEME = "mywallet";export const createMyWalletDepositUrl = ({ flow, returnUrl,}: { flow: Flow; returnUrl?: string;}): URL => { const url = new URL(`${APP_SCHEME}://deposit`); if (!flow.depositAddress) { throw new Error("Flow did not return a deposit address"); } url.searchParams.set("flowId", flow.id); url.searchParams.set("depositAddress", flow.depositAddress); url.searchParams.set("rawAmount", flow.quote.fromAmount); if (flow.fromToken) { url.searchParams.set("fromToken", flow.fromToken); } if (flow.fromChainId) { url.searchParams.set("fromChainId", flow.fromChainId); } if (flow.fromChainName) { url.searchParams.set("fromChainName", flow.fromChainName); } if (flow.memo) { url.searchParams.set("memo", JSON.stringify(flow.memo)); } if (returnUrl) { url.searchParams.set("returnUrl", returnUrl); } // Add any other fields your wallet app needs (for example, the token contract address). return url;};export const openMyWalletDeposit = ( { flow, returnUrl }: { flow: Flow; returnUrl?: string }, client: DynamicClient = getDefaultClient()): Promise<void> => getCore(client).openDeeplink( createMyWalletDepositUrl({ flow, returnUrl }).toString() );
Important details:
flow.depositAddress is the address the wallet must send funds to.
flow.quote.fromAmount is the exact source amount in base units; do not fall back to flow.amount, which is the destination amount.
fromToken, fromChainId, and fromChainName describe the asset and chain the user is paying from.
The query parameter names and the custom scheme are up to you — this is just an example contract.
A consumer app creates a Flow, attaches a deposit-address source, gets a quote, then opens the deep link or shows a QR code:
import { attachFlowSource, getFlowQuote,} from "@dynamic-labs-sdk/client";import { createMyWalletDepositUrl, openMyWalletDeposit } from "my-wallet-extension";const flowId = "flow-abc123";await attachFlowSource({ flowId, sourceType: "deposit_address", fromChainId: "1", fromChainName: "EVM", // Optional: where to return funds if the transfer fails. refundAddress: "0x...",});const flow = await getFlowQuote({ flowId, fromTokenAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",});// On mobile native or mobile web, open the wallet app directly.await openMyWalletDeposit({ flow, returnUrl: "myapp://deposit-complete",});// On desktop, encode the same URL as a QR code.const qrData = createMyWalletDepositUrl({ flow }).toString();
Desktop: show a QR code with the deposit deep-link URL. The user scans it with their phone camera or wallet app.
Mobile web: call openDeeplink or render a button that links to the deep-link URL. A phone cannot scan a QR code that it is already displaying, so a QR code is not the primary UX on mobile web.
Mobile native: call openDeeplink directly. If the wallet app is not installed, fall back to the QR code or an app-store prompt.
See Open deep links for the platform behavior and React Native configuration.
The user sends the exact asset and amount to depositAddress from the wallet app. Fireblocks Flow monitors the address and advances executionState from quoted to source_confirmed. Poll getFlow to track progress; there is no submitFlowTransaction call for this path.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Dynamic","colors":{"primary":"#4779FF","light":"#A0BFFF","dark":"#69A5FF"},"logo":{"light":"https://mintcdn.com/dynamic-docs-testing/CXYm3HK725eun9ev/logo/dynamic-fireblocks-icon-light.svg?fit=max\u0026auto=format\u0026n=CXYm3HK725eun9ev\u0026q=85\u0026s=c050cd8c41715aa71119f91c19221cb3","dark":"https://mintcdn.com/dynamic-docs-testing/CXYm3HK725eun9ev/logo/dynamic-fireblocks-icon-dark.svg?fit=max\u0026auto=format\u0026n=CXYm3HK725eun9ev\u0026q=85\u0026s=434fa110e5847b7a23adc1abd636719e"},"favicon":"https://mintcdn.com/dynamic-docs-testing/C-CltRmvvkSqoMFQ/assets/favicon.png?fit=max\u0026auto=format\u0026n=C-CltRmvvkSqoMFQ\u0026q=85\u0026s=2bbf17fee49c1d60434f1fd77a2d8f38","api":{"mdx":{"auth":{"method":"bearer"}}},"background":{"image":"https://mintcdn.com/dynamic-docs-testing/C-CltRmvvkSqoMFQ/assets/images/general/background-image.png?fit=max\u0026auto=format\u0026n=C-CltRmvvkSqoMFQ\u0026q=85\u0026s=67a354a23840d92de3d1cb25c24ff27c","decoration":"gradient"},"navbar":{"links":[{"href":"https://www.dynamic.xyz/get-started","label":"Start Free"}],"primary":{"type":"button","label":"See it in action","href":"https://demo.dynamic.xyz/"}},"footer":{"socials":{"x":"https://x.com/dynamic_xyz","linkedin":"https://www.linkedin.com/company/dynamiclabs","slack":"https://www.dynamic.xyz/join-slack"}},"styling":{"eyebrows":"breadcrumbs","codeblocks":"system","latex":true},"integrations":{"gtm":{"tagId":"GTM-K9NXSDK"},"cookies":{"key":"dynamic-docs-cookie-consent","value":"accepted"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"dynamic-docs-testing","hasAudioNarration":false,"actualSubdomain":"dynamic-docs-testing","customDomains":["www.dynamic.xyz"],"gitSource":{"type":"github","owner":"dynamic-labs","repo":"documentation","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae91f9dcf931df74071a0f3","collectionId":"08352c0e-59e9-430b-860f-aeff3e7571b7","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae91f9dcf931df74071a0f3"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae91f9dcf931df74071a0f3","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"Reference","count":1949},{"language":"default","tag":"REST API","count":1171},{"language":"default","tag":"Schemas","count":635},{"language":"default","tag":"Endpoints","count":532},{"language":"default","tag":"Javascript, React \u0026 React Native","count":303},{"language":"default","tag":"Legacy React","count":287},{"language":"default","tag":"SDK","count":231},{"language":"default","tag":"JavaScript SDK Reference","count":226},{"language":"default","tag":"Implement","count":210},{"language":"default","tag":"Wallets","count":186}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".dynamic-demos-link{position:relative;overflow:hidden;margin:.5rem 0 2rem;padding:2rem 1.75rem;border-radius:16px;border:1px solid rgba(148,163,184,.14);background:rgba(148,163,184,.04);text-align:center}html.dark .dynamic-demos-link{border-color:rgba(148,163,184,.12);background:rgba(148,163,184,.03)}.ddl-glow{position:absolute;inset:-40% auto auto 50%;width:28rem;height:28rem;transform:translateX(-50%);border-radius:50%;background:radial-gradient(circle,rgba(71,121,255,.18),transparent 70%);pointer-events:none}html.dark .ddl-glow{background:radial-gradient(circle,rgba(71,121,255,.22),transparent 70%)}.ddl-content{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;max-width:32rem;margin:0 auto}.ddl-icon{display:inline-flex;align-items:center;justify-content:center;width:3rem;height:3rem;margin-bottom:1rem;border-radius:999px;background:rgba(71,121,255,.12);color:#4779ff}html.dark .ddl-icon{background:rgba(71,121,255,.18);color:#93b4ff}.ddl-icon svg{width:1.25rem;height:1.25rem}.ddl-title{margin:0 0 .65rem;font-size:1.5rem;font-weight:700;line-height:1.25;letter-spacing:-.02em;color:#0f172a}html.dark .ddl-title{color:#f1f5f9}.ddl-copy{margin:0 0 1.35rem;font-size:1rem;line-height:1.65;color:#64748b}html.dark .ddl-copy{color:#94a3b8}.ddl-button,.ddl-copy strong{color:#4779ff;font-weight:600}html.dark .ddl-copy strong{color:#93b4ff}.ddl-button{display:inline-flex;align-items:center;gap:.45rem;padding:.75rem 1.15rem;border-radius:10px;background:#4779ff;color:#fff;font-size:.95rem;line-height:1;text-decoration:none;transition:background-color 160ms cubic-bezier(.2,0,0,1),transform 160ms cubic-bezier(.2,0,0,1)}.ddl-button:hover{background:#2f5fe0;transform:translateY(-1px)}.ddl-button:focus-visible{outline:2px solid #4779ff;outline-offset:3px}.ddl-button-icon{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.ddl-button{transition:none}.ddl-button:hover{transform:none}}.welcome-section{padding:1.3rem 1.5rem 0;border-radius:14px;border:1px solid rgba(148,163,184,.12);background:rgba(148,163,184,.04);margin-bottom:2rem}html.dark .welcome-section{border-color:rgba(148,163,184,.1);background:rgba(148,163,184,.03)}.welcome-word-rotator{margin:0 0 1rem;padding:0 0 1rem;border-bottom:1px dashed rgba(148,163,184,.2)}html.dark .welcome-word-rotator{border-bottom-color:rgba(148,163,184,.15)}.welcome-section h3{margin-top:1.75rem;margin-bottom:-1rem}.wwr-title{margin:0;font-size:2rem;font-weight:700;line-height:1.3;letter-spacing:-.02em;color:#0f172a}html.dark .wwr-title{color:#f1f5f9}.wwr-line{display:block}.wwr-line+.wwr-line{margin-top:.1rem}.wwr-word{white-space:nowrap}.wwr-char{display:inline-block;will-change:transform,opacity,filter;transform-style:preserve-3d;backface-visibility:hidden}.wwr-accent{color:#4779ff;font-weight:550;perspective:400px}html.dark .wwr-accent{color:#93b4ff}#banner{background-color:#4779ff}.event-hero{margin:0 0 1.5rem}.event-hero-banner{width:100%;height:auto;display:block;border-radius:14px;box-shadow:0 10px 32px rgba(15,23,42,.22)}.event-hero-meta{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.9rem}.event-tag{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .85rem;border-radius:999px;font-size:.85rem;font-weight:600;color:#2f5fe0;background:rgba(71,121,255,.12);border:1px solid rgba(71,121,255,.25)}html.dark .event-tag{color:#93b4ff;background:rgba(71,121,255,.16);border-color:rgba(71,121,255,.32)}@media (min-width:768px){.nav-logo{height:2.25rem!important;max-width:18rem!important}}.mcp-install-button{pointer-events:none!important;user-select:none!important;-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important}.before\\:bg-background-light::before,.chat-assistant-floating-input::before{content:none!important;display:none!important;background:0 0!important;background-color:transparent!important;height:0!important}.rn-qs-dark{display:none}.rn-qs-light,html.dark .rn-qs-dark{display:block}.nav-tabs-item>div>svg,.nav-tabs-item>svg,html.dark .rn-qs-light,html.light .rn-qs-dark{display:none}html.light .rn-qs-light{display:block}.llm-copy-btn{display:inline-flex;align-items:center;gap:6px;margin-bottom:12px;padding:7px 14px;background-color:#4779ff;color:#fff;font-size:13px;font-weight:500;border:0;border-radius:6px;cursor:pointer;transition:background-color .15s ease,opacity .15s ease}.llm-copy-btn:hover{background-color:#2f5fe0}.llm-copy-btn--copied{background-color:#16a34a}.llm-copy-btn--copied:hover{background-color:#15803d}html.dark,html.light{--ds-subtitle:#8f93ab;--ds-primary:#5c89ff}html.dark{--ds-bg:#0c0e13;--ds-elevated:#1b1d22;--ds-border:#282b33;--ds-text:#ececec;--ds-muted:#6f7177}html.light{--ds-bg:#ffffff;--ds-elevated:#fafafb;--ds-border:#e9ecf2;--ds-text:#26272e;--ds-muted:#5f6478}html:is(.light, .dark) .DocSearch-Container,html:is(.light, .dark) .DocSearch-Modal{--docsearch-primary-color:var(--ds-primary);--docsearch-highlight-color:var(--ds-primary);--docsearch-logo-color:var(--ds-muted);--docsearch-text-color:var(--ds-text);--docsearch-muted-color:var(--ds-muted);--docsearch-hit-color:var(--ds-text);--docsearch-hit-active-color:var(--ds-text);--docsearch-container-background:rgb(0 0 0 / 0.6);--docsearch-modal-background:var(--ds-bg);--docsearch-searchbox-background:transparent;--docsearch-searchbox-focus-background:transparent;--docsearch-hit-background:transparent;--docsearch-footer-background:var(--ds-bg);--docsearch-modal-shadow:0 4px 8px -6px rgb(24 39 75 / 0.02),\n 0 8px 24px -4px rgb(24 39 75 / 0.05),\n 0 0 0 1px var(--ds-border);--docsearch-hit-shadow:none;--docsearch-footer-shadow:0 -1px 0 0 var(--ds-border);--docsearch-searchbox-shadow:none;--docsearch-key-gradient:var(--ds-bg);--docsearch-key-shadow:inset 0 0 0 1px var(--ds-border),\n 0 2px 0 0 var(--ds-border);--docsearch-key-pressed-shadow:inset 0 0 0 1px var(--ds-border),\n 0 1px 0 0 var(--ds-border);--docsearch-hit-height:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html:is(.light, .dark) .DocSearch-Modal{max-width:558px;height:auto;max-height:min(80vh,720px);border-radius:12px;overflow:hidden}html:is(.light, .dark) .DocSearch-Dropdown{height:auto;padding:12px 16px;max-height:calc(min(80vh,720px) - 56px - 54px)}html:is(.light, .dark) .DocSearch-Dropdown-Container{display:flex;flex-direction:column;gap:17px}html:is(.light, .dark) .DocSearch-Hits ul{display:flex;flex-direction:column;gap:2px}html:is(.light, .dark) .DocSearch-SearchBar{padding:12px;border-bottom:1px solid var(--ds-border)}html:is(.light, .dark) .DocSearch-SearchBar:has(.DocSearch-Input:not(:placeholder-shown)){background:var(--ds-elevated)}html:is(.light, .dark) .DocSearch-Form{height:auto;padding:0;gap:8px;background:0 0;box-shadow:none}html:is(.light, .dark) .DocSearch-Input{padding:0;font-size:14px;font-weight:400;line-height:20px;color:var(--ds-text)}html:is(.light, .dark) .DocSearch-Input::placeholder{color:var(--ds-muted);opacity:1}html:is(.light, .dark) .DocSearch-Hit-source{height:auto;margin:0 0 6px;padding:0;background:0 0;font-size:12px;font-weight:500;line-height:18px;letter-spacing:0;text-transform:none;color:var(--ds-primary)}html:is(.light, .dark) .DocSearch-Hit{height:auto;padding:0}html:is(.light, .dark) .DocSearch-Hit a{height:54px;padding:8px 10px;border:1px solid transparent;border-radius:8px;background:0 0;display:flex;align-items:center;transition-property:background-color,border-color;transition-duration:120ms;transition-timing-function:cubic-bezier(.2,0,0,1)}html:is(.light, .dark) .DocSearch-Hit[aria-selected=true] a{background:var(--ds-elevated);border-color:var(--ds-border)}html:is(.light, .dark) .DocSearch-Hit-Container{display:flex;align-items:center;width:100%;height:auto;min-height:0;gap:8px}html:is(.light, .dark) .DocSearch-Hit-content-wrapper{flex:1 1 auto;min-width:0}html:is(.light, .dark) .DocSearch-Hit-action{margin-left:auto;flex-shrink:0}html:is(.light, .dark) .DocSearch-Hit-title{font-size:14px;font-weight:500;line-height:20px;color:var(--ds-text)}html:is(.light, .dark) .DocSearch-Hit-path{font-size:12px;font-weight:400;line-height:18px;color:var(--ds-muted)}html:is(.light, .dark) .DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path{color:var(--ds-subtitle)}html:is(.light, .dark) .DocSearch-Hit--Result.DocSearch-Hit--Child .DocSearch-Hit-title,html:is(.light, .dark) .DocSearch-Hit--Result.DocSearch-Hit--Lvl1 .DocSearch-Hit-title,html:is(.light, .dark) .DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,html:is(.light, .dark) .DocSearch-Hit[aria-selected=true] mark{color:var(--ds-primary)}html:is(.light, .dark) .DocSearch-Hit-action,html:is(.light, .dark) .DocSearch-Logo a>*{display:none}html:is(.light, .dark) .DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:2px;border-radius:4px;background:var(--ds-bg);box-shadow:inset 0 0 0 1px var(--ds-border),0 2px 0 0 var(--ds-border);flex-shrink:0}html:is(.light, .dark) .DocSearch-Footer{height:auto;padding:16px;background:var(--ds-bg);border-top:1px solid var(--ds-border);border-radius:0 0 12px 12px;box-shadow:none}html:is(.light, .dark) .DocSearch-Commands{gap:20px}html:is(.light, .dark) .DocSearch-Commands li{gap:6px}html:is(.light, .dark) .DocSearch-Commands-Key{position:relative;width:22px;height:22px;min-width:22px;margin:0;padding:2px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:500;color:var(--ds-muted)}html:is(.light, .dark) .DocSearch-Label{font-size:14px;font-weight:400;line-height:20px;color:var(--ds-muted)}html:is(.light, .dark) .DocSearch-Logo a{font-size:11px;font-weight:400;line-height:1;color:var(--ds-muted);text-decoration:none;border-radius:2px;opacity:.6;transition-property:opacity;transition-duration:150ms;transition-timing-function:cubic-bezier(.2,0,0,1)}html:is(.light, .dark) .DocSearch-Logo a::before{content:'Search by Algolia'}html:is(.light, .dark) .DocSearch-Hit-Tree,html:is(.light, .dark) .DocSearch-Hit-action-button,html:is(.light, .dark) .DocSearch-Hit-action>*,html:is(.light, .dark) .DocSearch-Hit-action~.DocSearch-Hit-action,html:is(.light, .dark) .DocSearch-Hit-icon>*,html:is(.light, .dark) .DocSearch-MagnifierLabel>*,html:is(.light, .dark) .DocSearch-Reset>*{display:none!important}html:is(.light, .dark) .DocSearch-Commands li:nth-child(1) .DocSearch-Commands-Key>*,html:is(.light, .dark) .DocSearch-Commands li:nth-child(2) .DocSearch-Commands-Key>*{display:none!important}html:is(.light, .dark) .DocSearch-MagnifierLabel{width:16px;height:16px}html:is(.light, .dark) .DocSearch-MagnifierLabel,html:is(.light, .dark) .DocSearch-Reset{display:inline-block;padding:0;background-color:var(--ds-muted);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}html:is(.light, .dark) .DocSearch-Hit-icon,html:is(.light, .dark) .DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action::before{width:16px;height:16px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}html:is(.light, .dark) .DocSearch-Hit-icon{display:inline-block;padding:0;background-color:var(--ds-muted)}html:is(.light, .dark) .DocSearch-MagnifierLabel{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1zZWFyY2giIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIGQ9Im0yMSAyMS00LjM0LTQuMzQiIC8+IDxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjgiIC8+IDwvc3ZnPg==);mask-image:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1zZWFyY2giIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIGQ9Im0yMSAyMS00LjM0LTQuMzQiIC8+IDxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjgiIC8+IDwvc3ZnPg==)}html:is(.light, .dark) .DocSearch-Reset{position:relative;width:16px;height:16px;border:0;border-radius:2px;cursor:pointer;transition-property:transform,opacity;transition-duration:100ms;transition-timing-function:cubic-bezier(.2,0,0,1);-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS14IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgPiA8cGF0aCBkPSJNMTggNiA2IDE4IiAvPiA8cGF0aCBkPSJtNiA2IDEyIDEyIiAvPiA8L3N2Zz4=);mask-image:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS14IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgPiA8cGF0aCBkPSJNMTggNiA2IDE4IiAvPiA8cGF0aCBkPSJtNiA2IDEyIDEyIiAvPiA8L3N2Zz4=)}html:is(.light, .dark) .DocSearch-Reset[hidden]{display:none}html:is(.light, .dark) .DocSearch-Reset::after{content:'';position:absolute;inset:-12px}html:is(.light, .dark) .DocSearch-Hit-icon{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1maWxlLXRleHQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIGQ9Ik02IDIyYTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNC43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djEyYTIgMiAwIDAgMS0yIDJ6IiAvPiA8cGF0aCBkPSJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSIgLz4gPHBhdGggZD0iTTEwIDlIOCIgLz4gPHBhdGggZD0iTTE2IDEzSDgiIC8+IDxwYXRoIGQ9Ik0xNiAxN0g4IiAvPiA8L3N2Zz4=);mask-image:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1maWxlLXRleHQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIGQ9Ik02IDIyYTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNC43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djEyYTIgMiAwIDAgMS0yIDJ6IiAvPiA8cGF0aCBkPSJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSIgLz4gPHBhdGggZD0iTTEwIDlIOCIgLz4gPHBhdGggZD0iTTE2IDEzSDgiIC8+IDxwYXRoIGQ9Ik0xNiAxN0g4IiAvPiA8L3N2Zz4=)}html:is(.light, .dark) .DocSearch-Hit--Result.DocSearch-Hit--Child .DocSearch-Hit-icon,html:is(.light, .dark) .DocSearch-Hit--Result.DocSearch-Hit--Lvl1 .DocSearch-Hit-icon{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1oYXNoIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgPiA8bGluZSB4MT0iNCIgeDI9IjIwIiB5MT0iOSIgeTI9IjkiIC8+IDxsaW5lIHgxPSI0IiB4Mj0iMjAiIHkxPSIxNSIgeTI9IjE1IiAvPiA8bGluZSB4MT0iMTAiIHgyPSI4IiB5MT0iMyIgeTI9IjIxIiAvPiA8bGluZSB4MT0iMTYiIHgyPSIxNCIgeTE9IjMiIHkyPSIyMSIgLz4gPC9zdmc+);mask-image:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1oYXNoIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgPiA8bGluZSB4MT0iNCIgeDI9IjIwIiB5MT0iOSIgeTI9IjkiIC8+IDxsaW5lIHgxPSI0IiB4Mj0iMjAiIHkxPSIxNSIgeTI9IjE1IiAvPiA8bGluZSB4MT0iMTAiIHgyPSI4IiB5MT0iMyIgeTI9IjIxIiAvPiA8bGluZSB4MT0iMTYiIHgyPSIxNCIgeTE9IjMiIHkyPSIyMSIgLz4gPC9zdmc+)}html:is(.light, .dark) .DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon{background-color:var(--ds-text)}html:is(.light, .dark) .DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action::before{content:'';background-color:var(--ds-text);-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jb3JuZXItZG93bi1sZWZ0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgPiA8cGF0aCBkPSJNMjAgNHY3YTQgNCAwIDAgMS00IDRINCIgLz4gPHBhdGggZD0ibTkgMTAtNSA1IDUgNSIgLz4gPC9zdmc+);mask-image:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jb3JuZXItZG93bi1sZWZ0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgPiA8cGF0aCBkPSJNMjAgNHY3YTQgNCAwIDAgMS00IDRINCIgLz4gPHBhdGggZD0ibTkgMTAtNSA1IDUgNSIgLz4gPC9zdmc+)}html:is(.light, .dark) .DocSearch-Commands li:nth-child(1) .DocSearch-Commands-Key::before,html:is(.light, .dark) .DocSearch-Commands li:nth-child(2) .DocSearch-Commands-Key:nth-child(1)::before,html:is(.light, .dark) .DocSearch-Commands li:nth-child(2) .DocSearch-Commands-Key:nth-child(2)::before{content:'';width:16px;height:16px;background-color:var(--ds-muted);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}html:is(.light, .dark) .DocSearch-Commands li:nth-child(1) .DocSearch-Commands-Key::before{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jb3JuZXItZG93bi1sZWZ0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgPiA8cGF0aCBkPSJNMjAgNHY3YTQgNCAwIDAgMS00IDRINCIgLz4gPHBhdGggZD0ibTkgMTAtNSA1IDUgNSIgLz4gPC9zdmc+);mask-image:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jb3JuZXItZG93bi1sZWZ0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgPiA8cGF0aCBkPSJNMjAgNHY3YTQgNCAwIDAgMS00IDRINCIgLz4gPHBhdGggZD0ibTkgMTAtNSA1IDUgNSIgLz4gPC9zdmc+)}html:is(.light, .dark) .DocSearch-Commands li:nth-child(2) .DocSearch-Commands-Key:nth-child(1)::before{-webkit-mask-image:url(\"data:image/svg+xml;utf8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'>\u003cpath d='m5 12 7-7 7 7'/>\u003cpath d='M12 19V5'/>\u003c/svg>\");mask-image:url(\"data:image/svg+xml;utf8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'>\u003cpath d='m5 12 7-7 7 7'/>\u003cpath d='M12 19V5'/>\u003c/svg>\")}html:is(.light, .dark) .DocSearch-Commands li:nth-child(2) .DocSearch-Commands-Key:nth-child(2)::before{-webkit-mask-image:url(\"data:image/svg+xml;utf8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'>\u003cpath d='M12 5v14'/>\u003cpath d='m19 12-7 7-7-7'/>\u003c/svg>\");mask-image:url(\"data:image/svg+xml;utf8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'>\u003cpath d='M12 5v14'/>\u003cpath d='m19 12-7 7-7-7'/>\u003c/svg>\")}html:is(.light, .dark) .DocSearch-Reset:focus-visible{outline:2px solid var(--ds-primary);outline-offset:4px}html:is(.light, .dark) .DocSearch-Logo a:focus-visible{outline:2px solid var(--ds-primary);opacity:1;outline-offset:3px}html:is(.light, .dark) .DocSearch-Reset:active{transform:scale(.96)}@media (hover:hover){html:is(.light, .dark) .DocSearch-Reset:hover{opacity:.8}html:is(.light, .dark) .DocSearch-Logo a:hover{opacity:1}}@media (prefers-reduced-motion:reduce){html:is(.light, .dark) .DocSearch-Hit a,html:is(.light, .dark) .DocSearch-Logo a,html:is(.light, .dark) .DocSearch-Reset{transition:none}html:is(.light, .dark) .DocSearch-Reset:active{transform:none}}.nav-tabs{flex:1 1 auto;min-width:0;align-items:center;gap:.25rem!important;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;scroll-padding-inline:.625rem}.nav-tabs::-webkit-scrollbar{display:none}.nav-tabs-item{flex:0 0 auto;white-space:nowrap;height:auto;padding:.375rem .625rem;border-radius:.5rem;gap:0!important;color:#5f6478;transition:background-color .15s ease,color .15s ease}.nav-tabs-item>div.absolute{display:none!important}.nav-tabs-item[data-active=true]{background-color:#edf1fe;color:#2b55c7}.nav-tabs-item:focus-visible{outline:2px solid #4779ff;outline-offset:2px;color:#26272e}html.dark .nav-tabs-item{color:#8f93ab}html.dark .nav-tabs-item:focus-visible{outline-color:#69a5ff;color:#ececec}html.dark .nav-tabs-item[data-active=true]{background-color:rgb(105 165 255/14%);color:#a0bfff}@media (hover:hover){.nav-tabs-item:hover{background-color:#f4f5f8;color:#26272e}.nav-tabs-item[data-active=true]:hover{background-color:#e4ebfd;color:#2b55c7}html.dark .nav-tabs-item:hover{background-color:#1b1d22;color:#ececec}html.dark .nav-tabs-item[data-active=true]:hover{background-color:rgb(105 165 255/20%);color:#a0bfff}}@media (prefers-reduced-motion:reduce){.nav-tabs-item{transition:none}}div:has(>.nav-tabs){border-bottom:1px solid #e9ecf2;height:auto!important;padding-block:.4375rem}html.dark div:has(>.nav-tabs){border-bottom-color:#282b33}a[href$='demo.dynamic.xyz/']>span[class*=bg-primary-dark]{background-color:#2e57d1}@media (hover:hover){a[href$='demo.dynamic.xyz/']:hover>span[class*=bg-primary-dark]{background-color:#22409e}}#sidebar-content .sidebar-group li:has(>button>div:first-child:not(.flex-1))>ul{margin-left:1.5rem}"}],"page":{"pagePath":"javascript/reference/creating-extensions/wallet-provider/build-payment-deep-link","slug":"/javascript/reference/creating-extensions/wallet-provider/build-payment-deep-link","pageMetadata":{"title":"Build a payment deep link","description":"Build a custom extension that turns a Fireblocks Flow deposit into a deep link or QR code for a mobile wallet app.","docType":"guide","href":"/javascript/reference/creating-extensions/wallet-provider/build-payment-deep-link"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Build a custom extension that turns a Fireblocks Flow deposit into a deep link or QR code for a mobile wallet app.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Card,CardGroup,CodeBlock,Heading}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`This guide is for teams that operate their own mobile wallet app and want a dedicated `,_jsx(_components.a,{href:`/flow/overview`,children:`Fireblocks Flow`}),` integration with the Dynamic JavaScript SDK, without using WalletConnect. Instead of connecting the wallet inside the SDK and signing through `,_jsx(_components.code,{children:`submitFlowTransaction`}),`, you create a Flow with `,_jsx(_components.code,{children:`sourceType: 'deposit_address'`}),` and pass the payment details to your wallet app through a deep link or QR code. The wallet app controls the send UX, and Flow monitors the deposit.`]}),`\n`,_jsx(Heading,{level:`2`,id:`why-build-a-custom-payment-deep-link`,children:`Why build a custom payment deep link`}),`\n`,_jsx(_components.p,{children:`A custom deep link lets the wallet app own the payment experience:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`No SDK wallet connection`}),` — the app running the SDK never has to connect to the user’s wallet.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Fewer hops`}),` — the connected-wallet path requires the user to connect the wallet and then sign a transaction, which means switching to the wallet twice. A deep link lets the user confirm and send in the wallet app once.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Pre-filled, correct details`}),` — the deep link can carry the exact deposit address, amount, asset, and chain, so the wallet app can build a dedicated confirmation screen instead of asking the user to copy and paste values.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Less room for error`}),` — with a raw deposit address, the user must send the exact correct amount. Any mismatch typically triggers a refund. A deep link removes most manual entry and reduces that risk.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`One code path for QR and deep links`}),` — the same URL can be rendered as a QR code on desktop, opened as a deep link on mobile web, or invoked directly from a mobile native app.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`when-to-use-a-payment-deep-link`,children:`When to use a payment deep link`}),`\n`,_jsxs(_components.p,{children:[`Use `,_jsx(_components.code,{children:`sourceType: 'deposit_address'`}),` and a custom deep link when:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`You control the wallet app and want to keep the send UX inside it.`}),`\n`,_jsx(_components.li,{children:`The app running the SDK should not connect to the user’s wallet.`}),`\n`,_jsx(_components.li,{children:`You want one implementation that covers desktop QR codes, mobile web deep links, and mobile native deep links.`}),`\n`,_jsx(_components.li,{children:`You want to reduce the chance of the user sending the wrong amount, asset, or address.`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`For the connected-wallet alternative — where the SDK attaches `,_jsx(_components.code,{children:`sourceType: 'wallet'`}),` and signs inside `,_jsx(_components.code,{children:`submitFlowTransaction`}),` through `,_jsx(_components.code,{children:`executeSwapTransaction`}),` — see `,_jsx(_components.a,{href:`/javascript/reference/creating-extensions/wallet-provider/add-swap-capabilities`,children:`Add swap capabilities`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-this-fits-into-flow`,children:`How this fits into Flow`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`attachFlowSource`}),` supports three source types: `,_jsx(_components.code,{children:`wallet`}),`, `,_jsx(_components.code,{children:`exchange`}),`, and `,_jsx(_components.code,{children:`deposit_address`}),`.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`sourceType: 'wallet'`}),` — the SDK connects a wallet and signs. This is the connected-wallet path covered in `,_jsx(_components.a,{href:`/javascript/reference/creating-extensions/wallet-provider/add-swap-capabilities`,children:`Add swap capabilities`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`sourceType: 'deposit_address'`}),` — Flow generates a unique deposit address and amount. Your extension turns that address and amount into a deep link or QR code. The wallet app sends the funds, and Flow detects the deposit and advances `,_jsx(_components.code,{children:`executionState`}),` to `,_jsx(_components.code,{children:`source_confirmed`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The deposit-address path does not require a `,_jsx(_components.code,{children:`WalletProvider`}),` and does not call `,_jsx(_components.code,{children:`submitFlowTransaction`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`connected-wallet-vs-deposit-deep-link`,children:`Connected wallet vs deposit deep link`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsxs(Card,{title:`Connected wallet`,icon:`wallet`,children:[_jsx(_components.p,{children:_jsx(_components.code,{children:`sourceType: 'wallet'`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`SDK role`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Attaches a wallet source.`}),`\n`,_jsxs(_components.li,{children:[`Calls `,_jsx(_components.code,{children:`submitFlowTransaction`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Signs through `,_jsx(_components.code,{children:`executeSwapTransaction`}),`.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Wallet app role`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Provides a `,_jsx(_components.code,{children:`WalletProvider`}),` with signing.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`UX`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Two hops: connect the wallet, then sign the transaction.`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Best for`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Tightly integrated wallets that can expose a `,_jsx(_components.code,{children:`WalletProvider`}),`.`]}),`\n`]})]}),_jsxs(Card,{title:`Deposit deep link`,icon:`qrcode`,children:[_jsx(_components.p,{children:_jsx(_components.code,{children:`sourceType: 'deposit_address'`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`SDK role`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Attaches a deposit source.`}),`\n`,_jsxs(_components.li,{children:[`Calls `,_jsx(_components.code,{children:`getFlowQuote`}),`.`]}),`\n`,_jsx(_components.li,{children:`Builds the deep link or QR code.`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Wallet app role`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Receives the deep link, pre-fills the send screen, and sends the exact amount.`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`UX`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`One confirmation inside the wallet app.`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Best for`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Wallet apps that want to own the send UX or cannot expose a `,_jsx(_components.code,{children:`WalletProvider`}),`.`]}),`\n`]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`build-the-deep-link`,children:`Build the deep link`}),`\n`,_jsxs(_components.p,{children:[`Create a single extension function that takes a `,_jsx(_components.code,{children:`Flow`}),` and builds a custom-app deep link. The example uses `,_jsx(_components.code,{children:`mywallet://deposit`}),`, but replace the scheme with your own wallet’s URL scheme.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`55`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`55`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`getDefaultClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"@dynamic-labs-sdk/client\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`DynamicClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"@dynamic-labs-sdk/client\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`getCore`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"@dynamic-labs-sdk/client/core\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` APP_SCHEME`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"mywallet\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`export`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` createMyWalletDepositUrl`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` returnUrl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` flow`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` returnUrl`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`?:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`})`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` URL`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` =>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` url`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` URL`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`APP_SCHEME`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"://deposit`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`depositAddress`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` throw`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` Error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Flow did not return a deposit address\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`searchParams`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`set`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"flowId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`searchParams`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`set`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"depositAddress\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`depositAddress`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`searchParams`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`set`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"rawAmount\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`quote`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`fromAmount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`fromToken`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`searchParams`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`set`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"fromToken\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`fromToken`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`fromChainId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`searchParams`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`set`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"fromChainId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`fromChainId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`fromChainName`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`searchParams`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`set`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"fromChainName\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`fromChainName`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`memo`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`searchParams`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`set`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"memo\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`JSON`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`stringify`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`memo`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`));`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`returnUrl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`searchParams`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`set`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"returnUrl\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`returnUrl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Add any other fields your wallet app needs (for example, the token contract address).`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`};`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`export`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` openMyWalletDeposit`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`returnUrl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`flow`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`; `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`returnUrl`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`?:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` DynamicClient`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` getDefaultClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Promise`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`void`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`> `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` getCore`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`).`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`openDeeplink`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` createMyWalletDepositUrl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`returnUrl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }).`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`toString`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` );`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Important details:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`flow.depositAddress`}),` is the address the wallet must send funds to.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`flow.quote.fromAmount`}),` is the exact source amount in base units; do not fall back to `,_jsx(_components.code,{children:`flow.amount`}),`, which is the destination amount.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`fromToken`}),`, `,_jsx(_components.code,{children:`fromChainId`}),`, and `,_jsx(_components.code,{children:`fromChainName`}),` describe the asset and chain the user is paying from.`]}),`\n`,_jsx(_components.li,{children:`The query parameter names and the custom scheme are up to you — this is just an example contract.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`use-the-deep-link-in-a-flow`,children:`Use the deep link in a Flow`}),`\n`,_jsx(_components.p,{children:`A consumer app creates a Flow, attaches a deposit-address source, gets a quote, then opens the deep link or shows a QR code:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`30`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`30`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` attachFlowSource`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` getFlowQuote`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`} `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"@dynamic-labs-sdk/client\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`createMyWalletDepositUrl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`openMyWalletDeposit`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"my-wallet-extension\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` flowId`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"flow-abc123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` attachFlowSource`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` flowId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` sourceType:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"deposit_address\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` fromChainId:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` fromChainName:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"EVM\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Optional: where to return funds if the transfer fails.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` refundAddress:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"0x...\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` flow`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` getFlowQuote`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` flowId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` fromTokenAddress:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// On mobile native or mobile web, open the wallet app directly.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` openMyWalletDeposit`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` returnUrl:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"myapp://deposit-complete\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// On desktop, encode the same URL as a QR code.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` qrData`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` createMyWalletDepositUrl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`flow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }).`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`toString`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`qr-codes-vs-deep-links`,children:`QR codes vs deep links`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Desktop`}),`: show a QR code with the deposit deep-link URL. The user scans it with their phone camera or wallet app.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Mobile web`}),`: call `,_jsx(_components.code,{children:`openDeeplink`}),` or render a button that links to the deep-link URL. A phone cannot scan a QR code that it is already displaying, so a QR code is not the primary UX on mobile web.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Mobile native`}),`: call `,_jsx(_components.code,{children:`openDeeplink`}),` directly. If the wallet app is not installed, fall back to the QR code or an app-store prompt.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/javascript/reference/creating-extensions/services/open-deep-links`,children:`Open deep links`}),` for the platform behavior and React Native configuration.`]}),`\n`,_jsx(Heading,{level:`2`,id:`development-cost`,children:`Development cost`}),`\n`,_jsx(_components.p,{children:`Building the deep link is only half of the integration. The wallet app must also:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Register and handle the custom URL scheme (for example, `,_jsx(_components.code,{children:`mywallet://deposit`}),`).`]}),`\n`,_jsx(_components.li,{children:`Parse the query parameters.`}),`\n`,_jsxs(_components.li,{children:[`Pre-fill the send screen with `,_jsx(_components.code,{children:`depositAddress`}),`, `,_jsx(_components.code,{children:`rawAmount`}),`, and the correct asset and chain.`]}),`\n`,_jsx(_components.li,{children:`Validate that the amount, asset, and chain match the flow before signing.`}),`\n`,_jsxs(_components.li,{children:[`Optionally handle `,_jsx(_components.code,{children:`returnUrl`}),` to send the user back to the app that started the flow.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`The Dynamic SDK creates the deep link and opens it; the wallet app must implement everything that happens after the user taps or scans it.`}),`\n`,_jsx(Heading,{level:`2`,id:`after-the-payment`,children:`After the payment`}),`\n`,_jsxs(_components.p,{children:[`The user sends the exact asset and amount to `,_jsx(_components.code,{children:`depositAddress`}),` from the wallet app. Fireblocks Flow monitors the address and advances `,_jsx(_components.code,{children:`executionState`}),` from `,_jsx(_components.code,{children:`quoted`}),` to `,_jsx(_components.code,{children:`source_confirmed`}),`. Poll `,_jsx(_components.code,{children:`getFlow`}),` to track progress; there is no `,_jsx(_components.code,{children:`submitFlowTransaction`}),` call for this path.`]}),`\n`,_jsx(Heading,{level:`2`,id:`related`,children:`Related`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/javascript/reference/creating-extensions/wallet-provider/add-swap-capabilities`,children:`Add swap capabilities`}),` — the connected-wallet signing path`]}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/javascript/reference/creating-extensions/services/open-deep-links`,children:`Open deep links`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/javascript/reference/client/attach-flow-source`,children:`attachFlowSource`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/javascript/reference/client/get-flow-quote`,children:`getFlowQuote`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/javascript/reference/client/get-flow`,children:`getFlow`})}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Build a payment deep link","description":"Build a custom extension that turns a Fireblocks Flow deposit into a deep link or QR code for a mobile wallet app.","docType":"guide","href":"/javascript/reference/creating-extensions/wallet-provider/build-payment-deep-link"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Why build a custom payment deep link","slug":"why-build-a-custom-payment-deep-link","depth":2,"children":[]},{"title":"When to use a payment deep link","slug":"when-to-use-a-payment-deep-link","depth":2,"children":[]},{"title":"How this fits into Flow","slug":"how-this-fits-into-flow","depth":2,"children":[]},{"title":"Connected wallet vs deposit deep link","slug":"connected-wallet-vs-deposit-deep-link","depth":2,"children":[]},{"title":"Build the deep link","slug":"build-the-deep-link","depth":2,"children":[]},{"title":"Use the deep link in a Flow","slug":"use-the-deep-link-in-a-flow","depth":2,"children":[]},{"title":"QR codes vs deep links","slug":"qr-codes-vs-deep-links","depth":2,"children":[]},{"title":"Development cost","slug":"development-cost","depth":2,"children":[]},{"title":"After the payment","slug":"after-the-payment","depth":2,"children":[]},{"title":"Related","slug":"related","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/dynamic-docs-testing/fd6becaed25bf0d8/algolia-docsearch.js","/docs/_mintlify/custom/dynamic-docs-testing/078be96a1e454d1f/generate-llms.js","/docs/_mintlify/custom/dynamic-docs-testing/14f3898c5e985cd5/snippets/gsap-text-plugin.js","/docs/_mintlify/custom/dynamic-docs-testing/c174bfce53a72941/snippets/gsap.js","/docs/_mintlify/custom/dynamic-docs-testing/ea6028ffcc794f21/llm-copy-button.js","/docs/_mintlify/custom/dynamic-docs-testing/c071bd14c4f40dfd/onetrust.js"],"subdomain":"dynamic-docs-testing","siteName":"Dynamic","title":"Build a payment deep link - Dynamic","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-21T11:51:23.731Z","gitLastModified":"2026-09-21T11:50:17.000Z","originalFileLocation":"javascript/reference/creating-extensions/wallet-provider/build-payment-deep-link.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Build a custom extension that turns a Fireblocks Flow deposit into a deep link or QR code for a mobile wallet app.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Dynamic\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Build a payment deep link - Dynamic\">\u003cmeta data-mint-head property=\"og:description\" content=\"Build a custom extension that turns a Fireblocks Flow deposit into a deep link or QR code for a mobile wallet app.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Dynamic\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/wallet-provider/build-payment-deep-link\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://dynamic-docs-testing.mintlify.app/_mintlify/api/og/v2?division=Wallet+Provider\u0026amp;title=Build+a+payment+deep+link\u0026amp;description=Build+a+custom+extension+that+turns+a+Fireblocks+Flow+deposit+into+a+deep+link+or+QR+code+for+a+mobile+wallet+app.\u0026amp;theme=9bec92bca96868fc0aaaeb3b\u0026amp;signature=95f44a22e36217351fc7966c3de0cf649453f064f73572521724d1253fcaac49\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Build a payment deep link - Dynamic\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Build a custom extension that turns a Fireblocks Flow deposit into a deep link or QR code for a mobile wallet app.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://dynamic-docs-testing.mintlify.app/_mintlify/api/og/v2?division=Wallet+Provider\u0026amp;title=Build+a+payment+deep+link\u0026amp;description=Build+a+custom+extension+that+turns+a+Fireblocks+Flow+deposit+into+a+deep+link+or+QR+code+for+a+mobile+wallet+app.\u0026amp;theme=9bec92bca96868fc0aaaeb3b\u0026amp;signature=95f44a22e36217351fc7966c3de0cf649453f064f73572521724d1253fcaac49\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Dynamic\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4779FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/wallet-provider/build-payment-deep-link\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/javascript/reference/creating-extensions/wallet-provider/build-payment-deep-link.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.dynamic.xyz/#organization\",\"name\":\"Dynamic\",\"url\":\"https://www.dynamic.xyz\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/dynamic-docs-testing/CXYm3HK725eun9ev/logo/dynamic-fireblocks-icon-light.svg?fit=max\u0026auto=format\u0026n=CXYm3HK725eun9ev\u0026q=85\u0026s=c050cd8c41715aa71119f91c19221cb3\"}},{\"@type\":\"WebSite\",\"@id\":\"https://www.dynamic.xyz/docs#website\",\"name\":\"Dynamic\",\"url\":\"https://www.dynamic.xyz/docs\",\"publisher\":{\"@id\":\"https://www.dynamic.xyz/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/wallet-provider/build-payment-deep-link#webpage\",\"url\":\"https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/wallet-provider/build-payment-deep-link\",\"name\":\"Build a payment deep link\",\"description\":\"Build a custom extension that turns a Fireblocks Flow deposit into a deep link or QR code for a mobile wallet app.\",\"dateModified\":\"2026-09-21T11:50:17.000Z\",\"isPartOf\":{\"@id\":\"https://www.dynamic.xyz/docs#website\"},\"breadcrumb\":{\"@id\":\"https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/wallet-provider/build-payment-deep-link#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/wallet-provider/build-payment-deep-link#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"JavaScript SDK Reference\",\"item\":\"https://www.dynamic.xyz/docs/javascript/reference/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Extensions\",\"item\":\"https://www.dynamic.xyz/docs/javascript/reference/creating-extensions\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Wallet Provider\",\"item\":\"https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/wallet-provider/overview\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Build a payment deep link\",\"item\":\"https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/wallet-provider/build-payment-deep-link\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/wallet-provider/build-payment-deep-link#article\",\"headline\":\"Build a payment deep link\",\"name\":\"Build a payment deep link\",\"description\":\"Build a custom extension that turns a Fireblocks Flow deposit into a deep link or QR code for a mobile wallet app.\",\"url\":\"https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/wallet-provider/build-payment-deep-link\",\"mainEntityOfPage\":{\"@id\":\"https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/wallet-provider/build-payment-deep-link#webpage\"},\"dateModified\":\"2026-09-21T11:50:17.000Z\",\"publisher\":{\"@id\":\"https://www.dynamic.xyz/#organization\"},\"isPartOf\":{\"@id\":\"https://www.dynamic.xyz/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Dynamic\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Dynamic","nav":{"global":null,"tabs":[{"tab":"Get Started","icon":"rocket","pages":[{"title":"Get Started","href":"/get-started/welcome"}]},{"tab":"Embedded Wallets","icon":"wallet","pages":[{"title":"Embedded Wallets","href":"/embedded-wallets/mpc/overview"}]},{"tab":"Business Accounts","icon":"building","pages":[{"title":"Business Accounts","href":"/business-accounts/accounts"}]},{"tab":"Policies","icon":"shield-check","pages":[{"title":"Policies","href":"/embedded-wallets/mpc/policies/overview"}]},{"tab":"Auth","icon":"door-open","pages":[{"title":"Auth","href":"/auth/overview"}]},{"tab":"Agents","icon":"server","pages":[{"title":"Agents","href":"/agents/overview"}]},{"tab":"Fireblocks Flow","icon":"coins","pages":[{"title":"Fireblocks Flow","href":"/flow/overview"}]},{"tab":"Earn","icon":"chart-line","pages":[{"title":"Earn","href":"/earn/overview"}]},{"tab":"Funding","icon":"money-bill-transfer","pages":[{"title":"Funding","href":"/funding/overview"}]},{"tab":"Reference","icon":"book-open","menu":[{"item":"Javascript, React \u0026 React Native","icon":"js","groups":[{"group":"JavaScript SDK Reference","pages":[{"title":"JavaScript SDK Reference","href":"/javascript/reference/overview"},{"group":"Events","icon":"bell","pages":[{"title":"onEvent","href":"/javascript/reference/client/on-event"},{"title":"offEvent","href":"/javascript/reference/client/off-event"},{"title":"Events Catalog","href":"/javascript/reference/client/events-catalog"}]},{"group":"Wallets (General)","icon":"wallet","pages":[{"title":"Get Wallet Options Catalogue","href":"/javascript/reference/wallets/get-wallet-options-catalogue"},{"title":"Getting Available Wallets to Connect","href":"/javascript/reference/wallets/get-available-wallets-to-connect"},{"title":"Connect a Wallet by Catalogue Key","href":"/javascript/reference/wallets/connect-wallet-option"},{"title":"Getting Connected Addresses","href":"/javascript/reference/wallets/get-connected-addresses"},{"title":"Getting Wallet Accounts","href":"/javascript/reference/wallets/get-wallet-accounts"},{"title":"Getting the Wallet Account Given an Address and Chain","href":"/javascript/reference/wallets/get-wallet-account-from-address"},{"title":"Comparing Two Addresses on a Chain","href":"/javascript/reference/wallets/is-same-address"},{"title":"Getting Wallet Provider Data by Key","href":"/javascript/reference/wallets/get-wallet-provider-data-by-key"},{"title":"Getting a Wallet Account Address by Type","href":"/javascript/reference/wallets/get-wallet-account-address-by-type"},{"title":"Getting Networks Data","href":"/javascript/reference/wallets/get-networks-data"},{"title":"Getting Active Network","href":"/javascript/reference/wallets/get-active-network"},{"title":"Switching Active Network","href":"/javascript/reference/wallets/switch-active-network"},{"title":"Adding a network","href":"/javascript/reference/wallets/add-network"},{"title":"Getting Multichain Token Balances","href":"/javascript/reference/wallets/get-multichain-token-balances"},{"title":"Getting Token Balances","href":"/javascript/reference/wallets/get-token-balances"},{"title":"Getting Native Balance","href":"/javascript/reference/wallets/get-native-balance"},{"title":"Get Balances for All Wallets","href":"/javascript/reference/wallets/get-balance-for-all-wallets"},{"title":"Getting Transaction History","href":"/javascript/reference/wallets/get-transaction-history"},{"title":"Checking Wallet Account Availability","href":"/javascript/reference/wallets/check-wallet-account-availability"},{"title":"Signing a Message","href":"/javascript/reference/wallets/sign-message"},{"title":"transferAmount","href":"/javascript/reference/wallets/transfer-amount"},{"title":"Removing a Wallet Account","href":"/javascript/reference/wallets/remove-wallet-account"},{"title":"Wallet Provider Events","href":"/javascript/reference/wallets/wallet-provider-events"},{"title":"canConnectWithHardwareWallet","href":"/javascript/reference/client/can-connect-with-hardware-wallet"},{"title":"isHardwareWalletAccount","href":"/javascript/reference/client/is-hardware-wallet-account"}]},{"group":"Embedded Wallets (MPC)","icon":"vault","pages":[{"title":"getGoogleDriveBackupReadiness","href":"/javascript/reference/waas/get-google-drive-backup-readiness"},{"title":"Checking if Dynamic WaaS is enabled","href":"/javascript/reference/waas/checking-if-waas-is-enabled"},{"title":"Checking WaaS Wallet Account Type","href":"/javascript/reference/waas/checking-waas-wallet-account-type"},{"title":"Creating WaaS Wallet Accounts","href":"/javascript/reference/waas/creating-waas-wallet-accounts"},{"title":"Exporting WaaS Private Key","href":"/javascript/reference/waas/exporting-waas-private-key"},{"title":"Importing WaaS Private Key","href":"/javascript/reference/waas/importing-waas-private-key"},{"title":"Migrate from Fireblocks","href":"/javascript/reference/waas/migrate-from-fireblocks"},{"title":"Triggering Delegation","href":"/javascript/wallets/embedded-wallets/mpc/delegated-access/triggering-delegation"},{"title":"Revoking Delegation","href":"/javascript/wallets/embedded-wallets/mpc/delegated-access/revoking-delegation"}]},{"group":"Authentication","icon":"door-open","pages":[{"title":"Social Account Linking","href":"/javascript/authentication-methods/social-linking"},{"title":"Authenticate with an external JWT","href":"/javascript/authentication-methods/external-jwt"},{"title":"Refresh Authentication","href":"/javascript/authentication-methods/refresh-auth"},{"title":"Refresh User Data","href":"/javascript/authentication-methods/refresh-user"},{"title":"Check User Scopes","href":"/javascript/authentication-methods/is-user-onboarding-complete"},{"title":"Session-Based MFA","href":"/javascript/authentication-methods/mfa/session-mfa"},{"title":"Check MFA Authentication Status","href":"/javascript/authentication-methods/is-user-missing-mfa-auth"},{"title":"Check Recovery Codes Acknowledgment","href":"/javascript/authentication-methods/is-pending-recovery-codes-acknowledgment"},{"title":"Passkeys","href":"/javascript/authentication-methods/mfa/passkey"},{"title":"Authenticator Apps","href":"/javascript/authentication-methods/mfa/totp"},{"title":"Recovery Codes","href":"/javascript/authentication-methods/mfa/recovery-codes"},{"title":"Delete User Account","href":"/javascript/reference/client/delete-user"}]},{"group":"Chains \u0026 Networks","icon":"link","pages":[{"group":"EVM","icon":"ethereum","pages":[{"title":"simulateEvmTransaction","href":"/javascript/reference/evm/simulate-evm-transaction"},{"title":"calculateEvmTransactionFee","href":"/javascript/reference/evm/calculate-evm-transaction-fee"},{"title":"Checking EVM Wallet Account Type","href":"/javascript/reference/evm/checking-evm-wallet-account-type"},{"title":"Getting a Viem WalletClient","href":"/javascript/reference/evm/getting-viem-wallet-client"},{"title":"Getting a Viem PublicClient","href":"/javascript/reference/evm/getting-viem-public-client"},{"title":"Validate Signatures","href":"/javascript/reference/evm/validate-signatures"},{"title":"EIP-5792 (Batched Calls)","href":"/javascript/reference/evm/eip-5792"},{"title":"Sign a Transaction","href":"/javascript/reference/evm/sign-transaction"},{"title":"Sign Typed Data (EIP-712)","href":"/javascript/reference/evm/sign-typed-data"},{"group":"Native gas sponsorship","pages":[{"title":"EVM Gas Sponsorship","sidebarTitle":"Native EVM gas sponsorship","href":"/javascript/reference/evm/evm-gas-sponsorship"},{"title":"sendSponsoredTransaction","href":"/javascript/reference/evm/send-sponsored-transaction"},{"title":"Splitting sign \u0026 send","sidebarTitle":"Splitting sign \u0026 send","href":"/javascript/reference/evm/splitting-sign-and-send"},{"title":"Managing EIP-7702 delegation","sidebarTitle":"Managing EIP-7702 delegation","href":"/javascript/reference/evm/managing-7702-delegation"}]}]},{"group":"Solana","icon":"bolt","pages":[{"title":"addPhantomRedirectSolanaExtension","href":"/javascript/reference/solana/phantom-redirect-extension"},{"title":"simulateSolanaTransaction","href":"/javascript/reference/solana/simulate-solana-transaction"},{"title":"calculateSolanaTransactionFee","href":"/javascript/reference/solana/calculate-solana-transaction-fee"},{"title":"isSolanaGasSponsorshipEnabled","href":"/javascript/reference/solana/is-solana-gas-sponsorship-enabled"},{"title":"Checking Solana Wallet Account Type","href":"/javascript/reference/solana/checking-solana-wallet-account-type"},{"title":"Signing and Sending Transactions with Solana","href":"/javascript/reference/solana/signing-sending-transactions"},{"title":"Solana Connection","href":"/javascript/reference/solana/getting-solana-connection"},{"title":"SVM Gas Sponsorship","href":"/javascript/reference/solana/svm-gas-sponsorship"}]},{"group":"Bitcoin","icon":"bitcoin","pages":[{"title":"sendBitcoin","href":"/javascript/reference/bitcoin/send-bitcoin"},{"title":"signPsbt","href":"/javascript/reference/bitcoin/sign-psbt"},{"title":"signPsbts","href":"/javascript/reference/bitcoin/sign-psbts"},{"title":"signMessageWithCustomOptions","href":"/javascript/reference/bitcoin/sign-message-with-custom-options"},{"title":"sendRawTransaction","href":"/javascript/reference/bitcoin/send-raw-transaction"},{"title":"Adding Bitcoin Extensions","href":"/javascript/reference/bitcoin/adding-bitcoin-extension"},{"title":"Checking Bitcoin Wallet Account Type","href":"/javascript/reference/bitcoin/checking-bitcoin-wallet-account-type"},{"title":"Embedded Wallet Differences","href":"/javascript/reference/bitcoin/embedded-wallet-differences"}]},{"group":"Aptos","icon":"layer-group","pages":[{"title":"getAptosClient","href":"/javascript/reference/aptos/get-aptos-client"},{"title":"Adding Aptos Extensions","href":"/javascript/reference/aptos/adding-aptos-extension"},{"title":"Checking Aptos Wallet Account Type","href":"/javascript/reference/aptos/checking-aptos-wallet-account-type"},{"title":"signTransaction (Aptos)","href":"/javascript/reference/aptos/sign-transaction"},{"title":"signAndSubmitTransaction (Aptos)","href":"/javascript/reference/aptos/sign-and-submit-transaction"}]},{"group":"Sui","icon":"water","pages":[{"title":"getSuiClient","href":"/javascript/reference/sui/get-sui-client"},{"title":"Adding Sui Extensions","href":"/javascript/reference/sui/adding-sui-extension"},{"title":"Checking Sui Wallet Account Type","href":"/javascript/reference/sui/checking-sui-wallet-account-type"},{"title":"signTransaction (Sui)","href":"/javascript/reference/sui/sign-transaction"},{"title":"signAndExecuteTransaction (Sui)","href":"/javascript/reference/sui/sign-and-execute-transaction"},{"title":"signTransactionBlock (Sui)","href":"/javascript/reference/sui/sign-transaction-block"},{"title":"signAndExecuteTransactionBlock (Sui)","href":"/javascript/reference/sui/sign-and-execute-transaction-block"}]},{"group":"TON","icon":"paper-plane","pages":[{"title":"sendTon","href":"/javascript/reference/ton/send-ton"},{"title":"sendJetton","href":"/javascript/reference/ton/send-jetton"},{"title":"generateTonConnectProof","href":"/javascript/reference/ton/generate-ton-connect-proof"},{"title":"Adding TON Extensions","href":"/javascript/reference/ton/adding-ton-extension"},{"title":"Checking TON Wallet Account Type","href":"/javascript/reference/ton/checking-ton-wallet-account-type"},{"title":"sendTransaction (TON)","href":"/javascript/reference/ton/send-transaction"}]},{"group":"Tron","icon":"circle-nodes","pages":[{"title":"getTronWeb","href":"/javascript/reference/tron/get-tron-web"},{"title":"Adding Tron Extensions","href":"/javascript/reference/tron/adding-tron-extension"},{"title":"Checking Tron Wallet Account Type","href":"/javascript/reference/tron/checking-tron-wallet-account-type"},{"title":"sendTransaction (Tron)","href":"/javascript/reference/tron/send-transaction"}]},{"group":"Starknet","icon":"star","pages":[{"title":"getStarknetAccount","href":"/javascript/reference/starknet/get-starknet-account"},{"title":"Adding Starknet Extension","href":"/javascript/reference/starknet/adding-starknet-extension"},{"title":"Checking Starknet Wallet Account Type","href":"/javascript/reference/starknet/checking-starknet-wallet-account-type"}]},{"group":"Stellar","icon":"meteor","pages":[{"title":"Adding Stellar Extension","href":"/javascript/reference/stellar/adding-stellar-extension"},{"title":"Checking Stellar Wallet Account Type","href":"/javascript/reference/stellar/checking-stellar-wallet-account-type"},{"title":"signTransaction (Stellar)","href":"/javascript/reference/stellar/sign-transaction"}]},{"group":"Tempo","icon":"dollar-sign","pages":[{"title":"Tempo","href":"/javascript/reference/tempo/overview"},{"title":"Send batched calls","href":"/javascript/reference/tempo/send-batched-calls"},{"title":"Pay fees with a TIP-20 token","href":"/javascript/reference/tempo/pay-fees-with-a-token"},{"title":"Use parallel nonce lanes","href":"/javascript/reference/tempo/use-parallel-nonce-lanes"},{"title":"Set a validity window","href":"/javascript/reference/tempo/set-a-validity-window"},{"title":"Sign for a fee sponsor","href":"/javascript/reference/tempo/sign-for-a-fee-sponsor"}]},{"group":"Networks","icon":"network-wired","pages":[{"title":"Network Transformers","href":"/javascript/reference/networks/network-transformers"}]}]},{"group":"ZeroDev","icon":"gas-pump","pages":[{"title":"createKernelClientForWalletAccount","href":"/javascript/reference/zerodev/create-kernel-client-for-wallet-account"},{"title":"signEip7702Authorization","href":"/javascript/reference/zerodev/sign-eip-7702-authorization"},{"title":"sendUserOperation","href":"/javascript/reference/zerodev/send-user-operation"},{"title":"canSponsorUserOperation","href":"/javascript/reference/zerodev/can-sponsor-user-operation"},{"title":"estimateUserOperationGas","href":"/javascript/reference/zerodev/estimate-user-operation-gas"},{"title":"simulateZerodevUserOperation","href":"/javascript/reference/zerodev/simulate-zerodev-user-operation"},{"title":"calculateFeeForUserOperation","href":"/javascript/reference/zerodev/calculate-fee-for-user-operation"},{"title":"getSignerForSmartWalletAccount","href":"/javascript/reference/zerodev/get-signer-for-smart-wallet-account"},{"title":"isGasSponsorshipError","href":"/javascript/reference/zerodev/is-gas-sponsorship-error"},{"title":"Adding ZeroDev Extension","href":"/javascript/reference/zerodev/adding-zerodev-extension"}]},{"group":"Swaps","icon":"arrows-rotate","pages":[{"title":"getSwapQuote","href":"/javascript/reference/client/get-swap-quote"},{"title":"getSwapStatus","href":"/javascript/reference/client/get-swap-status"},{"title":"executeSwapTransaction","href":"/javascript/reference/client/execute-swap-transaction"}]},{"group":"Earn","icon":"chart-line","pages":[{"title":"listYieldVaults","href":"/javascript/reference/client/list-yield-vaults"},{"title":"getYieldDetails","href":"/javascript/reference/client/get-yield-details"},{"title":"getYieldPosition","href":"/javascript/reference/client/get-yield-position"},{"title":"getYieldPerformance","href":"/javascript/reference/client/get-yield-performance"},{"title":"getYieldEarnings","href":"/javascript/reference/client/get-yield-earnings"},{"title":"getYieldRewards","href":"/javascript/reference/client/get-yield-rewards"},{"title":"withdrawFromYieldVault","href":"/javascript/reference/client/withdraw-from-yield-vault"},{"title":"claimYieldRewards","href":"/javascript/reference/client/claim-yield-rewards"},{"title":"depositToYieldVault","href":"/javascript/reference/client/deposit-to-yield-vault"}]},{"group":"Flow","icon":"coins","pages":[{"title":"getFlow","href":"/javascript/reference/client/get-flow"},{"title":"getFlowSupportedExchanges","href":"/javascript/reference/client/get-flow-supported-exchanges"},{"title":"attachFlowSource","href":"/javascript/reference/client/attach-flow-source"},{"title":"getFlowQuote","href":"/javascript/reference/client/get-flow-quote"},{"title":"submitFlowTransaction","href":"/javascript/reference/client/submit-flow-transaction"},{"title":"cancelFlow","href":"/javascript/reference/client/cancel-flow"},{"title":"shouldPollFlow","href":"/javascript/reference/client/should-poll-flow"},{"title":"getFlowDeliveredAmount","href":"/javascript/reference/client/get-flow-delivered-amount"},{"title":"prepareFlowSigning","href":"/javascript/reference/client/prepare-flow-signing"},{"title":"broadcastFlow","href":"/javascript/reference/client/broadcast-flow"}]},{"group":"Funding","icon":"money-bill-transfer","pages":[{"group":"Kraken","pages":[{"title":"Kraken Integration","href":"/javascript/funding/kraken-integration"},{"title":"getKrakenAccounts","href":"/javascript/funding/get-kraken-accounts"},{"title":"getKrakenWhitelistedAddresses","href":"/javascript/funding/get-kraken-whitelisted-addresses"},{"title":"createKrakenExchangeTransfer","href":"/javascript/funding/create-kraken-exchange-transfer"}]},{"group":"Coinbase","pages":[{"title":"getCoinbaseBuyUrl","href":"/javascript/funding/get-coinbase-buy-url"},{"title":"createCoinbaseOnrampOrder","href":"/javascript/funding/create-coinbase-onramp-order"},{"title":"getMissingVerificationForCoinbaseOnrampOrder","href":"/javascript/funding/get-missing-verification-for-coinbase-onramp-order"},{"title":"addCoinbaseOnrampOrderEventListener","href":"/javascript/funding/add-coinbase-onramp-order-event-listener"},{"title":"getCoinbaseAccounts","href":"/javascript/funding/get-coinbase-accounts"},{"title":"createCoinbaseExchangeTransfer","href":"/javascript/funding/create-coinbase-exchange-transfer"}]},{"group":"MoonPay","pages":[{"title":"getMoonPayUrl","href":"/javascript/funding/get-moonpay-url"},{"title":"getMoonPayCurrencies","href":"/javascript/funding/get-moonpay-currencies"}]},{"title":"createCryptoDotComPayment","href":"/javascript/funding/create-crypto-dot-com-payment"}]},{"group":"Building UI","icon":"palette","pages":[{"title":"Building UI Overview","sidebarTitle":"Overview","href":"/javascript/building-ui/overview"},{"group":"Authentication","pages":[{"title":"Email \u0026 SMS OTP sign-in","href":"/javascript/building-ui/email-sms-otp-sign-in"},{"title":"Social sign-in \u0026 OAuth redirect handling","href":"/javascript/building-ui/social-oauth-redirect-handling"},{"title":"Passkey sign-in \u0026 registration","href":"/javascript/building-ui/passkey-sign-in-registration"}]},{"group":"Right after login","pages":[{"title":"Post-login user setup","href":"/javascript/building-ui/post-auth-user-setup"},{"title":"Account conflict resolution","href":"/javascript/building-ui/account-conflict-resolution"},{"title":"Account merging","href":"/javascript/building-ui/account-merging"}]},{"group":"Wallets","pages":[{"title":"Connecting external wallets","href":"/javascript/building-ui/connecting-external-wallets"},{"title":"Connected wallets management","href":"/javascript/building-ui/connected-wallets-management"},{"title":"Token balances \u0026 display","href":"/javascript/building-ui/token-balances-display"},{"title":"Transaction confirmation \u0026 simulation","href":"/javascript/building-ui/transaction-confirmation"},{"title":"Network switching \u0026 validation","href":"/javascript/building-ui/network-switching"}]},{"group":"Embedded wallet lifecycle","pages":[{"title":"Embedded wallet password \u0026 security","href":"/javascript/building-ui/embedded-wallet-security"},{"title":"Wallet backup \u0026 recovery","href":"/javascript/building-ui/wallet-backup-recovery"},{"title":"Embedded wallet delegated access","href":"/javascript/building-ui/embedded-wallet-delegated-access"},{"group":"Upgrading legacy embedded wallets","pages":[{"title":"Upgrading legacy embedded wallets to Dynamic WaaS","href":"/javascript/building-ui/legacy-wallet-upgrade"},{"title":"Upgrade by redirect","href":"/javascript/building-ui/legacy-wallet-upgrade/redirect"},{"title":"Embed the upgrade app (iframe)","href":"/javascript/building-ui/legacy-wallet-upgrade/embed"},{"title":"Upgrade by popup","href":"/javascript/building-ui/legacy-wallet-upgrade/popup"},{"title":"Going lower-level (build the URL yourself)","href":"/javascript/building-ui/legacy-wallet-upgrade/lower-level"}]}]},{"group":"Advanced auth \u0026 identity","pages":[{"title":"MFA enrollment \u0026 management","href":"/javascript/building-ui/mfa-enrollment-management"},{"title":"Step-up authentication","href":"/javascript/building-ui/step-up-authentication"},{"title":"Device registration","href":"/javascript/building-ui/device-registration"},{"title":"User profile \u0026 settings","href":"/javascript/building-ui/user-profile-settings"},{"title":"Handling blocked wallets","href":"/javascript/building-ui/blocked-wallet-screening"}]},{"group":"Money movement","pages":[{"title":"Funding flows","href":"/javascript/building-ui/funding-flows"},{"title":"Building an exchange transfer UI","href":"/javascript/building-ui/exchange-transfers"},{"title":"Building a swap UI","href":"/javascript/building-ui/swap-ui"},{"title":"Building an Earn UI","href":"/javascript/building-ui/earn-ui"}]}]},{"group":"Migrating from React","icon":"arrow-right-arrow-left","pages":[{"title":"Migrating from React to the JavaScript SDK","href":"/javascript/migrating-from-react/overview"},{"title":"Basic setup","href":"/javascript/migrating-from-react/basic-setup"},{"group":"Authentication","pages":[{"title":"Non-wallet authentication","href":"/javascript/migrating-from-react/non-wallet-authentication"},{"title":"Wallet authentication","href":"/javascript/migrating-from-react/wallet-authentication"}]},{"group":"Right after login","pages":[{"title":"Post-login user setup","href":"/javascript/migrating-from-react/post-login-user-setup"},{"title":"Account conflict resolution","href":"/javascript/migrating-from-react/account-conflict-resolution"}]},{"group":"Wallets","pages":[{"title":"Using connected wallets","href":"/javascript/migrating-from-react/using-connected-wallets"},{"title":"Network management","href":"/javascript/migrating-from-react/network-management"},{"title":"Transactions \u0026 balance","href":"/javascript/migrating-from-react/transactions-and-balance"}]},{"group":"Embedded wallets","pages":[{"title":"Embedded wallets: setup \u0026 creation","href":"/javascript/migrating-from-react/embedded-wallets-setup"},{"title":"Embedded wallets: password \u0026 security","href":"/javascript/migrating-from-react/embedded-wallets-password-security"},{"title":"Embedded wallets: backup \u0026 recovery","href":"/javascript/migrating-from-react/embedded-wallets-backup-recovery"},{"title":"Embedded wallets: delegated access","href":"/javascript/migrating-from-react/embedded-wallets-delegated-access"},{"title":"Embedded wallets: transactions \u0026 session keys","href":"/javascript/migrating-from-react/embedded-wallets-transactions"},{"title":"Upgrading embedded wallets","href":"/javascript/migrating-from-react/upgrading-embedded-wallets"}]},{"group":"Advanced auth \u0026 identity","pages":[{"title":"Multi-factor authentication","href":"/javascript/migrating-from-react/mfa"},{"title":"Step-up authentication","href":"/javascript/migrating-from-react/step-up-auth"},{"title":"Users","href":"/javascript/migrating-from-react/users"}]},{"group":"Money movement","pages":[{"title":"Funding","href":"/javascript/migrating-from-react/funding"},{"title":"Gas sponsorship \u0026 smart wallets","href":"/javascript/migrating-from-react/gas-sponsorship-smart-wallets"}]},{"group":"Chains \u0026 configuration","pages":[{"title":"Global wallets","href":"/javascript/migrating-from-react/global-wallets"},{"title":"Integrating chains","href":"/javascript/migrating-from-react/integrating-chains"},{"title":"Cookies","href":"/javascript/migrating-from-react/cookies"},{"title":"Wagmi integration","href":"/javascript/migrating-from-react/wagmi"}]},{"title":"Migration Guide: v0.9.0","href":"/javascript/reference/zerodev/migration-v0.9"}]},{"group":"Migrating from React Native","icon":"arrow-right-arrow-left","pages":[{"title":"Migrating from React Native to the JavaScript SDK","href":"/javascript/migrating-from-react-native/overview"}]},{"group":"Extensions","icon":"puzzle-piece","pages":[{"title":"Creating Extensions","href":"/javascript/reference/creating-extensions"},{"title":"Publish an Extension","href":"/javascript/reference/creating-extensions/publish"},{"title":"Custom Functions","href":"/javascript/reference/creating-extensions/custom-functions"},{"group":"Wallet Provider","icon":"wallet","pages":[{"title":"Wallet Provider","href":"/javascript/reference/creating-extensions/wallet-provider/overview"},{"title":"Supported wallet standards","href":"/javascript/reference/creating-extensions/wallet-provider/supported-standards"},{"title":"Build a WalletProvider","href":"/javascript/reference/creating-extensions/wallet-provider/build-wallet-provider"},{"title":"Add swap capabilities","href":"/javascript/reference/creating-extensions/wallet-provider/add-swap-capabilities"},{"title":"Add Earn capabilities","description":"Implement executeYieldTransaction on a custom WalletProvider to enable Earn deposits, withdrawals, and reward claims.","href":"/javascript/reference/creating-extensions/wallet-provider/add-earn-capabilities"},{"title":"Build a payment deep link","href":"/javascript/reference/creating-extensions/wallet-provider/build-payment-deep-link"}]},{"group":"Services","icon":"gears","pages":[{"title":"Storage","description":"Use regular and secure Storage from DynamicCore in your JavaScript SDK extension.","href":"/javascript/reference/creating-extensions/services/storage"},{"title":"Open deep links","href":"/javascript/reference/creating-extensions/services/open-deep-links"},{"title":"Wallet provider priority","href":"/javascript/reference/creating-extensions/services/wallet-provider-priority"}]}]}]}]},{"item":"Swift","icon":"swift","pages":[{"title":"Swift","href":"/swift/sdk-reference/overview"}]},{"item":"Kotlin","icon":"android","pages":[{"title":"Kotlin","href":"/kotlin/sdk-reference/overview"}]},{"item":"Flutter","icon":"flutter","pages":[{"title":"Flutter","href":"/flutter/sdk-reference/overview"}]},{"item":"Unity","icon":"unity","pages":[{"title":"Unity","href":"/unity/sdk-reference/overview"}]},{"item":"Node","icon":"node","pages":[{"title":"Node","href":"/node/reference/auth/authenticate-jwt"}]},{"item":"REST API","icon":"code","pages":[{"title":"REST API","href":"/api-reference/overview"}]},{"item":"Legacy React","icon":"react","pages":[{"title":"Legacy React","href":"/react/reference/quickstart"}]},{"item":"Legacy React Native","icon":"mobile-screen","pages":[{"title":"Legacy React Native","href":"/react-native/reference/introduction"}]}]},{"tab":"Recipes","icon":"book-open","pages":[{"title":"Recipes","href":"/recipes/recipes"}]}]},"basePath":"","title":"Build a payment deep link - Dynamic","buildId":"dpl_GWQzn6k13MqphA3qck3hQKoQXDzM","deploymentId":"dpl_GWQzn6k13MqphA3qck3hQKoQXDzM","dynamics":[],"chunks":[]}