Unified Infrastructure

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.

Already have a developer account? Log in here

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"
  }
}