Skip to main content
By the end of this guide, you’ll understand how Mesh’s manual deposit flow works — when it’s used, how attribution is applied, and when it may not be appropriate for your use case.

Overview

Mesh’s flagship product is the Direct Connection experience. That flow allows users to securely connect their exchange accounts or wallets to your app, enabling seamless, programmatic transfers. When Mesh is connected with the source of funds:
  • Mesh can read account details (balances, addresses, transaction history)
  • Transfers are initiated programmatically
  • Mesh can help prevent user misconfiguration
  • Connected accounts can be remembered for a return-user experience
However, direct connection doesn’t always fit with or work for every user. So to ensure broader coverage and higher conversion, Mesh also supports Manual Deposits through a traditional address copy/paste and QR code scan experience that supports advanced functionality like SmartFunding, and still enables you to receive webhook status updates.

What are manual deposits?

Manual Deposits support the traditional crypto transfer flow:
  1. The user is shown a QR code and destination address.
  2. The token and network are clearly specified.
  3. Any required instructions (e.g., memo/tag, minimum deposit amount) are displayed.
  4. The user initiates the transfer directly from their wallet or exchange.
  5. Mesh monitors the blockchain for the transfer.
  6. Once detected, Mesh sends a webhook event confirming the deposit.
Just like deposits via Direct Connections, the only possible destinations are those provided by you at the start of the user session via the linkToken request. When Mesh detects a valid onchain transfer matching the provided address, token, and network, we send a webhook with status: succeeded, indicating a successful deposit. Manual deposits will not emit a status: pending webhook event first. Manual deposits also support SmartFunding capabilities like bridging.

When is manual used?

Manual Deposits appear in two ways:

1. A primary alternative to Connected Accounts

Mesh supports a landing page experience where users can choose their preferred deposit method:
  • Connect account (Direct)
  • Deposit manually (QR code)
This gives users flexibility and can improve overall conversion by meeting different comfort levels.

2. A fallback flow (enabled by default)

If a user cannot complete a Connected Account deposit, Mesh automatically presents the Manual Deposit option. For example:
  • Their exchange or wallet is not supported
  • They cannot find their integration in the catalog
  • They choose to exit the direct flow
  • They run into terminal errors during direct flow
  • They get their password or 2FA wrong multiple times in the direct flow
This backup flow is enabled by default for all deposit sessions.

How attribution works

For Connected Account deposits, attribution is straightforward: Mesh receives confirmation from the connected account when the transfer is initiated. But manual deposits require a different approach. When a user views a Mesh-generated QR code, we monitor for onchain activity and apply the following attribution logic: A transfer is attributed when:
  • The correct token and network are sent to the exact destination address (including tag/memo, if applicable)
  • The transfer occurs within 15 minutes of the user viewing the Mesh QR code
  • There is no existing successful or pending connected account deposit for that session
If these conditions are met, Mesh attributes the transfer as a successful Mesh QR code deposit and sends the corresponding webhook event. This attribution window ensures reliable detection while maintaining a clear and consistent standard across clients.

When Manual Deposits May Not Be Appropriate

Manual Deposits are not recommended in the following scenarios:

1. Non-Unique Deposit Addresses

If you are not providing Mesh with unique wallet addresses per user session, Manual Deposits may not be suitable. An exception would be networks like XLM or XRP that use memo/tag identifiers (which Mesh supports and displays to users).

2. Source-of-Funds Verification Requirements

If your compliance framework requires verification of the source of funds, Manual Deposits may not meet those requirements, as funds are sent externally without account-level connectivity.

3. Exact Payment Amount Requirements

If your use case requires receiving a precise amount (e.g., invoice or payment flows), Manual Deposits may introduce variability that needs additional handling.

4. Preference Not to Support Manual Transfers

Manual Deposits are currently enabled by default. If your business model requires restricting transfers to direct-only flows, reach out to your Mesh representative.

What’s next

For a deeper understanding of how Mesh filters which integrations your users can see, see Intelligent catalog filtering.
AI coding reference — a compact summary of this page’s APIs, parameters, and patterns for use by AI coding assistants (following the llms.txt standard). Human readers can safely ignore this.llms.txt — Manual depositsMesh’s QR code / copy-paste fallback deposit flow. Enabled by default. Supports SmartFunding and bridging.How it works: User shown QR code + destination address + token/network + memo/tag if applicable. User initiates transfer from their own wallet. Mesh monitors blockchain. On detection → status: succeeded webhook.Manual deposits emit: Only status: succeeded webhook (no pending event first).Attribution logic: Transfer attributed when correct token + network + address received within 15 minutes of user viewing the QR code, and no concurrent connected-account deposit for that session.Appears in two scenarios:
  1. Primary option on a landing page alongside “Connect account” (configurable)
  2. Automatic fallback when direct connection fails or is unavailable
Not appropriate for:
  • Non-unique deposit addresses (unless using memo/tag for XRP, XLM, etc.)
  • Source-of-funds compliance requirements
  • Exact payment amount requirements
  • Clients that must restrict to direct-only flows (contact Mesh to disable)