Modern Payment Channels for Africa
Empower your application with multi-currency checkout solutions. Accept instant bank transfers across NGN, GHS, KES, USD, GBP, and EUR via one unified API.
Developer Registry
Register your company to generate API authorization keys.
Gateway Simulator
Simulate a payment initialization and bank transfer settlement to check integration logs.
API Documentation
Learn how to configure your project to connect and settle transactions via Byte.
Header Authentication
All incoming requests to the API must pass the developer secret key in the Authorization header as a Bearer token.
curl -X GET "http://127.0.0.1:8000/api/geo/detect" \ -H "Authorization: Bearer byte_sk_live_YOUR_SECRET_KEY"
IP Country Detection
Retrieve the location, country code, and default currency mappings of the current client by IP.
GET /api/geo/detect
// SUCCESS RESPONSE (200 OK)
{
"success": true,
"ip": "127.0.0.1",
"country_code": "NG",
"country_name": "Nigeria",
"currency": "NGN",
"exchange_rate": 1600.00
}
Customer Profile status
Query onboarding flags and claim the ₦5,000 signup credits.
GET /api/user/onboarding/status?email=test@example.com
// RESPONSE
{
"success": true,
"onboarding_completed": false,
"bonus_claimed": false
}
POST /api/user/onboarding
Payload: { "email": "user@example.com", "user_type": "individual", "country_code": "NG" }
Initialize Checkout
Generate a temporary settlement virtual account to receive bank transfers.
POST /api/payment/initialize
Payload: {
"app_id": "buysolar",
"customer_id": "cust-uuid-1234",
"amount": 250000,
"currency": "NGN",
"payment_option": "pay_small_small_50"
}
// SUCCESS RESPONSE
{
"status": true,
"data": {
"reference": "PSS-239401",
"deposit_amount": 125000,
"bank_details": {
"bank_name": "Providus Bank",
"account_number": "1023849182",
"account_name": "Byte Africa (BuySolar Settlement)"
}
}
}
Webhook Callback Notifications
When generating your developer key, you must configure a Webhook Callback URL (e.g. http://127.0.0.1:8001/webhooks/byte for local Buysolar testing).
Whenever a customer completes their bank transfer or authorizes their mobile money payment, Byte will send a secure POST request to your webhook URL with the transaction status details:
POST /webhooks/byte
Content-Type: application/json
{
"event": "payment.status_changed",
"reference": "PAY-20260720-XYZ789",
"status": "completed",
"payment_option": "pay_in_full",
"deposit_amount": 1100,
"amount": 1100,
"currency": "NGN"
}