Introduction Last Updated: 22-06-2023

The WisePay API is a RESTful API that allows you to integrate bills payment services available on the WisePay platform on your application. The API is built using restful endpoints, standard HTTP verbs which uses standard HTTP response codes to indicate if an API request is successful or not.

Services available on the WisePay API include:
  • DATA
  • AIRTIME
  • CABLE
  • ELECTRICITY
  • INTERNET
  • BULKSMS
  • BET FUNDING
  • EDUCATIONAL CARD
  • RECHARGE CARD

Information

Do you need help with integration?

Note

Do you need help with your integration or do you need to ask questions? Kindly create a skype group and add our skype developer account

Environment

WisePay makes use of two base API endpoint for both sandbox/development and production environment to communicate with our API's

Environment Purpose Base URL
Sandbox/development The sandbox/development environment is used majorly during the product development phase. Note - every single transaction that happens via the sandbox will not. involve real money. No actual value will be spent. Coming Soon!!! https://wisepay.com.ng/api/test
Production The production environment is used when the product is about to go live and ready to be used by the general public. https://wisepay.com.ng/api/live

Note

We recommend storing these credentials in environment variables or using a key management tool to keep track of them. You could use one of the following: AWS Secret Manager, HashiCorp Vault, Azure Secret Manager, and so on.

API Keys & Authorization

API Keys

Every API request to WisePay's endpoints must include an API key If you do not include an API key with your request, or if you use an incorrect or outdated key, WisePay will reject it and return an error.

WisePay offers two types of keys: test keys and live keys. When you're ready to go live, use your test keys in your sandbox or development environment, and your live keys when you're ready to go live.

When you sign up for WisePay, your API keys are generated automatically. To obtain your keys, please go to the dashboard, click on the Account Settings link, and look for your API key under the API & Webhook tabs.

You will see two api key, the one to use will be dependent on the state of your application

Authorization

Every communication with an API will require the API key, which must be sent via a header 'Authorization'. We strongly advise you to keep your API key on your own server and only make it available to team members who absolutely need to have it.

See the code sample below for an example.

curl --location --request POST {{baseUrl}}/v1/load/wallet-balance \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
       '{
          "email":  "{{email}}" 
        }'
Security

While we strongly recommend you to keep your keys private, we recognize that bad things do happen. If your key has been compromised or you suspect something has gone wrong, we strongly advise you to generate a new key right away. When you generate a new key, all previous keys become invalid, and WisePay will not honor requests sent with those keys.

Errors

For all of our transactions, WisePay employs standard HTTP response codes. The error codes range from the 200s to the 500s. Success is indicated by HTTP response codes in the 2xx range. Depending on the action taken, we will typically send you a 200 or a 201. Those in the 4xx range indicate an error that was not detected based on the information provided (e.g., a required parameter was omitted or access is denied from a resource etc.). Error codes in the 5xx range indicate a problem on our end (we are humans after all). See below:

Code Meaning What happened
200 OK Everything is fine. You're cleared for take off.
201 Created Everything is still fine, but this time around, we created a resource for you on our end. We are kind like that.
401 Unauthorized You didn't provide a valid API key.
409 Conflict The request conflicted with another one. There's a high likelihood that we have already treated this request.
424 Failed Ouch! We couldn't accept this request, you omitted a required parameter or it's an outright failure from us. Don't break a sweat, reconfirm, again.
429 Too Many Request You're hitting our API too quickly. Pump your breaks, captain.
5xx Server Error We messed up and we are sorry 😞, We advise that you check that you have not been debited for the transaction

Getting started

To begin using WisePay as your preferred By Now, Bill Payment solution, you must first create an account. Simply register via the our platform. When you're finished, log-on into your account, go to the account settings page, check the API & Webhook tabs, and copy your WisePay api key. We'll be needing it soon. To begin integrating WisePay as a customer, simply place your API key in the header section of your request. When you finish this process, you'll be halfway there.

Information

Do you need help with integration?

Note

Do you need help with your integration or do you need to ask questions? Kindly create a skype group and add our skype developer account

Get Wallet Balance

Authorization

Every communication with an API will require the API key. Learn more about our Authorization here

Query Wallet Balance

This endpoint allows you to query your wallet balance, it returns a json array

{{baseUrl}}/v1/load/wallet-balance

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/load/wallet-balance \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
       '{
          "email":  "{{email}}"
        }'
Sample Response Code

           {
                "status": true,
                "code": 200,
                "data": {
                    "product": {
                        "wallet": "82318.60"
                    }
                }
            }
        

Buy Data

Authorization

Every communication with an API will require the API key. Learn more about our Authorization here

Endpoint Available Under This Section

