Sell airtime and data from your app
One REST API for airtime, data, electricity, cable and exam pins across every Nigerian network. Credentials are issued through our API platform, Master OX.
Built for money-moving traffic
Airtime & data
All four networks. Plans priced for your tier, delivered instantly, with automatic refunds when a provider fails.
Signed requests
Reads take a bearer key. Anything that spends money is HMAC-signed, so your secret never crosses the wire and a captured request cannot be replayed.
Idempotency built in
Every purchase takes an idempotency key. A timed-out retry returns the original result instead of charging twice.
Receipts & reconciliation
A PDF receipt per transaction, and a background sweep that resolves anything left hanging by a provider timeout.
From nothing to a first call
Create an account at Master OX
Sign up at masterox.net to get your developer credentials โ a public key ID and a secret shown once.
Verify and fund
Add your BVN or NIN to raise your daily ceiling, then fund the wallet your API calls will draw from.
Call the API
Start with GET /api/v1/balance using a bearer key, then move to signed requests for purchases.
Check your balance
curl https://seamlesstopup.com.ng/api/v1/balance \ -H "Authorization: Bearer sk_live_..."
Buy airtime
Purchases are signed. The signature covers the timestamp, a one-time nonce, the method, the path and a digest of the body โ so nothing in flight can alter the amount.
const body = JSON.stringify({
network: "MTN", phone: "08031234567", amount: 500
});
const ts = String(Math.floor(Date.now() / 1000));
const nonce = crypto.randomBytes(16).toString("hex");
const digest = crypto.createHash("sha256").update(body).digest("hex");
const base = `${ts}.${nonce}.POST./api/v1/airtime.${digest}`;
await fetch("https://seamlesstopup.com.ng/api/v1/airtime", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-MOX-Key": KEY_ID,
"X-MOX-Timestamp": ts,
"X-MOX-Nonce": nonce,
"X-MOX-Signature": crypto
.createHmac("sha256", SECRET).update(base).digest("hex"),
"Idempotency-Key": crypto.randomUUID()
},
body
});Signing snippets for PHP and Python are in the full reference.
The whole surface
| Endpoint | Does | Auth |
|---|---|---|
| GET /api/v1/balance | Wallet balance and your current limits | Bearer |
| GET /api/v1/plans | Data bundles for a network | Bearer |
| GET /api/v1/transactions/:ref | Status of one purchase | Bearer |
| POST /api/v1/airtime | Buy airtime | Signed |
| POST /api/v1/data | Buy a data bundle | Signed |
Credentials live at masterox.net
Master OX is our API platform โ sign up there for keys, usage and billing across everything we run, this API included.
