Partner API
Guide

Getting started

Four steps to your first live transaction: register, get approved, generate your API key pair, and sign your first write request.

Step 1 — Register as a partner

Self-register with your business and representative contact details. This is a public endpoint — no API key is required yet.

Register a partner account

POST /partner/auth/register
Public
FieldTypeRequiredNotes
firstnamestringrequired2–50 characters
lastnamestringrequired2–50 characters
emailstringrequiredValid email address, used for login
passwordstringrequired8–128 chars. Must include uppercase, lowercase, number, and symbol (@$!%*?&)
phonestringrequired10–20 characters, e.g. +2348012345678
companyNamestringrequired2–100 characters
contactPersonstringrequired2–100 characters
countrystringoptionalDefaults to Nigeria
statestringoptionalState / province
citystringoptionalCity of operation
addressstringoptionalRegistered business address
cURL
Node.js
curl -X POST https://api.billpadi.com/api/v1/partner/auth/register \
  -H "Content-Type: application/json" \
  -d '{
    "firstname": "Ada",
    "lastname": "Obi",
    "email": "ada@merchro.com",
    "password": "StrongPass1!",
    "phone": "+2348012345678",
    "companyName": "Merchro Ltd",
    "contactPerson": "Ada Obi",
    "country": "Nigeria",
    "state": "Lagos",
    "city": "Ikeja",
    "address": "12 Commercial Avenue"
  }'
const res = await fetch("https://api.billpadi.com/api/v1/partner/auth/register", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    firstname: "Ada",
    lastname: "Obi",
    email: "ada@merchro.com",
    password: "StrongPass1!",
    phone: "+2348012345678",
    companyName: "Merchro Ltd",
    contactPerson: "Ada Obi",
    country: "Nigeria",
    state: "Lagos",
    city: "Ikeja",
    address: "12 Commercial Avenue"
  }),
});
const data = await res.json();
Example response — 201 Created
{
  "success": true,
  "message": "Partner registration successful. Awaiting admin approval.",
  "data": {
    "id": "665f1c2a9e1b2c0012a4e9f1",
    "firstname": "Ada",
    "lastname": "Obi",
    "email": "ada@merchro.com",
    "companyName": "Merchro Ltd",
    "status": "pending"
  },
  "timestamp": "2026-07-10T09:12:41.000Z",
  "path": "/api/v1/partner/auth/register"
}

Step 2 — Wait for approval

New partner accounts initialize in a pending status. Our compliance team verifies your business credentials and activates your account. API key authentication enforces that your partner status is active before processing live service requests.

You will receive an email confirmation once your partner status is activated. Contact your onboarding account manager if you need expedited verification.

Step 3 — Log in and generate an API key pair

Once approved, authenticate with your email and password via standard login to acquire a JWT bearer token for account configuration.

Log in to your account

POST /api/v1/auth/login
Public
FieldTypeRequired
emailstringrequired
passwordstringrequired

With your session token, call POST /partner/api-keys to generate your active API key and secret:

Generate or rotate your API key

POST /partner/api-keys
Dashboard Bearer Auth

This returns your apiKey (e.g. sk_live_...) and apiSecret in plain text. Store both in your encrypted secret store immediately — for security, the API secret is hashed in our database and cannot be retrieved again.

cURL
curl -X POST https://api.billpadi.com/api/v1/partner/api-keys \
  -H "Authorization: Bearer <your-login-token>"
Example response — 200 OK
{
  "success": true,
  "message": "Save your API key and secret. You won't see them again.",
  "data": {
    "id": "665f20b19e1b2c0012a4ea02",
    "apiKey": "sk_live_1f9c2a7e4b6d0f83a5c1e9b7d4f2038a...",
    "apiSecret": "9a3e7c1b5d8f2046e1a9c7b3d5f80261e4a7c9b3d5f80261e4a7c9b3d5f8026"
  },
  "timestamp": "2026-07-10T09:20:03.000Z",
  "path": "/api/v1/partner/api-keys"
}

Calling POST /partner/api-keys rotates your credentials. Any previously active API key is immediately revoked.

Recommended for Live Production: Whitelist your backend server IP addresses via PUT /partner/ip-whitelist. Once configured, requests from any unauthorized IP are instantly blocked with 403 Forbidden even if your API key is compromised.

Step 4 — Make your first API request

Read operations (such as listing telecom networks or electricity DISCOs) require only the x-api-key header:

cURL
curl https://api.billpadi.com/api/v1/partner/airtime/networks \
  -H "x-api-key: sk_live_1f9c2a7e4b6d0f83a5c1e9b7d4f2038a..."

For write actions (airtime top-up, bill payments, payouts, crypto trades), you must sign the JSON body with your apiSecret and pass the HMAC hash in x-signature. Proceed to Authentication & Signing to view code examples for Node.js, Python, PHP, and Go.