To integrate the WisePay Buy Data API, the endpoints below applies:

  • Get Networks: This endpoint allows you to query all the networks that we have. It returns json array for networks.
  • Get Data Types: (Using the "networkId" gotten in the first step), this endpoint allows you to query all the data types that we have. It returns json array for data types.
  • Get Data Plans: (Using the "networkId" & "dataType" gotten in the first and second step above), this endpoint allows you to query all the data plans that we have. It returns json array for data plans.
  • Purchase Data: (Using the "networkId", "dataType", "planId" gotten in the first, second, third step above, and other parameters that will be shown below under purchase data), this endpoint allows you to shoot your "buy data products" request to our system. It returns json array for "Buy Data.
Get Networks

This endpoint allows you to query all the networks that we have. It returns json array for networks.

{{baseUrl}}/v1/topup/load/networks

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/networks \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
        '{
          "networks":  "all"
         }'
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "product": [
                    {
                        "network": "MTN",
                        "networkId": 1
                    },
                    {
                        "network": "AIRTEL",
                        "networkId": 2
                    },
                    {
                        "network": "GLO",
                        "networkId": 3
                    },
                    {
                        "network": "9MOBILE",
                        "networkId": 4
                    }
                ]
            }
        }
    
Get Data Types

This endpoint allows you to query all the data types that we have. It returns json array for data types.

{{baseUrl}}/v1/topup/load/data-types

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/data-types \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "network": "1"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "product": [
                    {
                        "network": "MTN",
                        "networkId": 1,
                        "name": "SME"
                    },
                    {
                        "network": "MTN",
                        "networkId": 1,
                        "name": "CORPORATE GIFTING"
                    },
                    {
                        "network": "MTN",
                        "networkId": 1,
                        "name": "DIRECT GIFTING"
                    },
                    {
                        "network": "MTN",
                        "networkId": 1,
                        "name": "NORMAL GIFTING"
                    }
                ]
            }
        }
    
Get Data Plans

This endpoint allows you to query all the data plans that we have. It returns json array for data plans.

{{baseUrl}}/v1/topup/load/data

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/data \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "network": "1",
                "dataType": "SME"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "product": [
                    {
                        "network": "MTN",
                        "planName": "500MB SME 30DAYS",
                        "planId": "500MB_SME",
                        "price": "100",
                        "status": "AVAILABLE"
                    },
                    {
                        "network": "MTN",
                        "planName": "1GB SME",
                        "planId": "1GB_SME",
                        "price": "100",
                        "status": "AVAILABLE"
                    },
                    {
                        "network": "MTN",
                        "planName": "2GB SME",
                        "planId": "2GB_SME",
                        "price": "99",
                        "status": "NOT AVAILABLE"
                    }
                ]
            }
        }
    
Purchase Data

This endpoint allows you to shoot your "buy data products" request to our system. It returns json array for "Buy Data.

{{baseUrl}}/v1/topup/data

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/data \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "network": "1",
                "dataType": "SME",
                "planId": "500MB_SME",
                "phone": "081663****2",
                "reference": "202306131214-WPY"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "message": "Dear Customer, You have successfully shared 500MB Data to 23481663****2. 9961.07 31\\/08\\/2023. Thankyou",
                "reference": "WPY20232806094208VBLWM308"
            },
            "time": "2023-28-06 09:42:16"
        }
    

Buy Airtime

Authorization

Every communication with an API will require the API key. Learn more about our Authorization here

Endpoint Available Under This Section

To integrate the WisePay Buy Airtime API, the endpoints below applies:

  • Get Networks: This endpoint allows you to query all the networks that we have. It returns json array for networks.
  • Get Airtime Types: (Using the "networkId" gotten in the first step), this endpoint allows you to query all the airtime types that we have. It returns json array for airtime types.
  • Get Airtime Rate: (Using the "networkId" & "airtimeType" gotten in the first and second step above), this endpoint allows you to query all the airtime rate that we have. It returns json array for airtime rate.
  • Purchase Airtime: (Using the "networkId", "airtimeType", gotten in the first, second step above, and other parameters that will be shown below under purchase airtime), this endpoint allows you to shoot your "buy airtime products" request to our system. It returns json array for "Buy airtime.
Get Networks

This endpoint allows you to query all the networks that we have. It returns json array for networks.

{{baseUrl}}/v1/topup/load/networks

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/networks \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
        '{
          "networks":  "all"
         }'
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "product": [
                    {
                        "network": "MTN",
                        "networkId": 1
                    },
                    {
                        "network": "AIRTEL",
                        "networkId": 2
                    },
                    {
                        "network": "GLO",
                        "networkId": 3
                    },
                    {
                        "network": "9MOBILE",
                        "networkId": 4
                    }
                ]
            }
        }
    
Get Airtime Types

This endpoint allows you to query all the airtime types that we have. It returns json array for airtime types.

