Introduction
Welcome to the Akuuk API Reference.
Akuuk has a suite of APIs and SDKs that allows you to securely connect, build applications, manage accounts, access the Akuuk products and services, and make purchases in a simple, programmatic way using conventional HTTP requests.
The API endpoints are intuitive and powerful, allowing you to easily make calls to retrieve information or execute actions. The API returns JSON or XML responses, this is dependent upon the request header being specified.
Accept: application/json
Accept: application/xml
The API access to the Akuuk products and services is provided through a REST architectural style interface. The base URL of the API is located at the following address:
https://api.akuuk.com
Client Libraries
By default, this API documentation demonstrate using cURL to interact with the API over HTTP. This guide includes snippet for the following programming languages and frameworks:
PHP, JavaScript, Go, NodeJS, Ruby, Python, Java, .NET
Authentication
A user with a mrcIdentity
0000000000and a mrcAPIKey of75AFDB82CC17will use the following command:
curl -u 0000000000:75AFDB82CC17 https://api.akuuk.com/
$acc = base64_encode("0000000000:75AFDB82CC17");
$res = file_get_contents("https://api.akuuk.com/",false,stream_context_create([
"http" => [
"method" => "GET",
"header" => "Content-Type: application/json",
"header" => "Authorization: Basic $acc"
]
]));
print_r($res);
const acc = btoa("0000000000:75AFDB82CC17");
const res = new XMLHttpRequest();
res.open("GET","https://api.akuuk.com/",true);
res.setRequestHeader("Content-Type","application/json");
res.setRequestHeader("Authorization","Basic " + acc);
res.send();
res.onreadystatechange = function(){
console.log(res.responseText);
}
Not available
Not available
require "net/http"
require "base64"
acc = Base64.encode64("0000000000:75AFDB82CC17")
uri = URI.parse("https://api.akuuk.com/")
Net::HTTP.new(uri.host, uri.port).start do |dta|
res = Net::HTTP::get.new(uri.path)
res["Content-Type"] = "application/json"
res["Authorization"] = "Basic " + acc
dta.request(res)
end
import request
import base64
import json
acc = base64.b64encode("0000000000:75AFDB82CC17".encode("ascii"))
hdr = {"Content-Type": "application/json", "Authorization": "Basic " + acc, "Accept": "text/plain"}
res = request.get("https://api.akuuk.com/", headers = hdr)
dta = res.json()
print(dta)
Not available
Not available
To make requests using your account, replace the sample mrcIdentity and mrcAPIKey provided in this API documentation with your real account ID and API key.
Please note: The sample API key have been shortened for the purposes of this API documentation, your real account API key will be longer and can be found on your account API & SDK integration page.
In order to interact with the API, your application connection must authenticate. The API requires the HTTP basic authentication for every request and all data requests must be sent over HTTPS.
The authentication is accomplished with a pair of mrcIdentity and mrcAPIKey. The mrcIdentity is your registered Akuuk account ID and the mrcAPIKey is the auto-generated API key that can be found on your account API & SDK integration page. If you do not have an account, please click here to create a new account for free.
WARNING! The API keys carry many privileges, so be sure to keep them secure at all time. Never share your API keys in publicly accessible areas such as GitHub, Postman, client-side code, etc or any person including Akuuk employees.
Request Parameters
Passing parameters as a JSON object:
curl -H "Content-Type: application/json" -u 0000000000:75AFDB82CC17 -d '{"firstname":"John","lastname":"Doe"}' -X POST https://api.akuuk.com/
$acc = base64_encode("0000000000:75AFDB82CC17");
$res = file_get_contents("https://api.akuuk.com/",false,stream_context_create([
"http" => [
"method" => "POST",
"header" => "Content-Type: application/json",
"header" => "Authorization: Basic $acc",
"content" => http_build_query([
"firstname" => "John",
"lastname" => "Doe"
])
]
]));
print_r($res);
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Passing filter parameters as a query string:
curl -u 0000000000:75AFDB82CC17 "https://api.akuuk.com/?firstname=John&lastname=Doe"
$acc = base64_encode("0000000000:75AFDB82CC17");
$res = file_get_contents("https://api.akuuk.com/?firstname=John&lastname=Doe",false,stream_context_create([
"http" => [
"method" => "GET",
"header" => "Content-Type: application/json",
"header" => "Authorization: Basic $acc"
]
]));
print_r($res);
Not available
Not available
Not available
Not available
Not available
Not available
Not available
There are different ways to pass parameters in a request with the API.
When passing parameters to create or update an object, parameters should be passed as a JSON object containing the appropriate attribute names and values as key-value pairs. When you use this format, you should specify that you are sending a JSON object in the header. This is done by setting the Content-Type header to application/json. This ensures that your request is interpreted correctly.
When passing parameters to filter a response on GET requests, parameters can be passed using standard query attributes. In this case, the parameters would be embedded into the URI itself by appending a ? to the end of the URI and then setting each attribute with an equal sign. Attributes can be separated with a &. Tools like cURL can create the appropriate URI when given parameters and values; this can also be done using the -F flag and then passing the key and value as an argument. The argument should take the form of a quoted string with the attribute being set to a value with an equal sign.
Cross Origin Resource Sharing
Preflight Request:
curl -I -H "Origin: https://example.com" -X OPTIONS https://api.akuuk.com/
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Preflight Response:
. . .
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET,POST,PUT,PATCH,DELETE,OPTIONS
Access-Control-Expose-Headers: RateLimit-Limit,RateLimit-Remaining,RateLimit-Reset,Total,Link
Access-Control-Max-Age: 86400
Access-Control-Allow-Credentials: true
. . .
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
In order to make requests to the API from other domains, the API implements Cross Origin Resource Sharing (CORS) support.
CORS is generally used to create AJAX requests outside of the domain that the request originated from. This is necessary to implement projects like control panels utilizing the API. This tells the browser that it can send requests to an outside domain.
The procedure that the browser initiates in order to perform these actions (other than GET requests) begins by sending a "preflight" request. This sets the Origin header and uses the OPTIONS method. The server will reply back with the methods it allows and some of the limits it imposes. The browser or client then sends the actual request if it falls within the allowed constraints.
This process is usually done in the background by the browser, but you can use cURL to emulate this process using the example provided. The headers that will be set to show the constraints are:
- Access-Control-Allow-Origin: This is the domain that is sent by the client or browser as the origin of the request. It is set through an
Originheader. - Access-Control-Allow-Methods: This specifies the allowed options for requests from that domain. This will generally be all available methods.
- Access-Control-Expose-Headers: This will contain the headers that will be available to requests from the origin domain.
- Access-Control-Max-Age: This is the length of time that the access is considered valid. After this expires, a new preflight should be sent.
- Access-Control-Allow-Credentials: This will be set to
true. It basically allows you to send your token for authentication.
You should not be concerned with the details of these headers, because the browser will typically handle all of the configurations and setup.
URL Encoding
To use URL encoding, use the following format:
https://api.akuuk.com/?email=someone@domain.com
When the value is an email address, it has to be escaped in order to form a valid URL. The
@sign is represented by the%40entity. For example:
https://api.akuuk.com/?email=someone%40domain.com
Please note: cURL automatically converts the
@to a%40if you use the-uoption, but not if you put in the URL directly.
URL encoding converts certain characters into a format that can be transmitted securely over the internet. URLs can only be sent over the Internet using the ASCII character set. You can include different characters in the URL by encoding them.
Responses
The API uses conventional HTTP response codes to indicate the success or failure of the API request.
In general:
Codes in the 2xx range indicate success.
Codes in the 4xx range indicate an error that failed given the information provided (Example: a required parameter was omitted, a charge failed, etc.).
Codes in the 5xx range indicate errors with the servers (these are rare).
Codes in the 8xx range indicate errors associated with Akuuk platforms, products and services.
HTTP Status Codes
The API response will return one of the following status codes for every request.
| Code | Meaning | Definition |
|---|---|---|
| 200 | Success | The request was processed successfully and the information is returned in the body in the desired format. This code gets returned after GET requests or PUT requests (if the PUT resulted in data being generated and returned). In case of a search (Example: for transactions) without search results, a 200 still gets returned. |
| 201 | Created | The request was processed successfully. The resource was created and the Location variable in the header points to the resource. This code gets returned after POST requests only. |
| 202 | Accepted | The request has been accepted for processing, but the processing has not been completed. The request might or might not eventually be acted upon, as it might be disallowed when processing actually takes place. |
| 203 | Non-Authoritative Information | The client request was successful but the enclosed content has been modified from the response of the origin server. |
| 204 | No Content | The request was processed successfully. Since this code gets returned after PUT or DELETE requests only, there is no need for returning information in the response body. |
| 307 | Temporary Redirect | The request should be repeated at the temporary location identified, but use the original location as the permanent reference to the resource. |
| 308 | Permanent Redirect | The request should be repeated at the location identified and use that as the permanent reference to the resource. |
| 400 | Bad Request | The request could not be parsed or the parameters were not valid. The request should be modified before resubmitting. |
| 401 | Unauthorized | The request is not authorized. The authentication credentials included with this request are missing or invalid. Challenges the user to provide authentication credentials. |
| 403 | Forbidden | The request was not encrypted via SSL or the account is rate limited. |
| 404 | Not Found | The request refers to a resource that either does not exist or the user does not have permissions to access (due to security through obscurity). If a search request gets sent, it will however not return a 404 if the API did not find resources matching the search query. |
| 405 | Method Not Allowed | The HTTP verb specified in the request (DELETE, GET, POST, PUT) is not supported on this resource, or the method requires a filter, which was not provided. |
| 406 | Not Acceptable | Response is sent when the web server, after performing server-driven content negotiation, doesn't find any content that conforms to the criteria given by the user agent. |
| 408 | Request Timed Out | The server did not receive a complete request message within the time that it was prepared to wait. |
| 409 | Conflict | Either the version number does not match, or a duplicate resource was requested and cannot be recreated. |
| 412 | Precondition Failed | Failed to update, as resource changed. One or more conditions given in the request header fields evaluated to false when tested on the server. |
| 413 | Request Entity Too Large | The HTTP request payload is too large. maxOperations (1000) or maxPayload (1048576) was exceeded. |
| 415 | Incorrect Content-Type | Content type was not application/json. |
| 422 | Entity Already Exists | An attempt was made to create a new entity that matched an existing one. The request should be modified to use unique parameters (Example:, a different container name) or a PUT request should be made instead to modify the existing entity. |
| 429 | Rate Limited | Request was rate limited (it’s possible some data was permitted, need to verify response body). This error returns when it can not parse the basic format of the payload to identify measurements. |
| 500 | Internal Server Error | The server encountered an unexpected condition that prevented it from fulfilling the request. |
| 501 | Not Implemented | The server doesn't support the functionality required to fulfill the request. |
| 502 | Bad Gateway | The server, while acting as a gateway or proxy, received an invalid response from an inbound server it accessed while attempting to fulfill the request. |
| 503 | Service Unavailable | In the rare occasion that we must put the API into maintenance mode for a service upgrade, the API can return a 503 error code. The API should be available again shortly so it is advised that you resubmit your request later. |
| 800 | Password | This error returns when an account password cannot be validated. Passwords are case-sensitive, so a capital letter typed in lowercase will cause an error. In some cases, the password you have stored in the system or app might be the incorrect one. |
| 801 | Account ID | This error returns when an account ID cannot be validated or when the account not active. |
| 802 | API Token | This error returns information related to API key. |
| 803 | API Connection | This error returns information related to API connection. |
| 804 | ||
| 805 | Activation Code | This error returns information related to account activation code. |
| 806 | Verification Code | This error returns information related to account verification code. |
| 807 | Account Balance | This error returns information related to account balance, this can be as a result of insufficient balance. |
| 808 | Credit Balance | This error returns information related to credit balance, this can be as a result of insufficient balance. |
| 809 | ||
| 810 | ||
| 811 | ||
| 812 | Payment Channel | This error returns information related to the preferred or selected payment channel. |
| 813 | ||
| 814 | Amount | This error returns information related to an amount to be issued, credited or transfer. |
| 815 | ||
| 816 | ||
| 817 | ||
| 818 | ||
| 819 | ||
| 820 | Service Provider | This error returns information related to a biller or provider for which a service is being provided. |
| 821 | Email Address | This error returns information related to an email address. |
| 822 | Phone Number | This error returns information related to a phone number. Phone number is assumed to be in international format (with or without the leading + sign). |
| 823 | Meter Number | This error returns information related to an electricity, gas or water meter number. |
| 824 | Smartcard Number | This error returns information related to a cable TV decoder number or identification user code (IUC). |
| 825 | ||
| 826 | ||
| 827 | ||
| 828 | ||
| 829 | ||
| 830 | Subscription Plan | This error returns information related to a service subscription plan. |
| 831 | ||
| 832 | ||
| 833 | ||
| 834 | ||
| 835 | ||
| 836 | ||
| 837 | ||
| 838 | ||
| 839 | ||
| 840 | Bank Provider | This error returns information related to a bank provider. |
| 841 | Bank List | This error returns information related to the bank list. |
| 842 | Bank Account | This error returns information related to the bank account number. |
| 843 | ||
| 844 | ||
| 845 | ||
| 846 | ||
| 847 | ||
| 848 | ||
| 849 | ||
| 850 | Continent | This error returns information related to a continent. |
| 851 | Country | This error returns information related to a country. |
| 852 | State/Region | This error returns information related to a state/region. |
| 853 | City/Town | This error returns information related to a city/town. |
| 854 | ||
| 855 | ||
| 856 | ||
| 857 | ||
| 858 | ||
| 859 | IP Address | This error returns information related to an IP address. |
| 860 | ||
| 861 | ||
| 862 | ||
| 863 | ||
| 864 | ||
| 865 | ||
| 866 | ||
| 867 | ||
| 868 | ||
| 869 | ||
| 870 | Sender ID | This error returns information related to a message sender ID. |
Error Messages
Example of the
requesttype error message:
{
"errors": {
"request": [
"Please use secured connection through https!",
"Please provide credentials for authentication."
]
}
}
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
When a request is successful, a response body will typically be sent back in the form of a JSON object. An exception to this is when a DELETE request is processed, which will result in a successful HTTP 204 status and an empty response body.
Inside of the JSON object, the resource root that was the target of the request will be set as the key. This will be the singular form of the word if the request operated on a single object, and the plural form of the word if a collection was processed.
Error Message Structure
There are three types of errors: params, request, and system.
| Type | Description |
|---|---|
| params | Errors related to parameters are reported based on the attribute the error occurred on. |
| request | Errors related to the request itself are reported in an array structure with the key request. |
| system | Service errors due to maintenance periods, for example, are reported in an array structure with the key system. |
Metadata
Example of the
metadataobject request:
curl https://api.akuuk.com/ -u 0000000000:75AFDB82CC17 -d '{"amount":"2000","currency":"ngn","source":"mastercard","metadata[order_id]":"6735"}'
$acc = base64_encode("0000000000:75AFDB82CC17");
$res = file_get_contents("https://api.akuuk.com/",false,stream_context_create([
"http" => [
"method" => "POST",
"header" => "Content-Type: application/json",
"header" => "Authorization: Basic $acc",
"content" => http_build_query([
"amount" => "2000",
"currency" => "ngn",
"source" => "mastercard",
"metadata[order_id]" => "6735"
])
]
]));
print_r($res);
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Response body:
{
"metadata": {
"order_id": 6735
}
}
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
In addition to the main resource root, the response may also contain a metadata object. This object contains information about the response itself.
The metadata object contains a total key that is set to the total number of objects returned by the request. This has implications on the links object and pagination.
The metadata object will only be displayed when it has a value. Currently, the metadata object will have a value when a request is made on a collection (like invoices or transactions).
Links & Pagination
Many of the resources accessible through the API can contain large numbers of results when an INDEX operation is requested. To enable faster page load time and simple browsing of large result sets the APIs support pagination in a consistent fashion across resources.
Request Parameters
Request which returns the 2nd 10 transactions (would equal to page 2 where each page displays 10 transactions):
curl -u 0000000000:75AFDB82CC17 "https://api.akuuk.com/?offset=10&length=10"
$acc = base64_encode("0000000000:75AFDB82CC17");
$res = file_get_contents("https://api.akuuk.com/?offset=10&length=10",false,stream_context_create([
"http" => [
"method" => "GET",
"header" => "Content-Type: application/json",
"header" => "Authorization: Basic $acc"
]
]));
print_r($res);
Not available
Not available
Not available
Not available
# pagination not available, use list_transactions() for all transactions
for m in api.list_transactions():
print m.name
Not available
Not available
Response code:
200
Response body:
{
"query": {
"found": 50,
"length": 10,
"offset": 20,
"total": 200
},
"transactions": [{
"name": "api",
"display": null,
"type": "gauge",
"attributes": {
"summarize": "average",
"display_long": "Latency (mS)",
"display_short": "mS",
"display_minimum": 0,
"display_stacked": false,
"created_by": "0.7.4",
"detection": false,
"aggregate": true
},
"description": null,
"period": 300,
"source": null
}]
}
There are several request parameters that you can use to control the pagination of the results. These apply in a consistent fashion across all paginated resources. All of the following request parameters have default values and are therefore optional:
| Parameter | Definition |
|---|---|
offsetoptional |
Specifies how many results to skip for the first returned result. Defaults to 0. |
lengthoptional |
Specifies how many resources should be returned. The maximum permissible (and the default) length is 100. |
orderbyoptional |
Order by the specified attribute. Permissible set of orderby attributes and the default value varies with resource type. |
sortoptional |
The sort order in which the results should be ordered. Permissible values are asc (ascending) and desc (descending). Defaults to asc. |
Response Parameters
Request to get the third page for the query “api” where each page has a length of 10 transactions:
curl -u 0000000000:75AFDB82CC17 "https://api.akuuk.com/?name=api&offset=20&limit=10"
$acc = base64_encode("0000000000:75AFDB82CC17");
$res = file_get_contents("https://api.akuuk.com/?name=api&offset=20&limit=10",false,stream_context_create([
"http" => [
"method" => "GET",
"header" => "Content-Type: application/json",
"header" => "Authorization: Basic $acc"
]
]));
print_r($res);
Not available
Not available
Not available
Not available
# pagination not available, use list_transactions() for all transactions
for m in api.list_transactions():
print m.name
Not available
Not available
Response code:
200
Response body:
{
"query": {
"found": 50,
"length": 10,
"offset": 20,
"total": 200
},
"transactions": [{
"name": "api",
"display": null,
"type": "gauge",
"attributes": {
"summarize": "average",
"display_long": "Latency (mS)",
"display_short": "mS",
"display_minimum": 0,
"display_stacked": false,
"created_by": "0.7.4",
"detection": false,
"aggregate": true
},
"description": null,
"period": 300,
"source": null
}]
}
All paginated JSON responses contain a top-level element query with the following standard response parameters in addition to any additional response parameters specific to that request:
| Parameter | Definition |
|---|---|
| length | The maximum number of resources to return in the response. |
| offset | The index into the entire result set at which the current response begins. Example: if a total of 20 resources match the query, and the offset is 5, the response begins with the sixth resource. |
| total | The total number of resources owned by the user. |
| found | The number of resources owned by the user that satisfy the specified query parameters found will be less than or equal to the total. Additionally if length is less than found, the response is a subset of the resources matching the specified query parameters. |
Account
The account API provides a programmatic way to manage, retrieve, update your users accounts across Akuuk platforms. You can create new users, update users account, assign permissions or privileges, and also retrieve users account information including account balances, statements, and transaction histories.
The account API request uses the endpoints:
GET https://api.akuuk.com/account/:type
GET https://api.akuuk.com/account/:type/:category
POST https://api.akuuk.com/account/:type
POST https://api.akuuk.com/account/:type/:category
Billing
The billing API automate, manage, and process financial transactions, recurring subscriptions, and invoicing directly within the Akuuk platforms. It streamlines your operations by setting default billing, pricing and subscription plans or integrating with accounting, and payment gateways to reduce manual efforts, covering tasks like usage-based billing, payment authorization, settlement, and refund management
The billing API request uses the endpoints:
GET https://api.akuuk.com/billing/:type
POST https://api.akuuk.com/billing/:type
Transfer
The transfer API initiate payouts from your account to various destinations, such as bank accounts, mobile money accounts, digital wallet accounts, and other Akuuk user's accounts or cards. The transfer API can be used in the implementation of single, bulk or group transfers, international money transfers, and payroll.
The transfer API request uses the endpoints:
GET https://api.akuuk.com/transfer/:type
POST https://api.akuuk.com/transfer/:type
Bank
The bank API allows you automate sending of money directly to different bank accounts instantly.
Bank Lists
The bank lists API provides the lists of the active banks with their bank codes, transfer codes, swift codes, and USSD codes in the specified country.
The bank lists API request uses the endpoint:
GET https://api.akuuk.com/transfer/bank/lists
Request Object:
The bank lists API request object is as follows:
| Parameter | Type | Definition |
|---|---|---|
countryCoderequired |
integer | ISO numeric country code, assume phone number is based in this country. Example: 234 for Nigeria. |
Example of the
bank listsobject request:
curl -u 0000000000:75AFDB82CC17 "https://api.akuuk.com/transfer/bank/lists?countryCode=234"
$acc = base64_encode("0000000000:75AFDB82CC17");
$res = file_get_contents("https://api.akuuk.com/transfer/bank/lists?countryCode=234",false,stream_context_create([
"http" => [
"method" => "GET",
"header" => "Content-Type: application/json",
"header" => "Authorization: Basic $acc"
]
]));
print_r($res);
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Response body:
{
"code": 200,
"status": "Success",
"message": "Bank lists retrieval successful",
"banks": [
{
"bankIdentifier": "10000001CBK",
"bankType": "Commercial",
"bankShortname": "Access Bank",
"bankFullname": "Access Bank PLC",
"bankLogo": "https://api.akuuk.com/assets/images/bank/15579368206932047851.png",
"codeBank": "044",
"codeTransfer": "000014",
"codeUSSD": "*901#"
},
{
"bankIdentifier": "10000002CBK",
"bankType": "Commercial",
"bankShortname": "Citibank Nigeria",
"bankFullname": "Citibank Nigeria Limited",
"bankLogo": "https://api.akuuk.com/assets/images/bank/15579369306921570438.png",
"codeBank": "023",
"codeTransfer": "000009",
"codeUSSD": "N/A"
},
{
"bankIdentifier": "10000004CBK",
"bankType": "Commercial",
"bankShortname": "Ecobank",
"bankFullname": "Ecobank Nigeria PLC",
"bankLogo": "https://api.akuuk.com/assets/images/bank/15579370645763218094.png",
"codeBank": "050",
"codeTransfer": "000010",
"codeUSSD": "*326#"
}
]
}
Response Body:
The bank lists API response body for the lists of banks is as follows:
| Parameter | Type | Definition | |||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| code | integer | The HTTP response code. | |||||||||||||||||||||||||||
| status | string | The API status response. | |||||||||||||||||||||||||||
| message | string | The API status message. | |||||||||||||||||||||||||||
| banks | object | Contains details about the different banks. | |||||||||||||||||||||||||||
|
Bank Lookup
The bank lookup API provides detailed information of a specified bank.
The bank lookup API request uses the endpoint:
GET https://api.akuuk.com/transfer/bank/lookup
Request Object:
The bank lookup API request object is as follows:
| Parameter | Type | Definition |
|---|---|---|
bankIdentifierrequired |
string | The unique 11-digit alphanumberic identity code assigned to the bank. |
Example of the
bank lookupobject request:
curl -u 0000000000:75AFDB82CC17 "https://api.akuuk.com/transfer/bank/lookup?bankIdentifier=10000004CBK"
$acc = base64_encode("0000000000:75AFDB82CC17");
$res = file_get_contents("https://api.akuuk.com/transfer/bank/lookup?bankIdentifier=10000004CBK",false,stream_context_create([
"http" => [
"method" => "GET",
"header" => "Content-Type: application/json",
"header" => "Authorization: Basic $acc"
]
]));
print_r($res);
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Response body:
{
"code": 200,
"status": "Success",
"message": "Bank details retrieval successful",
"bankIdentifier": "10000004CBK",
"bankType": "Commercial",
"bankShortname": "Ecobank",
"bankFullname": "Ecobank Nigeria PLC",
"bankLogo": "https://api.akuuk.com/assets/images/bank/15579370645763218094.png",
"codeBank": "050",
"codeTransfer": "000010",
"codeUSSD": "*326#"
}
Response Body:
The banks lookup API response body for a particular service provider is as follows:
| Parameter | Type | Definition |
|---|---|---|
| code | integer | The HTTP response code. |
| status | string | The API status response. |
| message | string | The API status message. |
| bankIdentifier | string | The unique 11-digit alphanumberic identity code assigned to the bank. |
| bankType | string | The bank institution type. |
| bankShortname | string | The bank brand name. |
| bankFullname | string | The bank legally registered name. |
| bankLogo | string | The bank company logo. |
| codeBank | string | The bank assigned 3-digit banking code. |
| codeTransfer | decimal | The bank assigned 6-digit transfer code. |
| codeUSSD | string | The bank USSD transaction code. |
Account Enquiry
The account enquiry API allows you to validate and verify the details of a bank account number.
The account enquiry API request uses the endpoint:
GET https://api.akuuk.com/transfer/bank/enquiry
Request Object:
The account enquiry API request object is as follows:
| Parameter | Type | Definition |
|---|---|---|
bankIdentifierrequired |
string | The unique 11-digit alphanumberic identity code assigned to the bank. |
accountNumberrequired |
integer | The bank account number. |
Example of the
account enquiryobject request:
curl -u 0000000000:75AFDB82CC17 "https://api.akuuk.com/transfer/bank/enquiry?bankIdentifier=10000008CBK&accountNumber=4244569012"
$acc = base64_encode("0000000000:75AFDB82CC17");
$res = file_get_contents("https://api.akuuk.com/transfer/bank/enquiry?bankIdentifier=10000008CBK&accountNumber=4244569012",false,stream_context_create([
"http" => [
"method" => "GET",
"header" => "Content-Type: application/json",
"header" => "Authorization: Basic $acc"
]
]));
print_r($res);
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Response body:
{
"code": 200,
"status": "Success",
"message": "Account enquiry successful",
"bankFullname": "First City Monument Bank PLC",
"accountName": "AKUUK TECHNOLOGY LIMITED",
"accountNumber": "4244569012",
"accountType": "Current"
}
Response Body:
The account enquiry API response body is as follows:
| Parameter | Type | Definition |
|---|---|---|
| code | integer | The HTTP response code. |
| status | string | The API status response. |
| message | string | The API status message. |
| bankFullname | string | The bank legally registered name. |
| accountName | string | The bank account name. |
| accountNumber | integer | The bank account number. |
| accountType | string | The bank account plan type. This could be either savings, current, or domiciliary account. |
Payout
The payout API request uses the endpoint:
POST https://api.akuuk.com/transfer/bank/payout
Request Object:
The payout API request object is as follows:
| Parameter | Type | Definition |
|---|---|---|
mrcReferencerequired |
string | A unique identifier provided by users to keep track of the transaction. |
bankIdentifierrequired |
integer | The unique 11-digit alphanumberic identity code assigned to the bank. |
accountNumberrequired |
integer | The validated bank account number. |
accountNamerequired |
string | The validated bank account name. |
txnAmountrequired |
decimal | The amount to be credited to the bank account number. |
txnNarrationrequired |
string | The description of the transaction. |
Example of the
payoutobject request:
curl -H "Content-Type: application/json" -u 0000000000:75AFDB82CC17 -d '{"mrcReference":"100000000XXXXX","bank":"10000008CBK","number":"4244569012","name":"Akuuk Technology Limited","amount":"100,000.00","narration":"Payment for vendor supplies."}' -X POST https://api.akuuk.com/transfer/bank/payout
$acc = base64_encode("0000000000:75AFDB82CC17");
$res = file_get_contents("https://api.akuuk.com/transfer/bank/payout",false,stream_context_create([
"http" => [
"method" => "POST",
"header" => "Content-Type: application/json",
"header" => "Authorization: Basic $acc",
"content" => http_build_query([
"mrcReference" => "100000000XXXXX",
"bankIdentifier" => "10000008CBK",
"accountNumber" => "4244569012",
"accountName" => "Akuuk Technology Limited",
"txnAmount" => "100,000.00",
"txnNarration" => "Payment for vendor supplies."
])
]
]));
print_r($res);
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Response body:
{
"code": 200,
"status": "Success",
"message": "Bank account topup successful",
"mrcReference": "100000000XXXXX",
"txnReference": 100000000000001,
"txnStatus": "Success",
"bankFullname": "First City Monument Bank PLC",
"accountNumber": "4244569012",
"accountName": "Akuuk Technology Limited",
"txnAmount": "100,000.00",
"txnNarration": "Payment for vendor supplies.",
"txnCharges": "10.00",
"txnCurrency": "NGN"
}
Response Body:
The payout API response body is as follows:
| Parameter | Type | Definition |
|---|---|---|
| code | integer | The HTTP response code. |
| status | string | The API status response. |
| message | string | The API status message. |
| mrcReference | string | The unique identifier provided by users to keep track of the transaction. |
| txnReference | integer | The reference number provided by Akuuk for the transaction. |
| txnStatus | string | The payment status of the transaction. |
| bankFullname | string | The bank legally registered name. |
| accountNumber | integer | The validated bank account number. |
| accountName | string | The validated bank account name. |
| txnAmount | decimal | The amount credited to the bank account number. |
| txnNarration | string | The description of the transaction. |
| txnCharges | decimal | The cost charged for the transaction. |
| txnCurrency | string |
The account billing method code. Please note: NGN is the official currency code for the Nigerian Naira. |
Checkout
The checkout API is a payment gateway that allows you to integrate, make, send and receive payments on your mobile, web, desktop, and smart device applications. Whenever a customer make a purchase and go through the checkout, they are redirected to Akuuk-hosted payment form to complete the payment.
The checkout API simplifies the payments by handling the entire payment processes and providing a fully-built, intuitive user interface.
In addition to being quick and easy to set up, the checkout also:
- Provides a seamless experience for merchants and their customers.
- Settles the payment into their Akuuk account balance instantly.
- Ensures the highest level of security with a PCI DSS compliant and SSL encryption.
The checkout API request uses the endpoints:
GET https://api.akuuk.com/checkout/:type
POST https://api.akuuk.com/checkout/:type
Geolocation
The geolocation API allows you to retrieve the geographical location (latitude and longitude) of a user's device or their IP address. For client-side location data, it is primary accessed via the browser's navigator.geolocation object which requires explicit user permission for privacy reasons. The IP geolocation is a web service that determine a device's approximate location based solely on its IP address.
The usage for the geolocation API is available and is provided only in secure contexts (HTTPS).
The geolocation API request uses the endpoint:
GET https://api.akuuk.com/geolocation/:type
HINT: Developers have a responsibility to handle location data securely, explain why it is needed, and use it only for the stated purpose.
IP Address
The IP Address API allows you to retrieve detailed information for both IPv4 and IPv6 addresses, including geographic location, time zone, currency, connection details, ISP data, and security metadata.
The IP address lookup API stands out as a geolocation API for developers and businesses due to:
- Comprehensive Data: Returns over 40 unique data points, including continent, country, city, ZIP, latitude and longitude, time zone, currency, ASN, ISP, and more.
- Multiple Endpoints: Includes standard, bulk, and origin IP lookups to cover different use cases
- Flexible Output: Supports JSON and XML formats with optional JSONP callbacks.
- Easy Integration: Uses simple HTTP GET requests; no complex implementation.
- Optional Enhancements: Enable hostname resolution, security data (TOR/proxy detection), custom fields, and language localization.
- Scalable for Developers and Enterprises: Available on all account plans, with higher tiers unlocking bulk lookups and advanced features.
IP Address Lookup
The IP address lookup API provides over 45 unique data points per IP address, covering location, connection, ISP, time zone, currency, and security assessment information.
The IP address lookup API request uses the endpoint:
GET https://api.akuuk.com/geolocation/ipaddress
Request Object:
The IP address lookup API request object is as follows:
| Parameter | Type | Definition |
|---|---|---|
ipAddressrequired |
string | The unique identifying number assigned to the device connected to the internet. |
Example of the
IP address lookupobject request:
curl -u 0000000000:75AFDB82CC17 "https://api.akuuk.com/geolocation/ipaddress?ipAddress=102.91.72.94"
$acc = base64_encode("0000000000:75AFDB82CC17");
$res = file_get_contents("https://api.akuuk.com/geolocation/ipaddress?ipAddress=102.91.72.94",false,stream_context_create([
"http" => [
"method" => "GET",
"header" => "Content-Type: application/json",
"header" => "Authorization: Basic $acc"
]
]));
print_r($res);
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Response body:
{
"code": 200,
"status": "Success",
"message": "IP address data retrieval successful.",
"ipAddress": "102.91.72.94",
"registryName": "AS29465 MTN NIGERIA Communication limited",
"registryCode": "VCG-AS",
"ispName": "MTN NIGERIA Communication limited",
"ispCompany": "MTN Nigeria",
"continentName": "Africa",
"continentCode": "AF",
"countryName": "Nigeria",
"countryCode": "NG",
"countryCurrency": "NGN",
"countryTimezone": "Africa/Lagos",
"utcOffset": "3600",
"regionName": "FCT",
"regionCode": "FC",
"cityName": "Abuja",
"cityZipcode": "N/A",
"districtName": "N/A",
"locationLatitude": "9.0567",
"locationLongitude": "7.4969",
"dnsReserve": "N/A",
"dnsIPaddress": "N/A",
"dnsProvider": "N/A",
"ednsIPaddress": "N/A",
"ednsProvider": "N/A",
"isMobile": false,
"isProxy": false,
"isHosting": true
}
Response Body:
The IP address lookup API response body is as follows:
| Parameter | Type | Definition |
|---|---|---|
| code | integer | The HTTP response code. |
| status | string | The API status response. |
| message | string | The API status message. |
| ipAddress | string | The unique identifying number assigned to the device connected to the internet. |
| registryName | string | |
| registryCode | string |
Payment
The payment API allows you to seamlessly make payments, subscribe or purchase different categories of bills payment services ranging from Electricity, Airtime, Cable TV, Direct-To-Home, Internet, Water, Landline, Gas, etc.
The payment API request uses the endpoints:
GET https://api.akuuk.com/payment/:type
GET https://api.akuuk.com/payment/:type/:category
POST https://api.akuuk.com/payment/:type
Value Added Services
The value added services (VAS) API provides a broad range of services from telecommunications companies, government agencies, etc.
The value added services (VAS) API request uses the endpoint:
GET https://api.akuuk.com/vas/:type
HLR
The home location register (HLR) is a central database that contains details of each mobile phone subscriber connected to the global mobile network. You can use the HLR API to validate that a mobile number is LIVE and registered on a mobile network in real-time. Find out the carrier name, ported status and fetch up-to-date information.
HLR Lookup
The HRL Lookup API is a paid service but we don't charge for HLR lookups if we already know the number is not a valid mobile number. The HLR API automatically calls the phone number validator first to validate the number type without any need to connect to the carrier network.
The HLR lookup API request uses the endpoint:
GET https://api.akuuk.com/vas/hlrlookup
Messaging
Akuuk provides global messaging services for transaction, authentication, marketing, and promotion. You can send personalized, timely, responsive messages and directly engage with your audience. Some of the messaging services offered are SMS, Voice, WhatsApp, RCS, and IVR.
The messaging API request uses the endpoints:
GET https://api.akuuk.com/messaging/:type
POST https://api.akuuk.com/messaging/:type
SMS
The short message service (SMS) API supports mobile terminated (MT) messaging, delivering messages directly to phone numbers. With the SMS API you can implement services for OTPs, notifications, and alerts.
Mobile Terminated
The mobile terminated (MT) API allows you to automate sending of text messages directly to phone numbers.
The mobile terminated (MT) API request uses the endpoint:
POST https://api.akuuk.com/messaging/sms
Request Object:
The mobile terminated (MT) API request object is as follows:
| Parameter | Type | Definition |
|---|---|---|
mrcReferencerequired |
string | A unique identifier provided by users to keep track of the transaction. |
countryCoderequired |
integer | ISO numeric country code, assume phone number is based in this country. Example: 234 for Nigeria. |
numberrequired |
integer |
A phone number. The phone number is assumed to be in international format (with or without the leading + sign). |
senderrequired |
integer |
A 12-digit serial number of the Sender ID. Please note: Sender ID must be registered and approved by the network service provider. The serial number is located on the sender ID information page. |
typerequired |
string |
The message delivery type. This would be either of the following:
|
messagerequired |
string |
The content of the message. Unicode characters will be auto-detected and charged accordingly: 70 characters per SMS for a single message, and 63 characters per SMS for multiple messages. Plain text or flash message is 160 characters per SMS message. |
Example of the
mobile terminated (MT)object request:
curl -H "Content-Type: application/json" -u 0000000000:75AFDB82CC17 -d '{"mrcReference":"100000000XXXXX","countryCode":"234","number":"2348093007661","sender":"100000000000001","type":"text","message":"Hi, this is a test message."}' -X POST https://api.akuuk.com/messaging/sms
$acc = base64_encode("0000000000:75AFDB82CC17");
$res = file_get_contents("https://api.akuuk.com/messaging/sms",false,stream_context_create([
"http" => [
"method" => "POST",
"header" => "Content-Type: application/json",
"header" => "Authorization: Basic $acc",
"content" => http_build_query([
"mrcReference" => "100000000XXXXX",
"countryCode" => "234",
"number" => "2348093007661",
"sender" => "100000000000001",
"type" => "text",
"message" => "Hi, this is a test message."
])
]
]));
print_r($res);
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Response body:
{
"code": 200,
"status": "Success",
"message": "Message sent successful",
"mrcReference": "100000000XXXXX",
"txnReference": 100000000000001,
"txnStatus": "Success",
"txnDate": "26-07-2026 03:18:23",
"gtwStatus": "Success",
"number": "2348093007661",
"network": "T2 Mobile",
"sender": "Akuuk",
"type": "text",
"content": "Hi, this is a test message.",
"cost": "1",
"currency": "CRD"
}
Response Body:
The mobile terminated (MT) API response body is as follows:
| Parameter | Type | Definition |
|---|---|---|
| code | integer | The HTTP response code. |
| status | string | The API status response. |
| message | string | The API status message. |
| mrcReference | string | The unique identifier provided by users to keep track of the transaction. |
| txnReference | integer | The reference number provided by Akuuk for the transaction. |
| txnStatus | string | The payment status of the transaction. |
| txnDate | datetime | The date and time when the transaction was performed. |
| gtwStatus | string | The network service provider gateway status. |
| number | integer | The recipient phone number. |
| network | string | The recipient phone number network service provider. |
| sender | alphanumeric | The registered and approved sender ID. |
| type | string | The message delivery type. |
| content | string | The content of the message. |
| cost | decimal |
The cost charged for the message. We support two account billing methods:
|
| currency | string |
The account billing method code. Please note: CRD is a custom unit of measure used to represent credit-based billing system in Akuuk, it is not a standard currency code. NGN is the official currency code for the Nigerian Naira. |
Transaction Report
The short message service (SMS) transaction report uses the endpoint:
GET https://api.akuuk.com/messaging/sms/transaction
Request Object:
The short message service (SMS) transaction report request object is as follows:
| Parameter | Type | Definition |
|---|---|---|
mrcReferencerequired |
string | A unique identifier provided by users to keep track of the transaction. |
Example of the
transaction reportobject request:
curl -u 0000000000:75AFDB82CC17 "https://api.akuuk.com/messaging/sms/transaction?mrcReference=100000000XXXXX"
$acc = base64_encode("0000000000:75AFDB82CC17");
$res = file_get_contents("https://api.akuuk.com/messaging/sms/transaction?mrcReference=100000000XXXXX",false,stream_context_create([
"http" => [
"method" => "GET",
"header" => "Content-Type: application/json",
"header" => "Authorization: Basic $acc"
]
]));
print_r($res);
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Response body:
{
"code": 200,
"status": "Success",
"message": Transaction retrieved successful",
"mrcReference": "100000000XXXXX",
"txnReference": 100000000000001,
"txnStatus": "Success",
"txnDate": "26-07-2026 03:18:23",
"gtwStatus": "Success",
"dlvStatus": "Success",
"number": "2348093007661",
"network": "T2 Mobile",
"sender": "Akuuk",
"type": "text",
"content": "Hi, this is a test message.",
"cost": "1",
"currency": "CRD"
}
Response Body:
The short message service (SMS) transaction report response body is as follows:
| Parameter | Type | Definition |
|---|---|---|
| code | integer | The HTTP response code. |
| status | string | The API status response. |
| message | string | The API status message. |
| mrcReference | string | The unique identifier provided by users to keep track of the transaction. |
| txnReference | integer | The reference number provided by Akuuk for the transaction. |
| txnStatus | string | The payment status of the transaction. |
| txnDate | datetime | The date and time when the transaction was performed. |
| gtwStatus | string | The network service provider gateway status. |
| dlvStatus | string | The network service provider message delivery status. |
| number | integer | The recipient phone number. |
| network | string | The recipient phone number network service provider. |
| sender | alphanumeric | The registered and approved sender ID. |
| type | string | The message delivery type. |
| content | string | The content of the message. |
| cost | decimal |
The cost charged for the message. We support two account billing methods:
|
| currency | string |
The account billing method code. Please note: CRD is a custom unit of measure used to represent credit-based billing system in Akuuk, it is not a standard currency code. NGN is the official currency code for the Nigerian Naira. |
Please note: It is important to implement the webhook API to receive the delivery report status.
Collection
The collection API automate the collection of payments, fees, taxes, fines, and debts. The collection API allows you to facilitate the integration of payment gateways, banking system, and financial tools to streamline cash flow, and handling complex billing scenarios.
The collection API request uses the endpoints:
GET https://api.akuuk.com/collection/:type
POST https://api.akuuk.com/collection/:type
Booking
The booking API provides a fully integrated, affordable channel manager & all in one access for hotels, taxi & short term rentals with seamless integration with online travel agencies (OTAs).
The booking API allows you to create, retrieve, update, and cancel appointments online. When used with other Akuuk APIs, the booking API lets you create online-booking applications for users to request and book services provided by merchants.
The booking API request uses the endpoints:
GET https://api.akuuk.com/booking/:type
POST https://api.akuuk.com/booking/:type
Voucher
The voucher API enables you to automatically create, distribute, and manage digital vouchers, coupons, gift cards, and promo codes. By integrating the voucher API, you can automate reward fulfilment, track redemption, and personalize promotions improving efficiency in marketing and loyalty programs.
The voucher API request uses the endpoints:
GET https://api.akuuk.com/voucher/:type
POST https://api.akuuk.com/voucher/:type
Reporting
The reporting API provides the capability to create and get the contents of reports on an account's historical transaction activity.
The reporting API request uses the endpoint:
GET https://api.akuuk.com/reporting/:type/:category
Operations
The operations API provides a programmtic interface for managing, configuring, and monitoring technical infrastructure, services, databases, or the system within the Akuuk platforms. With the operations API you can deploy services, query system logs, and automate tasks.
The operations API request uses the endpoints:
GET https://api.akuuk.com/operation/:type
POST https://api.akuuk.com/operation/:type
Security
The security API provides a set of security tools to integrate and build a secure application. The security API gives a comprehensive visibility into the API and your application usage and security incidents through detailed logs and dashboards, enabling prompt response and auditing for compliance.
The security API request uses the endpoints:
GET https://api.akuuk.com/security/:type
POST https://api.akuuk.com/security/:type
Webhook
The webhook API let's you listen for events from your account on your webhook endpoint so your integration can automatically trigger reactions to your application.
Tools
The tools API provides a collection of general-purpose APIs that solve common but difficult problems encountered during software development. The tools API are utilized across many different industries by software developers, data scientists, systems operators and cybersecurity professionals.
The tools API request uses the endpoints:
GET https://api.akuuk.com/tools/:type
POST https://api.akuuk.com/tools/:type