Skip to main content
By the end of this guide, you’ll know how to surface Mesh’s onramp integrations in your “Buy” lineup — including fetching live quotes and launching users directly into a specific provider’s flow.
Before you start
  • Your core Mesh integration is working end-to-end (see Prepare for go-live)
  • You have a “Buy” or onramp flow in your app that you want to extend with Mesh integrations

Overview

Mesh supports multiple onramp products. If you have a “lineup” of onramps in your app, these Mesh integrations can be added directly to your UX alongside other onramps in your “Buy” flow.

Add exchanges to the “lineup” in your “Buy” tab

Why?: If a user has an exchange account, there’s less friction for them to buy through that account (they’re already KYC’d and have added payment methods). That’s in contrast to a separate provider where they have to create an account, KYC, and add payment methods. You can simply add the Mesh integration (eg. Binance) into your UX the same way you have other providers. Pro tip: You can also pull the exchange’s icon or logo from Mesh’s Integrations endpoint (/api/v1/integrations) if you’d like to add that next to the exchange name in your UX.

Use Mesh’s quote API to show “You receive” quotes

Endpoint: /api/v1/transfers/managed/quote Why?: This is optional and likely not necessary (if a user has an account with a certain exchange, they’ll probably choose that option anyway). But if you’d like to show a “You receive” estimate for each option, you can fetch quotes using this endpoint.
X-Client-Id required
Your Mesh Client ID.
X-Client-Secret required
Your Mesh API Key.
amountInFiat required
The base amount of the specified fiatCurrency to be transferred.
fiatCurrency required
The 3 character currency code. Only USD supported for now.
symbol required
Symbol of the asset being purchased.
networkId required

Mesh’s unique identifier for the network to be used for this toAddress.

Use the Get networks endpoint (/api/v1/transfers/managed/networks) to pull a list of all supported networks and the corresponding Mesh networkId. These values won’t change, so you do not have to hit this endpoint before each Link Token request.

toAddress required
The destination to which the specified symbol can be sent on the specified networkId.
brokerType required
The integration that you will wish to receive a quote from. Eg. binanceInternationalDirect or coinbase.
curl --request POST \
  --url https://integration-api.meshconnect.com/api/v1/transfers/managed/quote \
  --header 'Content-Type: application/json' \
  --header 'X-Client-Id: YOUR_CLIENT_ID' \ // Replace
  --header 'X-Client-Secret: YOUR_API_KEY' \ // Replace
  --data '
{
  "amountInFiat": 99.99, // Replace
  "fiatCurrency": "USD", // Replace (only USD supported for now)
  "symbol": "ETH", // Replace
  "toAddress": "abc123", // Replace
  "networkId": "e3c7fdd8-b1fc-4e51-85ae-bb276e075611", // Ethereum, replace
  "brokerType": "binanceInternationalDirect" // Replace
}
'
Important notes:
  • There are two quotes returned in the response: minAmountFiat & maxAmountFiat. Display minAmountFiat as the more conservative estimate — it assumes the user doesn’t already hold that token and will need to fund the purchase from scratch.
  • Be sure to pay attention to the isEligible field in the response to know if you can show a quote (the minEligibleAmount & minEligibleAmountInFiat indicate the exchange’s minimum withdrawal for that token on that network).
Why?: If the user has already selected the integration in your UX, there’s no need to see the Mesh catalog. You can launch them directly into their chosen provider’s flow.

What’s next

Explore the other Extend guides:
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 — Add Mesh onramp integrations to your “Buy” lineupIntegrate exchange-based onramps into your Buy flow: surface exchanges in your lineup, optionally fetch quotes, and deep-link users directly into a chosen provider’s flow.Quote endpoint (optional): POST /api/v1/transfers/managed/quote Params: amountInFiat | fiatCurrency (USD only) | symbol | networkId | toAddress | brokerType Response: minAmountFiat (show this — conservative estimate) | maxAmountFiat | isEligible | minEligibleAmount | minEligibleAmountInFiatGet networkIds: Use GET /api/v1/transfers/managed/networks to fetch the full list of supported networks and their networkId values. These values don’t change — safe to cache permanently, no need to call this endpoint before every Link Token request.Deep-link to provider: Pass integrationId in Link Token request. Get IDs from GET /api/v1/transfers/managed/integrations (stable, safe to cache).Link Token params for onramp: transferType: "onramp" | isInclusiveFeeEnabled: true (user receives amount minus fees) | amountInFiat (if user selected amount in your UX) | integrationId (if user selected provider in your UX)Exchange icons: Pull logoUrl from GET /api/v1/integrations response for display in your lineup.Note: Quote API is optional — users with exchange accounts tend to self-select their preferred provider anyway.Quote API — request body:
curl --request POST \
  --url https://integration-api.meshconnect.com/api/v1/transfers/managed/quote \
  --header 'Content-Type: application/json' \
  --header 'X-Client-Id: YOUR_CLIENT_ID' \ // Replace
  --header 'X-Client-Secret: YOUR_API_KEY' \ // Replace
  --data '
{
  "amountInFiat": 99.99, // Replace
  "fiatCurrency": "USD", // Replace (only USD supported for now)
  "symbol": "ETH", // Replace
  "toAddress": "abc123", // Replace
  "networkId": "e3c7fdd8-b1fc-4e51-85ae-bb276e075611", // Ethereum, replace
  "brokerType": "binanceInternationalDirect" // Replace
}
'
Onramp Link Token — with provider pre-selected:
curl --request POST \
  --url https://sandbox-integration-api.meshconnect.com/api/v1/linktoken \ // This is pointing to sandbox
  --header 'Content-Type: application/json' \
  --header 'X-Client-Id: YOUR_CLIENT_ID' \ // Replace
  --header 'X-Client-Secret: YOUR_API_KEY' \ // Replace
  --data '
{
  "userId": "UNIQUE_USER_ID", // Replace
  "restrictMultipleAccounts": true,
  "integrationId": "5620bf49-3240-4f85-8b4f-9dd6261597e2", // Binance Connect (Replace)
  "transferOptions": {
    "transactionId": "UNIQUE_TRANSACTION_ID", // Replace
    "transferType": "onramp",
    "amountInFiat": 100.00, // Replace
    "isInclusiveFeeEnabled": true,
    "generatePayLink": false,
    "toAddresses": [ // Replace (this could be a full array, or only one destination if the user selects a token/network in your UX before launching Mesh)
      {
        "networkId": "0291810a-5947-424d-9a59-e88bb33e999d", // Solana
        "symbol": "USDC", // Replace
        "address": "xxx" // Replace
      }
    ]
  }
}
'