{{baseUrl}}/v1/topup/load/airtime-types

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/airtime-types \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "network": "1"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "product": [
                    {
                        "network": "MTN",
                        "networkId": 1,
                        "name": "VTU"
                    },
                    {
                        "network": "MTN",
                        "networkId": 1,
                        "name": "SNS"
                    },
                    {
                        "network": "MTN",
                        "networkId": 1,
                        "name": "AWOOF4U"
                    },
                    {
                        "network": "MTN",
                        "networkId": 1,
                        "name": "GARABASA"
                    }
                ]
            }
        }
    
Get Airtime Rates

This endpoint allows you to query all the airtime plans that we have. It returns json array for airtime plans.

{{baseUrl}}/v1/topup/load/airtime-rate

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/airtime-rate \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "network": "2",
                "airtimeType": "VTU"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "product": {
                    "rate": "100%"
                }
            }
        }
    
Purchase Airtime

This endpoint allows you to shoot your "buy airtime products" request to our system. It returns json array for "Buy Airtime".

{{baseUrl}}/v1/topup/airtime

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/airtime \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "network": "1",
                "airtimeType": "VTU",
                "amount": "10",
                "phone": "08166327382",
                "reference": "202306281235-DWPY"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "message": "Successfully Submitted",
                "reference": "WPY202328061236344C0YP834"
            },
            "time": "2023-28-06 12:36:41"
        }
    

Cable TV Subscription

Authorization

Every communication with an API will require the API key. Learn more about our Authorization here

Endpoint Available Under This Section

To integrate the WisePay Cable TV API, the endpoints below applies:

  • Get Cable Types: This endpoint allows you to query all the Cables that we have. It returns json array for Cables.
  • Get Cable Packages: (Using the "cableId" gotten in the first step), this endpoint allows you to query all the cable packages that we have. It returns json array for cable packages.
  • Validate SmartCardNo: This endpoint allows you to validate SMARTCARD or IUC number. It returns json array for the validated details.
  • Cable TV Subscription: (Using the "cableId", "packageId", gotten in the first, second step above, and other parameters that will be shown below under Cable TV Subscription), this endpoint allows you to shoot your "Cable TV Subscription" request to our system. It returns json array for "Cable TV Subscription.
Get Cable Types

This endpoint allows you to query all the cables that we have. It returns json array for cable.

{{baseUrl}}/v1/topup/load/cable-types

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/cable-types \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "cables": "all"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "product": [
                    {
                        "cable": "DSTV",
                        "cableId": 1
                    },
                    {
                        "cable": "STARTIMES",
                        "cableId": 2
                    },
                    {
                        "cable": "GOTV",
                        "cableId": 3
                    }
                ]
            }
        }
    
Get Cable Packages

This endpoint allows you to query all the cable packages that we have. It returns json array for cable packages.

{{baseUrl}}/v1/topup/load/cable-packages

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/cable-packages \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "cableId": "2"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "product": [
                    {
                        "packageId": "1",
                        "cable": "GOTV",
                        "cableId": 3,
                        "name": "GOTV SMALLIE",
                        "price": "1100"
                    },
                    {
                        "packageId": "2",
                        "cable": "GOTV",
                        "cableId": 3,
                        "name": "GOTV JINJA",
                        "price": "2250"
                    },
                ]
            }
        }
    
Validate Smartcard or Iuc Number

This endpoint allows you to validate SMARTCARD or IUC number. It returns json array for the validated details.

{{baseUrl}}/v1/topup/validate/smartcard-no

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/validate/smartcard-no \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "cableId": "2",
                "smartCardNo": "01467******"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "validate": {
                    "customerName": "A***DE DA****",
                    "dueDate": "June 14th, 2023",
                    "currentPackage": "GOTV JOLLI N2,800",
                    "renewalAmount": 3280,
                    "status": "SUSPENDED"
                }
            }
        }
    
Cable TV Subscription

This endpoint allows you to shoot your "subscribe cable TV products" request to our system. It returns json array for "cable TV".

The key "topupAmount" Should not be added to your payload by default, NOTE: the key is optional.
If you add the "topupAmount" key, we will topup the decoder with the topupAmount specified.
If you do not add the "topupAmount", then we will use the price set for the package based on packageId.

{{baseUrl}}/v1/topup/cable

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/cable \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
        With topupAmount
            {
                "cableId": "2",
                "packageId": "1",
                "topupAmount": "100",
                "smartCardNo": "014***7*46",
                "reference": "202306140704-WPY"
            }

        Without topupAmount
            {
                "cableId": "2",
                "packageId": "1",
                "smartCardNo": "014***7*46",
                "reference": "202306140704-WPY"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "message": "Success! Your cable purchase was successful!",
                "reference": "WPY20232806015819AUQQZ719"
            },
            "time": "2023-28-06 01:58:21"
        }
    

