Skip to content


Here you will find instructions to add the Onramper widget in your website or application. With just a few lines of code, you can allow your users to purchase cryptocurrencies from your web or app.

You can integrate the widget in four different ways:
· Redirect your users to the widget URL with a referral link. See more.
· Use an iframe or a webview to embed the widget in your application. See more.
· Import a component in your React application. See more.
· Add it to your static webpage using a CDN import. See more.


To allow users to buy crypto, you need an API key. To get an API key, fill in our onboarding form. Add your API key as a parameter in the URL of the code snippet as follows:

Note: data retrieved with a test key can be not accurate, for real time prices use a production key.

You can simply add a link to your app or website to redirect users to a page (hosted by us) where the users can buy crypto. The widget url is

If you want to receive a referral fee for every transaction done by users coming from your website, fill in our onboarding form to receive your API key and then add your API key to the link as follows:

HTML code snippet
<a href="" target="_blank">
  Buy cryptocurrencies
Live example & customization

Easily customize the buy-page by changing the URL with the available URL parameters.

Redirect customization examples: CodeSandbox


Embed an iframe in your website. This is the easiest way to add the widget on your own page. Just copy-paste the code snippet below in your page. Customize your widget by adding URL parameters.

Note: In order to enable the widget for transactions, don't forget to add your API key. In order to enable some features in the widget, don't forget to add the allow attribute to the iframe element.

HTML code snippet
  title="Onramper widget"
  autoplay; camera; gyroscope; payment"
  style="box-shadow: 3px 3px 5px 0px
  <a href="" target="_blank">Buy crypto</a>
Live example & customization

Iframe customization example

URL parameters

You can pass some arguments as query parameters to the URL to customize the widget For all parameters see CUSTOMIZE section

Name Format Example Default value
apiKey Alphanumeric string ?apiKey=yourAPIkey (fill in our onboarding form to receive your API key) Not set
defaultCrypto Cryptocurrency code ?defaultCrypto=BTC BTC
defaultFiat Fiat code ?defaultFiat=EUR USD
defaultAmount Positive integer ?defaultAmount=500 100
wallets Comma-separated list of crypto code:address;memo. Being ;memo optional ?wallets=BTC:btcaddr,BNB:binanceAddress;addressTag Not set
onlyCryptos Comma-separated list of crypto codes ?onlyCryptos=BTC,ETH,NEO Not set
excludeCryptos Comma-separated list of crypto codes ?excludeCryptos=BTC,ETH,NEO Not set
excludeFiat Comma-separated list of fiat codes ?excludeCryptos=EUR,USD Not set
onlyFiat Comma-separated list of fiat codes ?onlyFiat=EUR,USD Not set
onlyGateways Comma-separated list of gateway identifiers ?onlyGateways=Wyre,Moonpay Not set
isAddressEditable Boolean value ?isAddressEditable=false true
color Hexadecimal color ?color=346eeb 31a5ff
fontFamily font-family css string Arial, Helvetica, sans-serif 'Roboto', sans-serif

React component

You can also import the widget as a component in your React application.

# Using yarn
$ yarn add @onramper/widget

# Using npm
$ npm install @onramper/widget
Code snippet
import OnramperWidget from "@onramper/widget";

