Sign in to the Reseller Portal
Open the reseller portal, select the Reseller tab—not Staff control centre—and sign in with your BeviPay email and password or Google Sign-In.
Power airtime, bills, cards, travel and customer accounts with infrastructure built for ambitious African businesses.
POST /api/reseller/airtime/purchaseAuthorization: Bearer sk_test_...Content-Type: application/json{ "network": "mtn", "amount": 1000, "reference": "airtime_01JYC8K7"}{ "status": "success", "message": "Airtime delivered" }Five deliberate steps take you from your existing BeviPay account to a secure, production-ready integration.
Sign up on the BeviPay iOS or Android app, or directly through the web portal. Your app email, password, transaction PIN and wallet stay linked to your reseller account.
Create or access your accountOpen the reseller portal, select the Reseller tab—not Staff control centre—and sign in with your BeviPay email and password or Google Sign-In.
Go to Business Profile and submit your company information for due diligence. Choose free self-integration or BeviPay’s custom-built platform package.
Once approved, open Developers to create credentials for each environment. Test without debiting real funds, then switch to live when you are ready.
Add a secure webhook URL for real-time transaction callbacks, including bill confirmations, flight bookings and card events.
Use the built-in API reference to inspect service endpoints, test requests and move from sandbox to production with confidence.
Bring high-demand services into your app, platform or fintech without managing a patchwork of providers.
Airtime, data bundles, electricity tokens and cable TV through one reliable connection.
Issue WAEC, JAMB and NECO examination pins directly inside your product experience.
Create, fund and terminate virtual cards with programmatic control at every step.
Flight search, quotes, instant or held bookings, and hotels for complete travel journeys.
Create co-branded virtual accounts for your customers and simplify collections.
POST /api/reseller/customers/accountsAuthenticate with either Authorization: Bearer sk_... or x-api-key: sk_.... Keep secret keys on your server.
# 1. Check your wallet balance
curl --request GET \
--url https://api.bevipay.com.ng/api/reseller/wallet/balance \
--header "Authorization: Bearer $BEVIPAY_SECRET_KEY"
# 2. Purchase airtime with a unique reference
curl --request POST \
--url https://api.bevipay.com.ng/api/reseller/airtime/purchase \
--header "Authorization: Bearer $BEVIPAY_SECRET_KEY" \
--header "Content-Type: application/json" \
--data '{
"network": "mtn",
"phone": "08030000000",
"amount": 1000,
"reference": "airtime_01JYC8K7M4N2Q0W8V6"
}'{
"status": "success",
"message": "Airtime purchase successful",
"data": {
"reference": "airtime_01JYC8K7M4N2Q0W8V6",
"status": "completed"
}
}{
"status": "error",
"message": "Insufficient wallet balance",
"data": null
}Check both the HTTP status and the response’s status and message fields.
200Request successfulRead the data object and fulfil the customer journey.400Invalid requestCorrect validation errors before retrying.401Authentication failedCheck the key, environment and authentication header.402Insufficient balanceFund the reseller wallet; do not retry automatically.409Duplicate referenceQuery the original transaction instead of creating another.500Server errorRetry safely with the same reference and exponential backoff.Generate a unique idempotency reference for each purchase, persist it before sending, and reuse that same reference for network retries. Never reuse a reference for a different request, and always verify webhook HMAC signatures.