Airtime and Data Purchase

We support all major mobile operators in Nigeria and you could earn a commission from us when you sell Airtime or data to your customers.

📘

Mobile Operators

MTN, Airtel, 9mobile and Glo

To get started making airtime and data on Paga, you’ll need to ensure your Paga account is funded for each operation you’re about to perform.

Step for making Airtime and Data Purchase:

👍

Demo

Let’s demo the steps below for making Airtime Payment for MTN:

Step 1: Fetch Mobile Operator

You’ll need to fetch the list of the available mobile operator to get their respective identifiers (UUID).

See sample request below

referenceNumber: A unique reference number provided by the business, identifying the operation. hashIndex-1

POST /paga-webservices/business-rest/secured/getMobileOperators HTTP/1.1
Host: mypaga.com
Content-Type: application/json
principal: 93A5E317-738220032-94DE-50BA4B653EE5
credentials: fS4*tfgyhjklokk+QvTq%WE
hash:  69cdcaaee22e0491d83602e8ab15ebb2a70c3657803af0bd7e786cf529c5f9a210f1a5bfdefa2d3bbcbc786b1b65a5b29a65acfdea8b062fc91f3f689db41640
Content-Length: 39

{ 
    "referenceNumber": "123457679"
}

Sample Response

{
    "responseCode": 0,
    "responseCategoryCode": null,
    "message": null,
    "referenceNumber": "123457679",
    "mobileOperator": [
        {
            "name": "GLO",
            "mobileOperatorCode": "B6780465-FEC4-4743-ACDE-9101E2991806"
        },
        {
            "name": "MTN",
            "mobileOperatorCode": "42419156-DD57-4737-8373-20678CD9AA29"
        },
        {
            "name": "Airtel",
            "mobileOperatorCode": "ACCF5E64-8FB2-47FF-9833-39EF482A6747"
        },
        {
            "name": "9Mobile",
            "mobileOperatorCode": "8FCC90BA-D339-4EA8-811F-55F1651A9FAB"
        }
    ]
}

Step 2: Fetch Data Bundle for each operator

If you're planning to do a data purchase you'll need the list of data packages offered by the respective mobile operator, this steps will be required to fetch the list of data services and the respective service ID for the data service.

Sample Request:

referenceNumber: A unique reference number provided by the business, identifying the operation. - hashIndex-1
operatorPublicID: The mobile operator code fetched from the Get Mobile operator in step 1 above - hashIndex-2

POST /paga-webservices/business-rest/secured/getDataBundleByOperator HTTP/1.1
Host: mypaga.com
Content-Type: application/json
principal: 93A5E317-738220032-94DE-50BA4B653EE5
credentials: fS4*tfgyhjklokk+QvTq%WE
hash:  69cdcafgh22e0491d83602e8ab15ebb2a70c3657803af0bd7e786cf529c5f9a210f1a5bfdefa2d3bbcbc786b1b65a5b29a65acfdea8b062fc91f3f689db41640
Content-Length: 105

{ 
    "referenceNumber": "11314250", 
    "operatorPublicId": "42419156-DD57-4737-8373-20678CD9AA29"
}

Sample Response:

services.name: Name of the services as identified by the biller
services.code: The code name for the biller services, this will be used in subsequent job in step 3 and 4 below to identify the services
services.price: The applicable prices for the services, this will be used in subsequent
service.shortCode: This code identify the services but won’t be needed in subsequent requests.