export default function WidgetContainer() {

  const wallets = {
      "BTC": { address: "btcAddr" },
      "BNB": { address: "bnbAddress", memo: "cryptoTag" }

  return (
        width: "440px",
        height: "595px"
      <OnramperWidget defaultCrypto="BTC" defaultAddrs={wallets} />
Live example & customization

While importing the widget as a React component, you can customize it using the component props below. CodeSandbox

Component props

For all props see CUSTOMIZE section

Name Type Example Default value
API_KEY string? "yourAPIkey" (fill in our onboarding form to receive your API key) undefined
defaultCrypto string? "ETH" undefined
defaultFiat string? "EUR" "USD"
defaultAmount number? 500 100
defaultAddrs object? {"BTC": { address: "btcAddr" },"BNB": { address: "bnbAddress", memo: "cryptoTag" }} {}
onlyCryptos string[]? ["BTC", "ETH", "NEO"] undefined
excludeCryptos string[]? ["ETH", "NEO"] undefined
onlyFiat string[]? ["USD", "EUR"] undefined
excludeFiat string[]? ["USD"] undefined
onlyGateways string[]? ["Wyre", "Moonpay"] undefined
isAddressEditable boolean? false true
color string? "#000000" "#31a5ff"
fontFamily string? Arial, Helvetica, sans-serif 'Roboto', sans-serif



Add an empty div tag to mark the spot where you want to display the widget and add a unique id to it.

<div id="onramper-widget"></div>

Then, add three script tags to load the necessary dependencies (React, ReactDOM) and the widget:

<!-- Load React. -->
<!-- Note: when deploying, replace "development.js" with "production.min.js". -->

<!-- Load Onramper's widget. -->
<script src="" crossorigin></script>

After the three scripts load, add the widget to the DOM invoking the initialize function

Code snippet
<!DOCTYPE html>
<html lang="en">
    <meta charset="UTF-8" />
    <title>Static website</title>
    <script src="" crossorigin></script>
    <script src="" crossorigin></script>
    <script src="" crossorigin></script>
      body {
        margin: 0;
        height: 100%;
      #onramper-widget {
        width: 440px;
        height: 595px;
        box-shadow: 3px 3px 5px 0px rgba(0, 0, 0, 0.75);
        margin: 3rem auto;
    <div id="onramper-widget"></div>
Live example


Initialize parameters

For all parameters see CUSTOMIZE section

Name Type Example Default value
API_KEY string? Onramper.initialize("#id", {API_KEY:"YourAPIkey"}) (fill in our onboarding form to receive your API key) undefined
defaultCrypto string? Onramper.initialize("#id", {defaultCrypto:"ETH"}) undefined
defaultFiat string? Onramper.initialize("#id", {defaultFiat:"EUR"}) "USD"
defaultAmount number? Onramper.initialize("#id", {defaultAmount:500"}) 100
defaultAddrs object? Onramper.initialize("#id", {defaultAddrs:{"BTC": { address: "btcAddr" }}}) {}
onlyCryptos string[]? Onramper.initialize("#id", {onlyCryptos:["BTC", "ETH", "NEO"]}) undefined
excludeCryptos string[]? Onramper.initialize("#id", {excludeCryptos:["ETH", "NEO"]}) undefined
onlyFiat string[]? Onramper.initialize("#id", {onlyFiat:["EUR"]}) undefined
excludeFiat string[]? Onramper.initialize("#id", {excludeFiat:["EUR"]}) undefined
onlyGateways string[]? Onramper.initialize("#id", {onlyGateways:["Moonpay"]}) undefined
isAddressEditable boolean? Onramper.initialize("#id", {isAddressEditable:false"}) true
color string? Onramper.initialize("#id", {color:"#000000"}) "#31a5ff"
fontFamily string? Onramper.initialize("#id", {fontFamily:"Arial, Helvetica, sans-serif"}) "#31a5ff"

Native apps

You can also include Onramper's widget in any native application using a WebView or any component that is able to render a website, as if it was an iframe, for this, you should point the source URI to You can also customize it using the URL parameters.

Don't forget that iframes and webviews are isolated components so you should enable some features in order to allow the widget to work properly.

This features are:

  • Camera and storage permission (in order to upload KYC documents)
  • Features: accelerometer; autoplay; camera; gyroscope; payment (required by one or more gateways in order to work properly)
  • Allow third party cookies (used by one or more gateways)
  • Allow the webview to open URLs with the OS browser (payment redirects required by one or more gateways)


You can pass the following arguments to customize the widget

Name Description
API_KEY Production or test API Key.
defaultCrypto Select a specific cryptocurrency by default. Should be specified the cryptocurrency code.
defaultFiat Fiat currency to select by default.
defaultFiatSoft Fiat currency to select by default only when the country currency is unavailable.
defaultPaymentMethod Payment method to select by default. See posible values here.
defaultAmount Positive integer representing the base amount of fiat to be filled in the widget. Should be indicated in USD, for other currencies, a rounded aproximated conversion will be automatically applied.
defaultAddrs | wallets Used to autofill the crypto address of the user.
onlyCryptos A comma-separated list of crypto codes to include. Only this cryptos will be shown to the user.
excludeCryptos A comma-separated list of crypto codes to exclude. This cryptos will be excluded from the list of available cryptos.
onlyFiat Only the fiat currencies added here will be available to pick.
excludeFiat The fiat currencies added here will be excluded from the available ones.
onlyPaymentMethods Only the payment methods added here will be available to pick. See posible values here.
excludePaymentMethods The payment methods added here will be excluded from the available ones. See posible values here.
onlyGateways Only the gateways added here will be availables. By default all are availables.
isAddressEditable Allow the user to edit the crypto address that is passed through the parameter defaultAddrs or wallets.
color Color to change the highlight of the widget. Should be an hex color.
fontFamily Font to use in the widget.

Payment method IDs

IDs of all posible payment methods:

creditCard, bankTransfer, applePay, googlePay, paynow, fps, alipay-hk, prompt-pay, instapay, upi, gojek-id, viettel-pay, duit-now