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 & Onboarding
Query onboarding flags and claim the ₦500,000 signup credits. The initial landing profile onboarding only requires basic demographics. BVN, NIN, and DOB are deferred to checkout financing.
GET /api/user/onboarding/status?email=test@example.com
// RESPONSE
{
"success": true,
"onboarding_completed": false,
"customer": null
}
POST /api/user/onboarding
Payload: {
"email": "user@example.com",
"phone": "2347036190000",
"user_type": "individual", // "individual" or "business"
"country_code": "NG",
"company_name": "My Business Ltd", // Required if user_type is business
"company_registration_number": "RC123456" // Required if user_type is business
}
Initialize Checkout
Generate a settlement virtual account or Momo transaction to receive deposits. For outright payments (pay_in_full / pay_on_delivery), financing details are bypassed.
If financing is selected (e.g. pay_small_small_50), individual_financing_details or business_details must be provided.
POST /api/payment/initialize
Payload: {
"app_id": "buysolar",
"customer_id": "cust-uuid-1234",
"amount": 250000,
"currency": "NGN",
"payment_option": "pay_small_small_50", // "pay_in_full", "pay_on_delivery", "pay_small_small_50", "line_of_credit_5"
// Required ONLY for individual financing (pay_small_small_50)
"individual_financing_details": {
"bvn": "12345678901",
"nin": "98765432109",
"date_of_birth": "1995-10-15",
"bank_statement_name": "bank_statement.pdf"
},
// Required ONLY for business financing
"business_details": {
"company_type": "limited",
"annual_revenue": 15000000,
"employee_count": 12,
"business_statement_name": "cac_incorporation.pdf"
}
}
// SUCCESS RESPONSE
{
"status": true,
"data": {
"reference": "PSS-20260720-XYZABC",
"deposit_amount": 125000,
"bank_details": {
"bank_name": "Globus Bank",
"account_number": "9087654321",
"account_name": "Byte Africa (BuySolar Settlement)"
}
}
}
Webhook Callback Notifications
When configuring your developer key, you must specify a Webhook Callback URL.
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.updated",
"data": {
"reference": "PAY-20260720-XYZ789",
"status": "completed", // "pending", "deposit_received", "completed", "failed", "expired"
"payment_option": "pay_in_full",
"amount": 250000.00,
"deposit_amount": 250000.00,
"balance_amount": 0.00,
"currency": "NGN",
"updated_at": "2026-07-20T15:34:05Z"
}
}