Electricity Recharge

Authorization

Every communication with an API will require the API key. Learn more about our Authorization here

Endpoint Available Under This Section

To integrate the WisePay Electricity Recharge API, the endpoints below applies:

  • Get Disco Types: This endpoint allows you to query all the Discos that we have. It returns json array for Discos.
  • Get Meter Types: This endpoint allows you to query all the Meter Types that we have. It returns json array for Meter Types.
  • Get Electricity Rate: This endpoint allows you to query all the electricity rate that we have. It returns json array for electricity rate.
  • Validate meterNo: This endpoint allows you to validate METER number. It returns json array for the validated details.
  • Electricity Recharge: (Using the "discoType", "meterType", gotten in the first, second step above, and other parameters that will be shown below under Electricity Recharge), endpoint allows you to shoot your "Electricity Recharge products" request to our system. It returns json array for "Electricity Recharge".
Get Disco Types

This endpoint allows you to query all the Discos that we have. It returns json array for Discos.

{{baseUrl}}/v1/topup/load/electricity-disco-types

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/electricity-disco-types \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "discoTypes": "all"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "product": [
                    {
                        "discoType": "IKEDC",
                        "name": "Ikeja Electric",
                        "discoTypeId": 1
                    },
                    {
                        "discoType": "EKEDC",
                        "name": "Eko Electric",
                        "discoTypeId": 2
                    }
                ]
            }
        }
    
Get Meter Types

This endpoint allows you to query all the Meter Types that we have. It returns json array for Meter Types.

{{baseUrl}}/v1/topup/load/electricity-meter-types

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/electricity-meter-types \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "meterTypes": "all"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "product": [
                    {
                        "meterType": "PREPAID",
                        "meterTypeId": 1
                    },
                    {
                        "meterType": "POSTPAID",
                        "meterTypeId": 2
                    }
                ]
            }
        }
    
Get Electricity Rate

This endpoint allows you to query all the electricity rate that we have. It returns json array for electricity rate.

{{baseUrl}}/v1/topup/load/electricity-rates

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/electricity-rates \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "discoType": "IBEDC"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "product": {
                    "rate": "97"
                }
            }
        }
    
Validate Meter Number

This endpoint allows you to validate METER number. It returns json array for the validated details.

{{baseUrl}}/v1/topup/validate/meter-no

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/validate/meter-no \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "discoType": "IKEDC",
                "meterType": "PREPAID",
                "meterNo": "0427****036"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "validate": {
                    "customerName": "AB***OLA ADE***IN OD***YE",
                    "Address": "2 OL***SI IFA*****IYE",
                    "meterNo": "0427****036",
                    "CustomerArrears": "",
                    "MinimumAmount": 4.93,
                    "MinPurchaseAmount": 4.93,
                    "MeterType": "PREPAID"
                }
            }
        }
    
Electricity Recharge

This endpoint allows you to shoot your "Electricity Recharge products" request to our system. It returns json array for "Electricity Recharge".

{{baseUrl}}/v1/topup/electricity

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/electricity \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "discoType": "IBEDC",
                "meterType": "PREPAID",
                "meterNo": "623****2436",
                "amount": "100",
                "phone": "0816*****82",
                "reference": "202306151021-WPY"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "message": "Success! Your electricity purchase was successful!",
                "reference": "WPY20231506095916",
                "token": "0525  9760  6416  0213  5178  ",
                "tokenUnit": "1.33kwH"
            },
            "time": "2023-15-06 09:59:29"
        }
    

Bulksms

Authorization

Every communication with an API will require the API key. Learn more about our Authorization here

Endpoint Available Under This Section

To integrate the WisePay Bulksms API, the endpoints below applies:

  • Get Bulksms & Types: This endpoint allows you to query all the Bulksms Types and Price that we have. It returns json array for Bulksms.
  • Send Bulksms: (Using the "BulksmsType", gotten in the first, step above, and other parameters that will be shown below under Bulksms), endpoint allows you to shoot your "Bulksms products" request to our system. It returns json array for "Bulksms".
Get Bulksms & Types

This endpoint allows you to query all the Bulksms Types and Price that we have. It returns json array for Bulksms.

{{baseUrl}}/v1/load/bulksms-types-with-price

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/load/bulksms-types-with-price \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "bulksmsTypes": "all"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "product": [
                    {
                        "smsType": "Normal SMS",
                        "smsTypeId": 1,
                        "price": "₦3.00",
                        "status": "AVAILABLE"
                    },
                    {
                        "smsType": "Flash SMS",
                        "smsTypeId": 2,
                        "price": "₦3.00",
                        "status": "AVAILABLE"
                    },
                    {
                        "smsType": "Unicode SMS (Arabic, Chinese etc)",
                        "smsTypeId": 3,
                        "price": "₦3.00",
                        "status": "AVAILABLE"
                    }
                ]
            }
        }
    
