VAS (Bill payments)
Base path:/api/v1/merchant/vas
Scopes: vas:read, vas:write. Money-moving writes require Idempotency-Key.
Settlements are NGN by default — do not send a currency field unless documented.
Typical flow
- List billers — discover providers, plans, or eSIM destinations/packages.
- Validate (cable / electricity) — confirm smart card or meter before purchase.
- Purchase — call the matching write endpoint (airtime, data, cable, electricity, betting, internet, or eSIM).
- Get VAS transaction — poll status with the returned transaction id.
eSIM (same VAS API)
eSIM is part of VAS, not a separate product API.1
List destinations
GET /vas/billers?category=esim → data.esim.locations[]. Each location has a locationCode (ISO country code, e.g. NG, ES).2
List packages for a country
GET /vas/billers?category=esim&locationCode=NG → data.esim.packages[]. Each package has a price in USD. Use the package’s UUID id (not packageCode).3
Purchase
POST /vas/esim with packageId set to that UUID, plus customer details and deviceType.locationCode is eSIM-only. Ignore it for airtime, data, cable, electricity, betting, and internet.
Regional codes like EU-42 currently return no packages. Multi-country bundles (e.g. Europe, Global) are currently listed under one country they cover — e.g. Europe bundles appear under NO.
