Data plans
List available bundles for a network before calling Transactions with product: "data".
GET /ext/breeze/v1/plans/{network}Supported {network} values: mtn, glo, airtel, 9mobile.
curl "https://staging-intelligent-70287b6a3284.herokuapp.com/ext/breeze/v1/plans/mtn" \
-H "X-Merchant-Key: mk_live_your_key_id" \
-H "X-Merchant-Secret: sk_live_your_secret"Response
Each plan includes a stable plan_code (recommended for purchases), plus legacy fields such as id and tarrifTypeId.
{
"status": "2000",
"description": "Operation Successful-MTN",
"data": [
{
"id": 8,
"plan_code": "MTN-8",
"name": "1GB Daily Plan + 1.5mins",
"description": "1GB Daily Plan + 1.5mins",
"price": "500",
"tarrifTypeId": "18",
"validity": "1 Day",
"value": "1GB",
"group": "daily",
"shortCode": "1GB-N500"
}
]
}| Field | Description |
|---|---|
plan_code | Recommended purchase reference, e.g. MTN-8, GLO-1, AIRTEL-1, 9MOBILE-1 |
id | Catalog index (still returned; legacy clients may use this on GLO/Airtel) |
tarrifTypeId | Telco tariff/product id (informational; legacy MTN clients may still send this) |
price | Plan price in Naira |
shortCode | Human-readable code (also accepted on purchase) |
Buy data
Pass plan_code from the list in your data transaction:
{
"merchant_code": "YOUR_MERCHANT",
"customer_msisdn": "2348012345678",
"network": "mtn",
"product": "data",
"amount": "500",
"client_request_id": "req-20260517-002",
"plan_code": "MTN-8"
}amount should match the plan price from the catalog.
Legacy values (still supported)
Existing integrations do not need to change immediately.
| Network | Legacy plan_code / plan values still accepted |
|---|---|
| MTN | Raw tariff type id, e.g. "18" (bare numbers are treated as tariff ids, not catalog ids) |
| GLO | Catalog id, e.g. "2", or product id, e.g. "DATA-401" |
| Airtel | Catalog id or tarrifTypeId, e.g. "1" |
| 9mobile | Catalog id or plan_code; vending is amount-based at the telco |
For new MTN integrations, always use prefixed codes like MTN-8 instead of bare numbers — e.g. MTN-34 (500MB plan) vs "34" (legacy tariff id).
Internal API
The authenticated internal API uses the same catalog but the purchase field is named plan (not plan_code):
GET /plans/{network}
POST /transactions → { "plan": "MTN-8", ... }Last updated on