Creating and configuring your ZenPay account to start accepting cryptocurrency payments.
Before you can start accepting cryptocurrency payments, you need to create and set up your ZenPay account. This guide will walk you through the process step by step.
Visit the ZenPay registration page and create your account by providing your email address and setting a secure password.
Check your inbox for a verification email from ZenPay and click the link to verify your email address. If you don't see the email, check your spam folder.
Fill in your business details, including company name, business type, and contact information. This information helps us tailor your ZenPay experience.
Enhance your account security by enabling two-factor authentication (2FA). We recommend using an authenticator app like Google Authenticator or Authy.
To comply with regulations and ensure the security of our platform, we require identity verification for all merchants. This process, known as Know Your Customer (KYC), helps prevent fraud and ensures compliance with legal requirements.
Individual verification typically takes 1-2 business days, while business verification may take 3-5 business days. You'll receive email notifications about the status of your verification process.
After your account is verified, you need to set up your preferred payment methods for receiving funds.
Connect your bank account to receive fiat currency payouts. We support bank accounts in 40+ countries.
Navigate to Bank Accounts: Go to Settings → Payment Methods → Bank Accounts.
Add a New Account: Click "Add Bank Account" and follow the prompts to enter your banking details.
Verify Your Account: Complete any verification steps required by your region (may include micro-deposits or online banking verification).
Set as Default (Optional): If you have multiple accounts, you can set one as your default settlement account.
Add your cryptocurrency wallet addresses to receive payments directly in crypto.
Navigate to Crypto Wallets: Go to Settings → Payment Methods → Crypto Wallets.
Add a New Wallet: Click "Add Wallet" and select the cryptocurrency you want to receive.
Enter Wallet Address: Provide your wallet address and a label (e.g., "BTC Settlement Wallet").
Verify Ownership: Complete the verification process by signing a message with your wallet.
Set Preferences: Choose whether to auto-settle to this wallet and set any thresholds.
If you plan to integrate ZenPay with your website or application, you'll need to set up your API keys.
// Navigate to Settings → API Keys in your ZenPay dashboard
// Click "Generate New Key" and provide a descriptive name
// Store your API keys securely - they give access to your account!
// Example API key pair:
// Public key: pk_test_ZenPay123456789DEMO
// Secret key: sk_test_ZenPay987654321DEMOWebhooks allow your application to receive real-time notifications about events like successful payments or refunds.
Navigate to Webhooks: Go to Developer → Webhooks.
Add Endpoint: Click "Add Endpoint" to create a new webhook destination.
Configure Events: Select which events you want to be notified about (e.g., payment.completed, payment.failed).
Set Secret: Create a webhook secret to verify the authenticity of the webhook notifications.
const express = require('express');
const app = express();
const crypto = require('crypto');
// Your webhook secret from ZenPay dashboard
const webhookSecret = 'whsec_1234567890abcdef';
app.post('/webhooks/zenpay', express.raw({type: 'application/json'}), (req, res) => {
const signature = req.headers['zenpay-signature'];
// Verify webhook signature
const hmac = crypto.createHmac('sha256', webhookSecret);
const digest = hmac.update(req.body).digest('hex');
if (signature === digest) {
const event = JSON.parse(req.body);
// Handle different event types
switch (event.type) {
case 'payment.succeeded':
// Handle successful payment
console.log('Payment succeeded:', event.data.id);
break;
case 'payment.failed':
// Handle failed payment
console.log('Payment failed:', event.data.id);
break;
// Handle other event types
}
res.status(200).send('Webhook received');
} else {
res.status(403).send('Invalid signature');
}
});
app.listen(3000, () => console.log('Webhook server running'));