Send Bulksms

This endpoint allows you to shoot your "Bulksms products" request to our system. It returns json array for "Bulksms".

"senderId:" Minimum of 3 char and maximum of 11 char for alphanumerical and maximum of 16 char for numerical
"message:" Minimum of 1 char and maximum of 905 char
"phone:" Minimum of 11. Separate with comma if you are sending to multiple recipients (e.g 0802233*,080398*)

{{baseUrl}}/v1/send/bulksms

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/send/bulksms \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "bulksmsTypeId": "2",
                "senderId": "WisePay",
                "message": "SMEC WE ARE TESTIFFFFNGgg SMR",
                "phone": "0816****382,0902****608",
                "reference": "202306161016-WPY"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "message": "Success! Your bulk sms was sent successful!",
                "reference": "WPY20232806033149Y5WSUG49"
            },
            "time": "2023-28-06 03:32:01"
        }
    

Buy Internet Data

Authorization

Every communication with an API will require the API key. Learn more about our Authorization here

Endpoint Available Under This Section

To integrate the WisePay Buy Internet Data API, the endpoints below applies:

  • Get Internet Types: This endpoint allows you to query all the Internet types that we have. It returns json array for internet types.
  • Get Internet Data Plans: (Using the "internetTypeId" gotten in the first step above), this endpoint allows you to query all the internet data plans that we have. It returns json array for internet data plans.
  • Purchase Internet Data: (Using the "internetTypeId", "planId" gotten in the first, second, step above, and other parameters that will be shown below under purchase internet data), this endpoint allows you to shoot your "buy Internet data products" request to our system. It returns json array for "Buy Internet Data.
Get Internet Types

This endpoint allows you to query all the internet types that we have. It returns json array for internet types.

{{baseUrl}}/v1/topup/load/internet-types

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/internet-types \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "internetTypes": "all"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "product": [
                    {
                        "internetType": "SMILE",
                        "internetTypeId": 1
                    },
                    {
                        "internetType": "SPECTRANET",
                        "internetTypeId": 2
                    }
                ]
            }
        }
    
Get Internet Data Plans

This endpoint allows you to query all the internet data plans that we have. It returns json array for internet data plans.

{{baseUrl}}/v1/topup/load/internet-data-plans

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/internet-data-plans \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "internetTypeId": "1"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "product": [
                    {
                        "internetType": "SMILE",
                        "internetTypeId": 1,
                        "planName": "2GB MIDNITE FOR 7DAYS - 1,020 NAIRA",
                        "planId": "1",
                        "price": "124.00",
                        "discount": "1%",
                        "status": "AVAILABLE"
                    },
                    {
                        "internetType": "SMILE",
                        "internetTypeId": 1,
                        "planName": "2.5GB FLEXIDAILYY",
                        "planId": "2",
                        "price": "1000.00",
                        "discount": "10%",
                        "status": "AVAILABLE"
                    },
                    {
                        "internetType": "SMILE",
                        "internetTypeId": 1,
                        "planName": "SMILEVOICE ONLY 67",
                        "planId": "4",
                        "price": "550.00",
                        "discount": "10%",
                        "status": "AVAILABLE"
                    },
                    {
                        "internetType": "SMILE",
                        "internetTypeId": 1,
                        "planName": "1GB FLEXIDAILY FOR 1DAYS - 300 NAIRA",
                        "planId": "10",
                        "price": "300.00",
                        "discount": "1%",
                        "status": "AVAILABLE"
                    },
                ]
            }
        }
    
Purchase Internet Data

This endpoint allows you to shoot your "buy internet data products" request to our system. It returns json array for "Buy internet Data.

The key "quantity" Should not be added to your payload if you are buying "SMILE", NOTE: the key is optional for SMILE DATA.

{{baseUrl}}/v1/topup/internet

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/internet \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
        Payload For Smile Data
            {
                "internetTypeId": "1",
                "planId": "10",
                "accountId": "190****135",
                "reference": "202306300726-WPY"
            }

        Payload For Spectranet Data
            {
                "internetTypeId": "2",
                "planId": "2",
                "accountId": "121****212",
                "quantity": "1",
                "reference": "202306300726-WPY"
            }
        
Sample Response Code

        Response For Smile Data
        {
            "status": true,
            "code": 200,
            "data": {
                "message": "Success! Your internet recharge was successful!",
                "reference": "WPY20233006080738TW3R4538"
            },
            "time": "2023-30-06 08:07:40"
        }

    Response For Spectranet Data
        {
            "status": true,
            "code": 200,
            "data": {
                "message": "Success! Your internet recharge was successful!",
                "reference": "WPY20233006085836JNPV2D36",
                "purchaseCode": "PIN: 31***49, S/N:20230616***2025"
            },
            "time": "2023-30-06 08:58:38"
        }
    

