White Label Widget Experience
Example
You can see Meld's white label widget experience being used here by Metamask. Metamask asks the user what they would like to buy and how they would like to pay, then hits Meld's quote API for a list of quotes, then displays the quotes to the user, then once the user selects a quote Metamask calls Meld's API to launch that onramp's widget for the user to complete the purchase. Finally, Metamask hits Meld's API to get back transaction details.
Launching a Crypto Ramp Widget
You can request a widget session, which launches the selected service provider for your customer to interact with. To do so, see the create crypto widget endpoint. We return a fully formatted URL for you to route your customer to.
Before you launch a crypto widget, make sure you have whitelisted Meld's urls and IP addresses.
Setup
Buying Crypto
Pictured below is a sample widget flow for purchasing crypto:

Sample Onramp Widget
The typical purchase widget flow contains a quote screen, which allows the user to see and edit their quote, followed by a screen where the user can enter their payment information or verify their wallet address, followed by a payment submission screen, as shown above. After payment is complete, the cryptocurrency will be sent by the service provider to the user, and this completes the flow.
Selling Crypto
Pictured below is a sample widget flow for selling crypto:

Sample Offramp Widget
The typical sell flow contains a quote screen, which allows the user to see and edit their quote, followed by a screen to connect their bank account or enter their card information, followed by a screen showing where to send the cryptocurrency to, as shown above. After the service provider receives the cryptocurrency, they inform the user that the bank transfer has been initiated, and this completes the flow.
If you subscribe to webhooks you will get alerts whenever any transaction status changes for all service providers. You may also poll our transaction status endpoint.
Information on how to test the crypto wizard can be found in the crypto testing guide.
Locking fields
Some service providers support locking the cryptocurrency and wallet address fields within their widgets. To do this, simply pass in the lockFields param to the widget endpoint with the values of destinationCurrencyCode/sourceCurrencyCode (depending on buy vs sell flow), walletAddress, or both. Here are the service providers that support locking those fields in their widgets:
Locking cryptocurrency | Locking wallet address | |
|---|---|---|
| Banxa | Not supported | Not supported |
| BTC Direct | Supported | Supported |
| Onramp Money | Not supported | Always locked when passed in |
| Ramp.Network | Supported | Not supported |
| Simplex | Supported | Supported |
| Transak | Supported | Supported |
| Sardine | Always locked | Always locked |
| TransFi | Always locked when passed in | Always locked when passed in |
| Unlimit | Supported | Supported |
| Paybis | Not supported | Not supported |
| Fonbnk | Not supported | Supported |
| Koywe | Always locked when passed in | Always locked when passed in |
| Robinhood | Always locked when passed in | Always locked when passed in |
| Coinbase | Not supported | Not supported |
| Blockchain | Always locked when passed in | Always locked when passed in |
| Topper | Supported | Supported |
| Guardarian | Not supported | Supported |
| Alchemypay | Always locked when passed in | Always locked when passed in |
| Yellowcard | Always locked when passed in | Always locked when passed in |
| Meso | Not supported | Not supported |
| Mesh | Not supported | Not supported |
| Bilira | Not supported | Not supported |
| SkrillCrypto | Not supported | Not supported |
| Robinhood | Always locked when passed in | Not supported |
| Coinbase | Not supported | Not supported |
| Binance | Not supported | Not supported |
Here's a sample buy request with both the cryptoCurrency and walletAddress fields locked:
{
"sessionData": {
"walletAddress": "2N3oefVeg6stiTb5Kh3ozCSkaqmx91FDbsm",
"countryCode": "US",
"sourceCurrencyCode": "USD",
"sourceAmount": "70",
"destinationCurrencyCode": "BTC",
"serviceProvider": "TRANSAK",
"lockFields": ["destinationCurrencyCode","walletAddress"]
},
"externalCustomerId": "test1",
"externalSessionId": "test1"
}Embedding the Widget
Meld supports embedding the crypto widget within an iframe. For information on the recommended iframe size, see Embedding the Wizard.
Updated 2 months ago