Links

Options

Customize your on / off ramp experience
The following parameters allow you to customize how the on / off ramp interface is displayed by default on your website or mobile app:
All parameters must be URL encoded.
Examples:
  • #FFFFFF -> %23FFFFFF
  • /37KcpG6mEp+1oAan8/HLEvcfZFXUi6kTOxTHNjD3ZloxS8DL70v7lCmXiEyDOATm4hvewMzBO2d1n25QdJ8WBw= -> %2F37KcpG6mEp%2B1oAan8%2FHLEvcfZFXUi6kTOxTHNjD3ZloxS8DL70v7lCmXiEyDOATm4hvewMzBO2d1n25QdJ8WBw%3D
Parameter
Value
Description
lang
en fr de it es pt
Default display language
tab
buy sell
Default display tab
tabs
buy sell
Allows to only display the "Buy" or the "Sell" tab.
bsc
AUD
CAD CHF
DKK EUR GBP
HKD
JPY
NOK
NZD
SEK SGD USD ZAR
Default buy tab source currency
bdc
agEUR
AVAX BNB BTC
BTCB BUSD DAI ETH
EURL
EUROC
EURS
EURT
FRAX FTM
jCAD jCHF jEUR
jGBP
jSGD
LUSD
MAI MATIC
RBTC
RDOC
RIF
sat
USDC USDT WBTC WETH
XCHF XDAI XTZ
Default buy tab destination currency
ssc
agEUR
AVAX BNB BTC
BTCB BUSD DAI ETH
EURL
EUROC
EURS
EURT
FRAX FTM
jAUD jCAD jCHF jEUR jGBP
jJPY
jSEK jSGD
jZAR
LUSD
MAI MATIC
RBTC
RDOC
RIF
sat
USDC USDT WBTC WETH
XCHF XDAI XTZ
Default sell tab source currency
sdc
AUD CAD CHF DKK EUR GBP HKD JPY NOK NZD SEK SGD USD ZAR
Default sell tab destination currency
curs
AUD
CAD CHF
DKK EUR GBP
HKD
JPY
NOK
NZD
SEK SGD USD ZAR
List of authorized fiat currencies (leave empty for all)
crys
agEUR
AVAX BNB BTC
BTCB BUSD DAI ETH
EURL
EUROC
EURS
EURT
FRAX FTM
jAUD jCAD jCHF jEUR jGBP
jJPY
jSEK jSGD
jZAR
LUSD
MAI MATIC
RBTC
RDOC
RIF
sat
USDC USDT WBTC WETH
XCHF XDAI XTZ
List of authorized cryptocurrencies (leave empty for all)
net
arbitrum_mainnet avalanche_mainnet bitcoin_mainnet bsc_mainnet fantom_mainnet
lightning_mainnet mainnet matic_mainnet optimism_mainnet
rsk_mainnet
tezos_mainnet xdai_mainnet
Default network
nets
arbitrum_mainnet avalanche_mainnet bitcoin_mainnet bsc_mainnet fantom_mainnet
lightning_mainnet mainnet matic_mainnet optimism_mainnet
rsk_mainnet
tezos_mainnet xdai_mainnet
List of authorized networks (leave empty for all)
type
web popup webview
Integration type
primary
XXXXXX
Primary color, where XXXXXX is the color's hexadecimal code
success
XXXXXX
CTA color, where XXXXXX is the color's hexadecimal code
addr
public address
Allows you to automatically provide the user's receiving or sending public address (the address has to be unique for each user, common addresses are not permitted and will be rejected)
code
4-digits code
Random 4 digits code between 1000 and 9999 that you need to generate for each address supplied with the addr parameter (don't use the same code for all addresses or the validation will be rejected)
hash
#
base64 encoded signature of the following message: MtPelerin-<code>. The private key used to sign the message has to be the one matching the public address given in addr. To test it, see Test vector below.
chain
mainnet polygon_mainnet xdai_mainnet
Required to validate the address of a smart contract wallet (EIP1271)
rfr
string
Your referral code (see Revenue sharing)
mylogo
logo URL
Add your own logo, which will be displayed in the widget's footer left of the "powered by Mt Pelerin".
mode
dark
If used, switches the UI theme to dark mode.
ctry
ISO alpha-2 country code: CH
FR
DE
...
Sets the default country code displayed at the phone number input step. If not used, the country code is automatically selected based on the user's detected timezone.

Example iFrame integration with multiple parameters

<iframe src="https://widget.mtpelerin.com/?lang=en&tab=sell&type=web&primary=%23e3006f&ssc=USDC&sdc=EUR&net=xdai_mainnet"></iframe>

Test vector

You can verify that your signature for the 'hash' parameter is correct by testing it with the following info:
  • private key: 4142e80a872531fd1055f52ccab713d4c7f1eee28c33415558e74faeb516de2b
  • address: 0x270402aeB8f4dAc8203915fC26F0768feA61b532
  • code: 1234
  • hash: /37KcpG6mEp+1oAan8/HLEvcfZFXUi6kTOxTHNjD3ZloxS8DL70v7lCmXiEyDOATm4hvewMzBO2d1n25QdJ8WBw=
or with the following info:
  • seed: bamboo feed assist glove soda merry medal vanish almost solid bean loop
  • derivation path: m/44'/60'/0'/0/0
  • private key: 78ba65f1cc9427fab632340ae4d705b1485fba9f73ab5a24816907d36d5729e9
  • address: 0xEa22e16EA50A43092853329F3cEEa0825Cb9B03e
  • code: 1234
  • hash: yrXNJSmMc4wvVyKEzN4cEmLTvEaridjqTULZAfMwYAMM5PgBz4fCoIWNLr5NwKhxOYiPpI2vhMlKCihWadUw5xs=

Vanilla JS code with Metamask as signer

const toBase64 = (u8) =>
btoa(String.fromCharCode.apply(null, u8));
const fromBase64 = (str) =>
atob(str).split('').map(function (c) { return c.charCodeAt(0); });
const fromHexString = (hexString) =>
Uint8Array.from(hexString.match(/.{1,2}/g).map((byte) => parseInt(byte, 16)));
const toHexString = (bytes) =>
bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');
/* Example for private key 78ba65f1cc9427fab632340ae4d705b1485fba9f73ab5a24816907d36d5729e9 */
const code = '1234';
const message = 'MtPelerin-' + code;
const address = '0xEa22e16EA50A43092853329F3cEEa0825Cb9B03e'; // ethereum address
window.ethereum.request({
method: 'personal_sign',
params: [message, address],
}).then((hash) => {
// hash should be 0xcab5cd25298c738c2f572284ccde1c1262d3bc46ab89d8ea4d42d901f33060030ce4f801cf87c2a0858d2ebe4dc0a87139888fa48daf84c94a0a285669d530e71b
const base64Hash = toBase64(fromHexString(hash.replace('0x', '')));
// base64Hash should be yrXNJSmMc4wvVyKEzN4cEmLTvEaridjqTULZAfMwYAMM5PgBz4fCoIWNLr5NwKhxOYiPpI2vhMlKCihWadUw5xs=
return base64Hash;
}).catch(console.log);

NodeJS code with ethers.Wallet as signer

const ethers = require('ethers');
/* Example for private key 78ba65f1cc9427fab632340ae4d705b1485fba9f73ab5a24816907d36d5729e9 */
const code = '1234';
const message = 'MtPelerin-' + code;
const address = '0xEa22e16EA50A43092853329F3cEEa0825Cb9B03e'; // ethereum address
const wallet = new ethers.Wallet('0x78ba65f1cc9427fab632340ae4d705b1485fba9f73ab5a24816907d36d5729e9');
wallet.signMessage(message).then((hash) => {
// hash should be 0xcab5cd25298c738c2f572284ccde1c1262d3bc46ab89d8ea4d42d901f33060030ce4f801cf87c2a0858d2ebe4dc0a87139888fa48daf84c94a0a285669d530e71b
const base64Hash = Buffer.from(hash.replace('0x', ''), 'hex').toString('base64');
// base64Hash should be yrXNJSmMc4wvVyKEzN4cEmLTvEaridjqTULZAfMwYAMM5PgBz4fCoIWNLr5NwKhxOYiPpI2vhMlKCihWadUw5xs=
return base64Hash;
}).catch(console.log);