Buy Educational Card

Authorization

Every communication with an API will require the API key. Learn more about our Authorization here

Endpoint Available Under This Section

To integrate the WisePay Buy Educational Card API, the endpoints below applies:

  • Get Educational Card Types: This endpoint allows you to query all the Educational Card types that we have. It returns json array for educational card types.
  • Get Educational Card Price: (Using the "eduCardTypeId" gotten in the first step above), this endpoint allows you to query all the educational card price that we have. It returns json array for educational card price
  • Purchase Educational Card: (Using the "eduCardTypeId", gotten in the first, step above, and other parameters that will be shown below under purchase educational card), this endpoint allows you to shoot your "buy Educational Card products" request to our system. It returns json array for "Buy Educational Card.
Get Educational Card Types

This endpoint allows you to query all the Educational Card types that we have. It returns json array for Educational Card types.

{{baseUrl}}/v1/topup/load/educational-types

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/educational-types \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "eduCardTypes": "all"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "product": [
                    {
                        "eduCardType": "WAEC",
                        "eduCardTypeId": 1
                    },
                    {
                        "eduCardType": "NECO",
                        "eduCardTypeId": 2
                    },
                    {
                        "eduCardType": "NABTEB",
                        "eduCardTypeId": 3
                    },
                    {
                        "eduCardType": "NBAIS",
                        "eduCardTypeId": 4
                    }
                ]
            }
        }
    
Get Educational Card Price

This endpoint allows you to query all the Educational Card price that we have. It returns json array for Educational Card price.

{{baseUrl}}/v1/topup/load/educational-price

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/educational-price \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "eduCardTypeId": "1"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "product": {
                    "rate": "₦580.00",
                    "type": "WAEC"
                }
            }
        }
    
Purchase Educational Card

This endpoint allows you to shoot your "buy Educational Card products" request to our system. It returns json array for "Buy Educational Card .

quantity should be "1" by default

{{baseUrl}}/v1/topup/educational-card

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/educational-card \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "eduCardTypeId": "1",
                "quantity": "1",
                "reference": "202306300156-WPY"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "message": "Success! Your educational card purchase was successful!",
                "reference": "WPY202330060156152E8WT315",
                "pin": "880******874<=>WRN******366"
            },
            "time": "2023-30-06 01:56:16"
        }
    

Buy Recharge Card

Authorization

Every communication with an API will require the API key. Learn more about our Authorization here

Endpoint Available Under This Section

To integrate the WisePay Buy Recharge Card API, the endpoints below applies:

  • Get Networks: This endpoint allows you to query all the networks that we have. It returns json array for networks.
  • Get Recharge Card Percent: (Using the "network" gotten in the first step above), this endpoint allows you to query all the Recharge card percent that we have. It returns json array for Recharge card percent
  • Purchase Recharge Card: (Using the "network", gotten in the first, step above, and other parameters that will be shown below under purchase Recharge card), this endpoint allows you to shoot your "buy Recharge Card products" request to our system. It returns json array for "Buy Recharge Card.
Get Networks

This endpoint allows you to query all the networks that we have. It returns json array for networks.

{{baseUrl}}/v1/topup/load/networks

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/networks \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
        '{
          "networks":  "all"
         }'
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "product": [
                    {
                        "network": "MTN",
                        "networkId": 1
                    },
                    {
                        "network": "AIRTEL",
                        "networkId": 2
                    },
                    {
                        "network": "GLO",
                        "networkId": 3
                    },
                    {
                        "network": "9MOBILE",
                        "networkId": 4
                    }
                ]
            }
        }
    
Get Recharge Card Percent & Available Denominations

This endpoint allows you to query all the Recharge Card percent that we have. It returns json array for Recharge Card percent.

{{baseUrl}}/v1/topup/load/recharge-card-percent

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/recharge-card-percent \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "network": "1"
            }
        
Sample Response Code

            {
                "status": true,
                "code": 200,
                "data": {
                    "product": {
                        "percent": "95%",
                        "type": "MTN",
                        "availableDenominations": [
                            "100",
                            "200",
                            "303"
                        ]
                    }
                }
            }
    
Purchase Recharge Card

This endpoint allows you to shoot your "buy Recharge Card products" request to our system. It returns json array for "Buy Recharge Card .

minimum quantity is "1"
get accepted denominations from the endpoint above

{{baseUrl}}/v1/topup/recharge-card

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/recharge-card \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "network": "1",
                "denomination": "100",
                "quantity": "2",
                "reference": "202307010730-WPY"
            }
        