{
    "responseCode": 0,
    "responseCategoryCode": null,
    "message": null,
    "mobileOperatorServices": [
        {
            "mobileOperatorId": 6,
            "servicePrice": 50.0,
            "serviceName": "2GO_WeeklyPlan_7days\n",
            "serviceId": 166
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 100.0,
            "serviceName": "MTN100MB(24HRS)",
            "serviceId": 70
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 150.0,
            "serviceName": "2GO_MonthlyPlan_160MB-N150",
            "serviceId": 167
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 200.0,
            "serviceName": "MTN200MB(2Days)",
            "serviceId": 71
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 300.0,
            "serviceName": "MTN350MB(7DAYS)",
            "serviceId": 84
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 300.0,
            "serviceName": "MTN1GB(24HRS)",
            "serviceId": 141
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 300.0,
            "serviceName": "MTNXTRATALK300(7days)",
            "serviceId": 180
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 300.0,
            "serviceName": "MTNXTRADATA300MB(7days)",
            "serviceId": 188
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 500.0,
            "serviceName": "MTNXTRADATA750MB(7days)",
            "serviceId": 189
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 500.0,
            "serviceName": "MTNXTRATALK500(7days)",
            "serviceId": 181
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 500.0,
            "serviceName": "Data Plan 750MB 2-Week Plan",
            "serviceId": 140
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 500.0,
            "serviceName": "MTN2.5GB(48HRS)",
            "serviceId": 142
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 500.0,
            "serviceName": "MTN1GB(7Days)",
            "serviceId": 158
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 1000.0,
            "serviceName": "MTN1.5GB(30DAYS)",
            "serviceId": 73
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 1000.0,
            "serviceName": "MTNXTRATALK1000(30days)",
            "serviceId": 182
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 1000.0,
            "serviceName": "MTNXTRADATA1.5GB(30days)",
            "serviceId": 190
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 1200.0,
            "serviceName": "MTN2GB(30DAYS)",
            "serviceId": 88
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 1500.0,
            "serviceName": "MTN6GB(7Days)",
            "serviceId": 159
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 1500.0,
            "serviceName": "MTN3GB(30days)",
            "serviceId": 169
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 2000.0,
            "serviceName": "MTNXTRATALK2000(30days)",
            "serviceId": 183
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 2000.0,
            "serviceName": "MTN4.5GB(30DAYS)",
            "serviceId": 74
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 2000.0,
            "serviceName": "MTNXTRADATA4.5GB(30days)",
            "serviceId": 191
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 2500.0,
            "serviceName": "MTN6GB(30Days)",
            "serviceId": 160
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 3000.0,
            "serviceName": "MTN10GB(30DAYS)",
            "serviceId": 220
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 3500.0,
            "serviceName": "MTN12GB(30DAYS)",
            "serviceId": 85
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 5000.0,
            "serviceName": "MTN20GB(30DAYS)",
            "serviceId": 75
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 5000.0,
            "serviceName": "MTNXTRATALK5000(30days)",
            "serviceId": 184
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 5000.0,
            "serviceName": "MTNHyNetFlexBronze30GB(7days)",
            "serviceId": 232
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 5000.0,
            "serviceName": "MTNXTRADATA15GB(30days)",
            "serviceId": 192
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 6000.0,
            "serviceName": "MTN25GB(30days)",
            "serviceId": 170
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 8000.0,
            "serviceName": "MTNHyNetFlex30GB(30days)",
            "serviceId": 224
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 8000.0,
            "serviceName": "MTN2MonthsPlan30GB",
            "serviceId": 208
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 10000.0,
            "serviceName": "MTNSME25GB(30days)",
            "serviceId": 238
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 10000.0,
            "serviceName": "MTNXTRADATA30GB(30days)",
            "serviceId": 193
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 10000.0,
            "serviceName": "MTNXTRATALK10000(30days)",
            "serviceId": 185
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 10000.0,
            "serviceName": "MTN40GB(30DAYS)",
            "serviceId": 76
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 11000.0,
            "serviceName": "MTNHyNetFlex45GB(30days)",
            "serviceId": 225
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 13500.0,
            "serviceName": "MTNSME35GB(30days)",
            "serviceId": 239
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 13500.0,
            "serviceName": "MTN30GB(N13500)",
            "serviceId": 164
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 15000.0,
            "serviceName": "MTNXTRATALK15000(30days)",
            "serviceId": 186
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 15000.0,
            "serviceName": "MTN75GB(30DAYS)",
            "serviceId": 143
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 15000.0,
            "serviceName": "MTNXTRADATA50GB(30days)",
            "serviceId": 194
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 18000.0,
            "serviceName": "MTNHyNetFlex100GB(30days)",
            "serviceId": 226
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 20000.0,
            "serviceName": "MTNXTRADATA70GB(30days)",
            "serviceId": 195
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 20000.0,
            "serviceName": "MTNHyNetFlexSilver130GB(30days)",
            "serviceId": 233
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 20000.0,
            "serviceName": "MTN75GB60DAYS",
            "serviceId": 144
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 20000.0,
            "serviceName": "MTN110GB(30Days)",
            "serviceId": 162
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 20000.0,
            "serviceName": "MTNXTRATALK20000(30days)",
            "serviceId": 187
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 25000.0,
            "serviceName": "MTNHyNetFlex200GB(30days)",
            "serviceId": 227
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 30000.0,
            "serviceName": "MTNHyNetFlexRuby250GB(30days)",
            "serviceId": 234
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 30000.0,
            "serviceName": "MTN120GB60DAYS",
            "serviceId": 90
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 36000.0,
            "serviceName": "MTNHyNetFlex300GB(60days)",
            "serviceId": 228
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 40000.0,
            "serviceName": "MTN90GB(N40,000)",
            "serviceId": 163
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 45000.0,
            "serviceName": "MTNHyNetFlex400GB(90days)",
            "serviceId": 229
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 45000.0,
            "serviceName": "MTNHyNetFlexGold500GB(30days)",
            "serviceId": 235
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 50000.0,
            "serviceName": "MTNSME165GB(60days)",
            "serviceId": 240
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 50000.0,
            "serviceName": "MTN150GB90DAYS",
            "serviceId": 145
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 60000.0,
            "serviceName": "MTNHyNetFlexPlatinum800GB(30days)",
            "serviceId": 236
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 65000.0,
            "serviceName": "SMEN65000for150GB",
            "serviceId": 209
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 75000.0,
            "serviceName": "MTN250GB90DAYS\t",
            "serviceId": 146
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 90000.0,
            "serviceName": "MTNHyNetFlex1TB(180days)",
            "serviceId": 230
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 100000.0,
            "serviceName": "MTN325GB(180Days)",
            "serviceId": 223
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 100000.0,
            "serviceName": "MTNSME360GB(90days)",
            "serviceId": 241
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 120000.0,
            "serviceName": "MTN400GB(1year)",
            "serviceId": 172
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 150000.0,
            "serviceName": "MTNHyNetFlex2TB(1year)",
            "serviceId": 231
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 165000.0,
            "serviceName": "MTNHyNetFlexUnlimited2.5TB(180days)",
            "serviceId": 237
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 250000.0,
            "serviceName": "MTN1000GB(1year)",
            "serviceId": 173
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 300000.0,
            "serviceName": "MTN1TB(1year)",
            "serviceId": 171
        },
        {
            "mobileOperatorId": 6,
            "servicePrice": 450000.0,
            "serviceName": "MTN1500GB(1year)",
            "serviceId": 174
        }
    ]
}

