How to Accept Crypto Payments with Binance Pay: Complete Setup Guide (2026) | WovLab
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:
- Accept 70+ cryptocurrencies including USDT, BNB, BTC, ETH, and all major stablecoins
- Generate payment links and QR codes without any code
- Integrate a checkout button into websites and apps via API
- Receive instant settlement (in cryptocurrency, no bank delays)
- Auto-convert to USDT/BUSD to avoid price volatility
- Access 180+ million Binance users as potential customers
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:
| Cryptocurrency | Best For | Volatility |
|---|---|---|
| USDT (Tether) | B2B, recurring payments, stability | None (stablecoin) |
| USDC (USD Coin) | US-centric B2C, DeFi users | None (stablecoin) |
| BNB | Binance ecosystem users | Medium |
| BTC (Bitcoin) | Large-ticket, international | High |
| ETH (Ethereum) | NFT, DeFi, gaming users | Medium-High |
| BUSD | Stability, Binance-native | None (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
- Go to binance.com and create a personal account first
- Complete Identity Verification (KYC Level 2) — requires government ID and selfie
- Go to Finance → Binance Pay → For Merchants
- Apply for merchant status — requires business name, website URL, and business description
- Approval typically takes 1–3 business days
Requirements for Merchant Approval
- Valid business (not restricted categories like gambling)
- Website or app with clear product/service description
- Terms of Service and Privacy Policy pages
- Contact information for customers
- Country of operation (some countries have restrictions)
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:
- Log in to the Binance app → Binance Pay → Merchant
- Tap "Receive" or "Payment Code"
- Enter amount in USD (or your local currency)
- Share the QR code or payment link with your customer
- 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
- Log in to the Binance Merchant Center
- Go to API Management
- Create a new API key with "Binance Pay" permissions
- Save your
API_KEYandAPI_SECRETsecurely
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:
- P2P Trading: Sell USDT/BTC directly to buyers for INR, USD, or any local currency via Binance P2P. Typical spread: 0.5–1.5%.
- Bank Transfer: Binance supports direct bank withdrawal in select countries. India recently allowed crypto-to-INR through compliant routes.
- Hold as Stablecoin: Keep USDT and earn yield via Binance Earn (3–10% APY on stablecoins) while holding.
- Spend Directly: Use your Binance Visa Card to spend crypto directly wherever Visa is accepted.
Tax Considerations for Crypto Payments in India
Important: In India, crypto payments are taxed as per the 2022 Virtual Digital Assets (VDA) tax framework:
- 30% flat tax on crypto gains (income from crypto)
- 1% TDS deducted at source on crypto transactions above ₹10,000
- You must report crypto income in your ITR filing
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:
- Digital products (courses, software, subscriptions) sold internationally
- Freelancers getting paid by clients in the US, EU, or Middle East
- B2B payments where both parties use Binance
- Gaming, NFT, and metaverse applications
- Privacy-conscious customers who prefer not to share card details
- Avoiding high international wire transfer fees