Sample Response Code

            {
                "status": true,
                "code": 200,
                "data": {
                    "message": "Success! Your Recharge Card Purchase was successful!",
                    "reference": "WPY202301070730535BKPMH53",
                    "pins": [
                        {
                            "network": "MTN",
                            "denomination": 100,
                            "pin": "5**6-4**2-9**7-31349",
                            "sn": "000000****3051084"
                        },
                        {
                            "network": "MTN",
                            "denomination": 100,
                            "pin": "5**5-4**2-9**7-319",
                            "sn": "000000****9473587"
                        }
                    ]
                },
                "time": "2023-01-07 07:31:08"
            }
    

Bet Funding

Authorization

Every communication with an API will require the API key. Learn more about our Authorization here

Endpoint Available Under This Section

To integrate the WisePay Buy Bet API, the endpoints below applies:

  • Get Bet Types: This endpoint allows you to query all the Bet types that we have. It returns json array for Bet types.
  • Get Bet Discount: (Using the "betType" gotten in the first step above), this endpoint allows you to query all the Bet discount that we have. It returns json array for Bet discount.
  • Validate Bet Customer Id: (Using the "betType" and "customerId" gotten in the first step above), this endpoint allows you to validate the customerId of the bet type. It returns json array for the validated details
  • Fund Bet: (Using the "betType", gotten in the first, step above, and other parameters that will be shown below under fund bet), this endpoint allows you to shoot your "fund bet products" request to our system. It returns json array for "Fund Bet.
Get Bet Types

This endpoint allows you to query all the Bet types that we have. It returns json array for Bet types.

{{baseUrl}}/v1/topup/load/bet-types

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/bet-types \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "betTypes": "all"
            }
        
Sample Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "product": [
                    {
                        "betType": "Bet9ja",
                        "betTypeId": 1
                    },
                    {
                        "betType": "BangBet",
                        "betTypeId": 2
                    },
                    {
                        "betType": "NairaBet",
                        "betTypeId": 3
                    }
                ]
            }
        }
    
Get Bet Discount

This endpoint allows you to query all the Bet discount that we have. It returns json array for Bet discount.

{{baseUrl}}/v1/topup/load/bet-discount

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/load/bet-discount \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "betType": "Bet9ja"
            }
        
Sample Response Code

            {
                "status": true,
                "code": 200,
                "data": {
                    "product": {
                        "discount": "8%",
                        "type": "Bet9ja"
                    }
                }
            }
    
Validate Bet Customer Id

This endpoint allows you to validate the customerId of the bet type. It returns json array for the validated details.

{{baseUrl}}/v1/topup/validate/customer-id

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/validate/customer-id \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "betType": "Bet9ja",
                "customerId": "10****53",
            }
        
Sample Response Code

            {
                "status": true,
                "code": 200,
                "data": {
                    "validate": {
                        "customerName": "MOGOLI PHILIP",
                        "customerId": "10427753",
                        "minPayableAmount": 100,
                        "betType": "Bet9ja",
                        "canVend": true
                    }
                }
            }
    
Fund Bet

This endpoint allows you to shoot your "fund bet products" request to our system. It returns json array for "fund bet

{{baseUrl}}/v1/topup/fund-bet

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/topup/fund-bet \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
            {
                "betType": "Bet9ja",
                "amount": "100",
                "customerId": "10****53",
                "reference": "202307020945-WPY"
            }
        
Sample Response Code

            {
                "status": true,
                "code": 200,
                "data": {
                    "message": "Success! Your Bet Funding Funding was successful!",
                    "reference": "WPY20230207094531L4MY7O31"
                },
                "time": "2023-02-07 09:45:39"
            }
    

GET TRANSACTION STATUS

This endpoint allows you to retrieve data such as status of transaction using the reference you supplied.

Authorization

Every communication with an API will require the API key. Learn more about our Authorization here

Product Available For Requery

To integrate the WisePay Transaction Status Requery API.

The product below must be used in lower case as a suffix to the url

Any product with two words with space eg RECHARGE CARD should be passed as recharge-card

  • DATA
  • AIRTIME
  • CABLE
  • ELECTRICITY
  • INTERNET
  • BULKSMS
  • BET FUNDING
  • EDUCATIONAL CARD
  • RECHARGE CARD

{{baseUrl}}/v1/transaction/status/{{data}}

{{baseUrl}}/v1/transaction/status/{{recharge-card}}

Sample Request Code
curl --location --request POST {{baseUrl}}/v1/transaction/status/{{data}} \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --header 'Authorization: {{WISEPAY_API_KEY}}' \
     --data-raw 
        {
            "reference": "202306151021SGTYYUUDUDUDUWPY"
        }
    
Sample DATA Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "type": "Data",
                "message": "Dear Customer, You have successfully shared 500MB Data to 23481663****2. 9961.07 31\\/08\\/2023. Thankyou",
                "yourReference": "WPY20232806094208VBLWM308",
                "ourReference": "WPY20232806094208VBLWM308"
            },
            "time": "2023-28-06 09:42:16"
        }
    
