← Back to Blog

How to Accept Crypto Payments with Binance Pay: Complete Setup Guide (2026) | WovLab

By WovLab Team | February 24, 2026 | 5 min read

Crypto Payments Binance Pay Tutorial   February 17, 2026 · 18 min read

Crypto payments are no longer a niche — in 2026, businesses in 100+ countries accept Bitcoin, USDT, and other cryptocurrencies from customers who prefer them for privacy, speed, and zero cross-border fees. Binance Pay is the easiest and most trusted way to start accepting crypto payments.

This guide covers everything: setting up your Binance merchant account, generating payment QR codes, integrating the Binance Pay API, and handling settlements — with code examples for Node.js and PHP.

Key Advantage: Binance Pay charges 0% transaction fees for merchants. You keep 100% of every payment. WovLab sets up Binance Pay integration for your website or app completely free.

What is Binance Pay?

Binance Pay is the payment service from Binance, the world's largest cryptocurrency exchange by volume. It allows merchants to:

The 0% fee is the headline — but the real advantage is instant, borderless settlement. A customer in Germany, Nigeria, or Brazil can pay your Indian or US business instantly, with no currency conversion delays or bank transfer fees.

Supported Cryptocurrencies

Binance Pay supports all major cryptocurrencies, but these are the most commonly used for commerce:

CryptocurrencyBest ForVolatility
USDT (Tether)B2B, recurring payments, stabilityNone (stablecoin)
USDC (USD Coin)US-centric B2C, DeFi usersNone (stablecoin)
BNBBinance ecosystem usersMedium
BTC (Bitcoin)Large-ticket, internationalHigh
ETH (Ethereum)NFT, DeFi, gaming usersMedium-High
BUSDStability, Binance-nativeNone (stablecoin)

Recommendation for most businesses: Accept USDT as primary (stable value, instant settlement, no volatility risk). Allow BTC and ETH as secondary options. Display prices in your local currency; Binance handles real-time conversion at checkout.

Step 1: Create a Binance Business Account

  1. Go to binance.com and create a personal account first
  2. Complete Identity Verification (KYC Level 2) — requires government ID and selfie
  3. Go to Finance → Binance Pay → For Merchants
  4. Apply for merchant status — requires business name, website URL, and business description
  5. Approval typically takes 1–3 business days

Requirements for Merchant Approval

Step 2: Generate a Payment QR Code (No-Code)

For simple use cases — invoicing, physical shops, social media selling — Binance Pay lets you generate payment QR codes without any technical setup:

  1. Log in to the Binance app → Binance Pay → Merchant
  2. Tap "Receive" or "Payment Code"
  3. Enter amount in USD (or your local currency)
  4. Share the QR code or payment link with your customer
  5. Customer scans with their Binance app and pays instantly

You receive the USDT (or crypto of customer's choice) in your Binance wallet within seconds. No bank, no intermediary, no delay.

Step 3: API Integration (For Websites/Apps)

For automated checkout flows, Binance Pay provides a REST API. Here's how it works:

Get API Credentials

  1. Log in to the Binance Merchant Center
  2. Go to API Management
  3. Create a new API key with "Binance Pay" permissions
  4. Save your API_KEY and API_SECRET securely

Create a Payment Order (Node.js)

const crypto = require('crypto');
const axios = require('axios');

const API_KEY = 'your_api_key';
const API_SECRET = 'your_api_secret';
const BASE_URL = 'https://bpay.binanceapi.com';

async function createBinancePayOrder(amount, currency, description) {
  const timestamp = Date.now();
  const nonce = crypto.randomBytes(16).toString('hex').toUpperCase();

  const payload = {
    env: { terminalType: 'WEB' },
    merchantTradeNo: `ORDER_${timestamp}`,
    orderAmount: amount.toFixed(2),
    currency: currency, // e.g., "USDT" or "USD"
    goods: {
      goodsType: '01',
      goodsCategory: 'Z000',
      referenceGoodsId: `REF_${timestamp}`,
      goodsName: description,
    },
    returnUrl: 'https://yoursite.com/payment/success',
    cancelUrl: 'https://yoursite.com/payment/cancel',
    webhookUrl: 'https://yoursite.com/api/webhooks/binance',
  };

  const payloadStr = JSON.stringify(payload);
  const signStr = `${timestamp}\n${nonce}\n${payloadStr}\n`;
  const signature = crypto
    .createHmac('sha512', API_SECRET)
    .update(signStr)
    .digest('hex')
    .toUpperCase();

  const response = await axios.post(
    `${BASE_URL}/binancepay/openapi/v2/order`,
    payloadStr,
    {
      headers: {
        'Content-Type': 'application/json',
        'BinancePay-Timestamp': timestamp,
        'BinancePay-Nonce': nonce,
        'BinancePay-Certificate-SN': API_KEY,
        'BinancePay-Signature': signature,
      },
    }
  );

  const { checkoutUrl, qrcodeLink, deeplink } = response.data.data;
  return { checkoutUrl, qrcodeLink, deeplink };
}

Redirect Customer to Payment

// In your Express/Next.js route:
app.post('/api/checkout/crypto', async (req, res) => {
  const { amount, productName } = req.body;

  try {
    const { checkoutUrl } = await createBinancePayOrder(
      amount, 'USDT', productName
    );
    res.json({ checkoutUrl });
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

Handle Webhooks

app.post('/api/webhooks/binance', (req, res) => {
  const { bizType, data } = req.body;

  if (bizType === 'PAY') {
    const { merchantTradeNo, totalFee, currency, transactionId } = 
      JSON.parse(data);

    if (req.body.bizStatus === 'PAY_SUCCESS') {
      // ✅ Payment confirmed - fulfill order
      fulfillOrder(merchantTradeNo, totalFee, currency);
    }
  }

  res.json({ returnCode: 'SUCCESS', returnMessage: null });
});

Step 4: Display Crypto Prices on Your Website

Display prices in both fiat and crypto to help customers:

// Fetch USDT to USD conversion (Binance Public API)
async function getUsdtPrice(amountInUsd) {
  const response = await fetch(
    'https://api.binance.com/api/v3/ticker/price?symbol=USDTUSDT'
  );
  // USDT ≈ 1 USD always
  return amountInUsd; // For USDT, 1:1 with USD
}

// For BTC:
async function getBtcPrice(amountInUsd) {
  const r = await fetch(
    'https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT'
  );
  const { price } = await r.json();
  return (amountInUsd / parseFloat(price)).toFixed(8);
}

Settlement and Cash-Out

Your Binance Pay earnings accumulate in your Binance wallet. You have several options for cash-out:

Tax Considerations for Crypto Payments in India

Important: In India, crypto payments are taxed as per the 2022 Virtual Digital Assets (VDA) tax framework:

Consult a CA with crypto expertise before accepting large-scale crypto payments. For small amounts (under ₹50,000/year), the compliance burden is minimal.

When to Use Binance Pay

Best use cases:

Hosting Recommendation: Get reliable web hosting from Hostinger — trusted for business websites

Ready to Get Started?

Let WovLab handle it for you — zero hassle, expert execution.

💬 Chat on WhatsApp