Step 3: Make Airtime or Data Purchase

At this point, you're ready to make the payment for the Airtime or Data purchase. Provide all mandatory parameters as shown below

referenceNumber: A unique reference number provided by the business, identifying the transaction. - HashIndex-1
Amount - The amount due on the service you're purchasing - Hashindex-2
currency - NGN for Nigeria-based merchants
destinationPhoneNumber: The designated phone number that will receive the airtime or Data purchase - Hashindex-3
isDataBundle: This param is used to specify whether the operation is an Airtime purchase or Data purchase, where the intended operation is for Data purchase, parse the value as true, else false. The default value is false, where the param is not specified all purchases will be Airtime
mobileOperatorServiceId: This param is the serviceId generated from Step 2 response above, this parameter is only relevant when the operation is Data Purchase and isDataBundle specified as true

POST /paga-webservices/business-rest/secured/merchantPayment HTTP/1.1
Host: mypaga.com
Content-Type: application/json
principal: 93A5E317-738220032-94DE-50BA4B653EE5
credentials: fS4*tfgyhjklokk+QvTq%WE
hash:  69cdcafgh22e0491d83602e8ab15ebb2a70c3657803af0bd7e786cf529c5f9a210f1a5bfdefa2d3bbcbc786b1b65a5b29a65acfdea8b062fc91f3f689db41640
Content-Length: 234

{
    "referenceNumber": "00000024",
    "amount": "50",
    "currency": "NGN",
    "destinationPhoneNumber": "08063333187",
    "isDataBundle": true,
    "mobileOperatorServiceId": "166"
}

Sample Response

{
    "responseCode": 0,
    "responseCategoryCode": null,
    "message": "You successfully purchased N50.00 worth of data for phone number 08063333187.TRANSACTION Id: FMJFH.",
    "referenceNumber": "00000024",
    "transactionId": "FMJFH",
    "currency": "NGN",
    "exchangeRate": null,
    "fee": null
}

Check Transaction Status

Airtime and Data Purchase operation is a synchronous operation and we've successfully made your purchase, however, we advise all integrators to reconfirm their purchase. This is a best practice all partners are encouraged to adhere to always

referenceNumber: A unique reference number provided by the business, identifying the transaction. - HashIndex-1

POST /paga-webservices/business-rest/secured/transactionStatus HTTP/1.1
Host: mypaga.com
Content-Type: application/json
principal: 93A5E317-738220032-94DE-50BA4B653EE5
credentials: fS4*tfgyhjklokk+QvTq%WE
hash:  69cdcaaee22e0491d83602e8ab15ebb2a70c3657803af0bd7e786cf529c5f9a210f1a5bfdefa2d3bbcbc786b1b65a5b29a65acfdea8b062fc91f3f689db41640
Content-Length: 39

{ 
    "referenceNumber": "00000024"
}

Sample response

{
    "responseCode": 0,
    "responseCategoryCode": null,
    "message": null,
    "referenceNumber": "00000024",
    "currency": "NGN",
    "status": "SUCCESSFUL",
    "transactionReference": "SAPP_20220611135704399_347643537_FMJFH_srfnh",
    "transactionId": "FMJFH",
    "transactionType": "SELL_AIRTIME_PRE_PAID",
    "dateUTC": 1654952224400,
    "amount": 50.0,
    "merchantTransactionReference": "2022061113570496706900780",
    "exchangeRate": null,
    "fee": 0.0,
    "integrationStatus": "SUCCESS",
    "commissionEarned": 0.0,
    "additionalProperties": null
}

What’s Next