The VTU API for data, airtime and bills.
Sell data, airtime, electricity and cable TV from your own app or website. One REST API, agent rates on every sale, and a signed webhook the moment each order completes.
- Services5
- WebhooksHMAC signed
- You buy atagent rates
# buy 1GB for a customer
curl -X POST https://aidapay.ng/api/v1/buy \
-H "Authorization: Bearer $AIDAPAY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"provider_code": "<from GET /service/data-bundle-sme>",
"package_code": "<from GET /packages/{provider_code}>",
"recipient": "08031234567",
"ref": "ORDER-1042",
"account_pin": "****"
}'
// POST to your webhook URL, header: Signature
{
"type": "transaction",
"transaction_hash": "TXabc123def456",
"ref": "ORDER-1042",
"status": "Completed",
"amount": 260,
"amount_paid": 260,
"commission": 30,
"recipient": "08031234567",
"provider": "MTN"
}
// PHP: reject anything not signed with your token
$payload = file_get_contents("php://input");
$local = hash_hmac('sha256', $payload, $accessToken);
$remote = getallheaders()['Signature'] ?? '';
if (!hash_equals($local, $remote)) {
http_response_code(403); exit;
}
$tx = json_decode($payload, true); // status: Completed | Processing | Refund ...
Everything in the AidaPay app, through one API.
Data bundles
6 live providers · GET /service/data-bundle-sme
Airtime
4 live providers · GET /service/airtime-topup
Electricity tokens
11 live providers · GET /service/meter-token
Cable TV
3 live providers · GET /service/cable-tv-subscription
Exam PINs (WAEC, JAMB)
1 live provider · GET /service/education
Agent cashback on every sale.
API accounts earn agent rates. Today's cheapest plan on each network, and what the API pays you on it:
Every provider and your personal rates are returned by GET /pricing. See all data prices.
Four steps to your first sale.
Everything happens in the AidaPay Business dashboard.
- Verify your identityComplete BVN and NIN verification to reach Level 3 under Settings → Upgrade & Limits.
- Generate your API tokenSettings → API Settings: create your token, add your webhook URL and, ideally, whitelist your server IPs.
- Fund your walletGenerate a virtual bank account under Deposits and fund it by bank transfer.
- Start buildingCall the endpoints with your Bearer token. The webhook simulator lets you test your handler before real traffic.
Small, predictable, REST.
Base URL https://aidapay.ng/api/v1. JSON in, JSON out, Bearer token on every call.
/my_accountYour account and wallet balance/service/{slug}Live providers for a service/packages/{provider_code}Data plans and TV bouquets for a provider/validation/{provider_code}/{recipient}Check a meter, smartcard or number before you sell/buyBuy data, airtime, a token or a subscription/transaction/{transaction_hash}Status of one transaction (or pass your ref)/requeryAsk the provider again for a pending transaction/pricingEvery provider, package and your commissionRequest fields, responses, errors and a live console are in the full API reference.
Safe to run at scale.
Signed webhooks
Every status change is pushed to you with an HMAC-SHA256 Signature header, so nobody can fake a "Completed".
IP whitelisting
Lock your token to your own servers. A leaked token is useless anywhere else.
No double charges
Each purchase carries your unique ref, so a network retry can never buy twice.
One key, every service
The same API token buys data, airtime, electricity and cable TV, all paid from one wallet.
Exact outcomes
Completed, Processing, Pending, Refund or Cancelled - with tokens, PINs and units included where they apply.
24/7 support
Real people in your dashboard, any time a transaction needs a second look.
VTU API: your questions answered.
Full request and response details are in the API reference. New to VTU? Read what VTU is and how the business works.