WDK logoWDK documentation

Configuration

Configuration options for the @tetherto/wdk-protocol-fiat-moonpay module

This page covers all configuration options for the MoonPay fiat module.

Prerequisites

Before using this module, you need:

  1. A MoonPay developer account - Create an account on MoonPay Dashboard
  2. API credentials (API Key and Secret Key) from your dashboard

Installation

npm install @tetherto/wdk-protocol-fiat-moonpay

Basic Configuration

import MoonPayProtocol from '@tetherto/wdk-protocol-fiat-moonpay';

const moonpay = new MoonPayProtocol(walletAccount, {
  apiKey: 'pk_live_xxxxx',      // Your MoonPay publishable API key
  secretKey: 'sk_live_xxxxx',   // Your MoonPay secret key
});

Configuration Options

OptionTypeRequiredDefaultDescription
apiKeystringYes-Your MoonPay publishable API key
secretKeystringYes-Your MoonPay secret key
cacheTimenumberNo600000 (10 min)Duration in milliseconds to cache supported currencies

Constructor Overloads

The MoonPayProtocol class supports three constructor patterns:

// Without account (for public read operations like fetching supported currencies)
const moonpay = new MoonPayProtocol(undefined, config);

// With read-only account
const moonpay = new MoonPayProtocol(readOnlyAccount, config);

// With full wallet account (for buy/sell operations)
const moonpay = new MoonPayProtocol(walletAccount, config);

Environment Configuration

Sandbox (Testing)

Use test API keys for development and testing:

const moonpay = new MoonPayProtocol(walletAccount, {
  apiKey: 'pk_test_xxxxx',
  secretKey: 'sk_test_xxxxx',
});

In sandbox mode:

  • No real transactions are processed
  • Use test card numbers provided by MoonPay
  • KYC verification is simulated

Production

For production deployments, use live API keys:

const moonpay = new MoonPayProtocol(walletAccount, {
  apiKey: 'pk_live_xxxxx',
  secretKey: 'sk_live_xxxxx',
});

Widget Customization

When calling buy() or sell(), you can customize the MoonPay widget appearance:

const result = await moonpay.buy({
  cryptoAsset: 'eth',
  fiatCurrency: 'usd',
  fiatAmount: 10000n, // $100.00 in cents
  config: {
    colorCode: '#3B82F6',       // Your brand color (hex)
    theme: 'dark',              // 'dark' or 'light'
    language: 'en',             // ISO 639-1 language code
    redirectURL: 'https://yourapp.com/callback',
  },
});

Available Widget Options

OptionTypeDescription
colorCodestringHexadecimal color for widget accent
theme'dark' | 'light'Widget appearance theme
themeIdstringID of a custom theme
languagestringISO 639-1 language code
showAllCurrenciesbooleanShow all supported cryptocurrencies
showOnlyCurrenciesstringComma-separated currency codes to display
showWalletAddressFormbooleanShow wallet address input form
redirectURLstringURL to redirect after completion
unsupportedRegionRedirectUrlstringURL for unsupported regions
skipUnsupportedRegionScreenbooleanSkip unsupported region screen
lockAmountbooleanPrevent user from changing amount
emailstringPre-fill customer email
externalTransactionIdstringYour transaction identifier
externalCustomerIdstringYour customer identifier
paymentMethodstringPre-select payment method

Next Steps

On this page