Sample AIRTIME Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "type": "Airtime",
                "message": "You have topped up N10.00 to 2348*****7382. Your balance is now N477,204.00. ref: 2023062720284751203431431",
                "yourReference": "WPY202328061236344C0YP834",
                "ourReference": "WPY202328061236344C0YP834"
            },
            "time": "2023-28-06 12:36:41"
        }
    
Sample ELECTRICITY Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "type": "Electricity",
                "message": "Success! Your electricity purchase was successful!",
                "yourReference": "WPY20231506095916",
                "ourReference": "WPY20231506095916",
                "token": "0525  9760  6416  0213  5178  ",
                "tokenUnit": "1.33kwH"
            },
            "time": "2023-15-06 09:59:29"
        }
    
Sample RECHARGE CARD Response Code

        {
            "status": true,
            "code": 200,
            "data": {
                "type": "Recharge-Card",
                "message": "Success! Your Recharge Card Purchase was successful!",
                "yourReference": "WPY202301070730535BKPMH53",
                "ourReference": "WPY202301070730535BKPMH53",
                "pins": [
                    {
                        "network": "MTN",
                        "denomination": 100,
                        "pin": "5**6-4**2-9**7-31349",
                        "sn": "000000****3051084"
                    },
                    {
                        "network": "MTN",
                        "denomination": 100,
                        "pin": "5**5-4**2-9**7-319",
                        "sn": "000000****9473587"
                    }
                ]
            },
            "time": "2023-01-07 07:31:08"
        }
    

Make sure you follow our htpp status code rule

How To Generate Reference

This section contains the recommended format of generating reference

Reference Format

The Reference should be a string in the unix format YYYYMMDDHHII consisting of today’s date + current hour and minute (e.g: 202306280331) and can be concatenated with any other alphanumeric string as desired (e.g: 202306280331Y5WSUG49ERTYGT or 2023062803314738492849).

Note

  • MUST BE 25 CHARACTERS MINIMUM & 30 CHARCTERS MAXIMUM
  • FIRST 12 CHARACTERS MUST BE NUMERIC
  • FIRST 12 CHARACTERS MUST COMPRISE OF TODAY’S DATE
  • DATE & TIME SHOULD BE IN AFRICA/LAGOS Timezone OR GMT +1

Example: 202306280331Y5WSUG49ERTYGT

Introduction

Learn how to listen to events whenever certain actions occur on your integration.

What are webhooks?

During a transaction lifecycle, WisePay sends events that your application can listen to. A webhook is an accessible URL on your server to which we send payloads. For example, WisePay sends webhook events when a transaction has been initiated, failed and when it's successful

By using webhooks, you can tightly integrate your backend application with WisePay. The platform currently supports one kind of webhook: Data. Webhook follow a common set of rules:

  • Webhook should be reachable from the public internet. During development and you are on localhost, tunnelling services like Ngrok are supported.
  • Webhook should accept HTTP POST requests with JSON payload
  • Webhook should respond with http response codes 200
  • Webhook should respond as fast as possible.
  • Webhook should be ready to accept the same call multiple times: in case of network or remote server failure.
  • Responding to an event

    You should respond to a webhook event with a 200 OK. We consider this an acknowledgement of your application. If your application responds with any status outside of the 2xx range, we will consider it unacknowledged

    Supported Event

    • DATA
    
                    {
                        "status": true,
                        "code": 200,
                        "data": {
                            "type": "Data",
                            "message": "Dear Customer, You have successfully shared 500MB Data to 23481663****2. 9961.07 31\\/08\\/2023. Thankyou",
                            "yourReference": "WPY20232806094208VBLWM308",
                            "ourReference": "WPY20232806094208VBLWM308"
                        },
                        "time": "2023-28-06 09:42:16"
                    }
                
    • AIRTIME
    
                    {
                        "status": true,
                        "code": 200,
                        "data": {
                            "type": "Airtime",
                            "message": "You have topped up N10.00 to 2348*****7382. Your balance is now N477,204.00. ref: 2023062720284751203431431",
                            "yourReference": "WPY202328061236344C0YP834",
                            "ourReference": "WPY202328061236344C0YP834"
                        },
                        "time": "2023-28-06 12:36:41"
                    }
            

    Idempotent Webhooks

    We strongly suggest you make webhooks idempotent. That means, you should always check the webhook reference and make sure that you're not processing the same webhook more than once.

    Setting up webhook

    In other to take advantage of webhooks, you will have to first set up a publicly available URL that WisePay can have access to. To set up one, kindly go to your dashboard, click on the Account Settings link and check under the API & Webhook tabs, there, you will find an input box for your webhook.