Mukalla Telecom Pro REST API Documentation
Comprehensive guide to integrate with our payment platform and telecom services
Get Started Here
Everything you need to begin integrating with our API
Welcome to the API Documentation
This documentation explains how to work with the API service of our Payment platform. Please read all instructions carefully to ensure successful integration.
Required Credentials
The following essential variables are required to integrate with our API services:
UserName
Your account username
Password
Your account password
AccountNumber
Your unique account identifier
API Token
Your API authentication token
API Configuration
application/json
JSON
UTF-8
Important Security Notice
- Keep your API credentials secure and never expose them in client-side code
- Use HTTPS for all API requests to ensure data encryption
- Implement proper error handling to avoid exposing sensitive information
- Rotate your API tokens regularly for enhanced security
Generate Login Token
Learn how to generate authentication tokens for API access
Generate Login Token and access token generation are performed by sending AccountNumber, UserName, and
Token in the request body fields.
Token Generation Formula
The Token field is generated using MD5 hashing with the following formula:
Token = md5(UserName + AccountNumber + md5(Password) + APIToken)
Example in PHP
$token = md5($UserName . $AccountNumber . md5($Password) . $ApiToken);
Example in C#
using System;
using System.Security.Cryptography;
using System.Text;
public class Program
{
public static void Main()
{
string UserName = "YourUserName";
string AccountNumber = "YourAccountNumber";
string Password = "YourPassword";
string ApiToken = "YourApiToken";
string token = GenerateToken(UserName, AccountNumber, Password, ApiToken);
Console.WriteLine(token);
}
public static string GenerateToken(string userName, string accountNumber, string password, string apiToken)
{
string innerMd5 = GetMd5Hash(password);
string concatenatedString = userName + accountNumber + innerMd5 + apiToken;
return GetMd5Hash(concatenatedString);
}
private static string GetMd5Hash(string input)
{
using (MD5 md5 = MD5.Create())
{
byte[] inputBytes = Encoding.UTF8.GetBytes(input);
byte[] hashBytes = md5.ComputeHash(inputBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
sb.Append(hashBytes[i].ToString("x2"));
}
return sb.ToString();
}
}
}
Next Steps
Once you've generated your token, you can proceed to the Login endpoint to obtain your access token for making authenticated API requests.
Networks Data
Available network providers and their identifiers
Each network has a unique identifier (Network Number) that you'll use when making API requests. Reference this table to find the correct network number for your operations.
| Network Number | Description |
|---|
Services Data
Complete list of available services across all networks
Services are organized by network. Each service has a unique Service Number that corresponds to a specific network operation. Use these numbers in your API requests to specify which service you want to access.
| Network Number | Service Number | Description |
|---|
API Endpoints
Complete reference for all available API endpoints
Login
Authenticationhttps://mukallatelecompro.nflow.tech/rest-api/login
Obtain an access token by sending a login request. The access_token
received will be used in all subsequent requests.
The response includes an access_token (for
future requests) and token_expires (token expiration date
and time). Ensure the access token is valid before making requests; otherwise, generate a
new one.
Request Body
| Field Name | Description | Required |
|---|---|---|
AccountNumber |
Your account number on our platform | Required |
UserName |
Your username on our platform | Required |
Token |
Generated token using the formula described in Generate Login Token | Required |
Response Examples
{
"status": true,
"message": "Login Successful",
"access_token": "*********************",
"token_expires": "2024-08-05 19:31:45"
}
{
"status": false,
"message": "Error Message"
}
Global Operations
These operations relate to your account, such as viewing the balance, checking transaction status, and reviewing feed entries.
Important: In these requests, the NetworkNumber
is typically set to 0. The ServiceNumber
specifies the desired service from network 0.
Examples:
- To check account balance:
ServiceNumber = 1 - To check transaction status:
ServiceNumber = 2 - To view feed vouchers:
ServiceNumber = 3
Get Account Balance
Queryhttps://mukallatelecompro.nflow.tech/rest-api/
Retrieve your current account balance.
Request Headers
| Header Name | Value | Description |
|---|---|---|
api-token |
access_token from Login Request |
Access token obtained from the Login endpoint |
Content-Type |
application/json |
Specifies the media type of the resource |
Request Fields
| Field Name | Value | Description |
|---|---|---|
NetworkNumber |
0 |
Global Network Number |
ServiceNumber |
1 |
Service Number for balance query |
Response Examples
{
"status": true,
"agentBalance": 100,
"message": "Agent Balance Query Success",
"transactionID": 0
}
{
"status": false,
"message": "Error Message"
}
Get Operation Status
Queryhttps://mukallatelecompro.nflow.tech/rest-api/
Check the status of a specific operation using your transaction ID.
To check an operation's status, send a request with ServiceNumber
= 2 and include your system's TransactionID.
The response includes:
status: Overall request statusoperationStatus: Transaction status (1: Ready, 0: Failed, -1: Pending)mobileNumber: Phone numberprice: Transaction pricemessage: Status messagedetails: Additional transaction notestransactionID: Your system's transaction numberreferenceID: Our system's transaction number
Request Headers
| Header Name | Value | Description |
|---|---|---|
api-token |
access_token from Login Request |
Access token obtained from the Login endpoint |
Content-Type |
application/json |
Specifies the media type of the resource |
Request Fields
| Field Name | Value | Description |
|---|---|---|
NetworkNumber |
0 |
Global Network Number |
ServiceNumber |
2 |
Service Number for status query |
TransactionID |
Your Transaction ID |
Transaction ID from your system |
Response Examples
{
"status": true,
"operationStatus": 1,
"mobileNumber": "777777777",
"price": 100,
"message": "جاهزة",
"details": "Operation Notes",
"transactionID": 1234,
"referenceID": 4321
}
{
"status": true,
"operationStatus": -1,
"mobileNumber": "777777777",
"price": 100,
"message": "في الانتظار",
"details": "Operation Notes",
"transactionID": 1234,
"referenceID": 4321
}
{
"status": false,
"message": "Error Message"
}
Get Feed Clients Balance
Queryhttps://mukallatelecompro.nflow.tech/rest-api/
Display the feed vouchers that have been added to your account.
The response will include a data array of objects.
Each object contains:
Date: The date of the documentAmount: The amount that was addedCurrency: The name of the currencyNotes: Any notes related to the document
Request Headers
| Header Name | Value | Description |
|---|---|---|
api-token |
access_token from Login Request |
Access token obtained from the Login endpoint |
Content-Type |
application/json |
Specifies the media type of the resource |
Request Fields
| Field Name | Value | Description |
|---|---|---|
NetworkNumber |
0 |
Global Network Number |
ServiceNumber |
3 |
Service Number for clients balance |
Response Example
{
"status": true,
"data": [
{
"Date": "2024-08-03",
"Amount": "70000.00000",
"Currency": "ريال يمني",
"Notes": "Notes"
},
{
"Date": "2024-08-01",
"Amount": "100000.00000",
"Currency": "ريال يمني",
"Notes": "Notes"
}
],
"message": "Query Success"
}
{
"status": false,
"message": "Error Message"
}
Get Games and Gift Cards Categories
Queryhttps://mukallatelecompro.nflow.tech/rest-api/
Retrieve a list of available games and gift card categories with pricing and requirements.
Request Headers
| Header Name | Value | Description |
|---|---|---|
api-token |
access_token from Login Request |
Access token obtained from the Login endpoint |
Content-Type |
application/json |
Specifies the media type of the resource |
Request Fields
| Field Name | Value | Description |
|---|---|---|
NetworkNumber |
0 |
Global Network Number |
ServiceNumber |
4 |
Service Number for categories |
Response Example
{
"status": true,
"data": [
{
"TheNumber": 1,
"ServiceName": "بـوبـجـي",
"CategoryName": "بوبجي ( 60 شدة )",
"GameUnitsCount": 60,
"LinkCode": "pubg_60",
"Price": 0.858,
"CurrencyName": "دولار",
"LocalPrice": 467.61,
"LocalCurrencyName": "ريال يمني",
"AllowFreeQuantity": false,
"MinQuantity": 1,
"MaxQuantity": 1,
"RequiredFields": [
{
"FieldCode": "PlayerID",
"FieldName": "رقم ايدي - اللاعب"
}
]
},
{
"TheNumber": 2,
"ServiceName": "بـوبـجـي",
"CategoryName": "بوبجي ( 120 شدة )",
"GameUnitsCount": 120,
"LinkCode": "pubg_120",
"Price": 1.716,
"CurrencyName": "دولار",
"LocalPrice": 935.22,
"LocalCurrencyName": "ريال يمني",
"AllowFreeQuantity": false,
"MinQuantity": 1,
"MaxQuantity": 1,
"RequiredFields": [
{
"FieldCode": "PlayerID",
"FieldName": "رقم ايدي - اللاعب"
}
]
},
{
"TheNumber": 1626,
"ServiceName": "يويو شات - Yoyo Chat",
"CategoryName": "يويو حسب الطلب",
"GameUnitsCount": 1,
"LinkCode": "YoyoChat",
"Price": 0.0009,
"CurrencyName": "دولار",
"LocalPrice": 0.495,
"LocalCurrencyName": "يمني",
"AllowFreeQuantity": true,
"MinQuantity": 250,
"MaxQuantity": 1000000,
"RequiredFields": [
{
"FieldCode": "PlayerID",
"FieldName": "رقم ايدي - اللاعب"
}
]
}
],
"message": "Success",
"transactionID": 1
}
{
"status": false,
"message": "Error Message"
}
Query Operations
Check balance, offers, and subscriptions for Yemeni telecom companies
https://mukallatelecompro.nflow.tech/rest-api/
These requests are used to check the balance, offers, and subscriptions of subscribers of Yemeni telecom companies. Typically, the request data is structured as follows:
NetworkNumber: The network number through which the request will be madeServiceNumber: The service inquiry number you want to requestMobileNumber: The subscriber's phone numberTransactionID: A unique transaction number for each request
Request Headers
| Header Name | Value | Description |
|---|---|---|
api-token |
access_token from Login Request |
Access token obtained from the Login endpoint |
Content-Type |
application/json |
Specifies the media type of the resource |
Request Fields
| Field Name | Value | Description |
|---|---|---|
NetworkNumber |
Example: 1 |
The network number through which the request will be made:
|
ServiceNumber |
101 |
The service inquiry number you want to request:
|
MobileNumber |
7XXXXXXXX - 0XXXXXXX - 10XXXXXX |
Mobile number to query |
TransactionID |
XXXXXXXXX |
A unique transaction number for each request. This number must be unique for every request |
Response Examples
Yemen Mobile Balance Success Response
{
"status": true,
"mobileBalance": 154.15,
"availableCredit": "",
"mobileType": 1,
"mobileTypeName": "دفع مسبق",
"message": "Balance Query Success",
"transactionID": 0
}
1: Prepaid,
2: Postpaid
Yemen Mobile Loan Success Response
{
"status": true,
"loanStatus": false,
"loanStatusString": "الرقم غير متسلف",
"message": "Balance Query Success"
}
Yemen Mobile Offers Success Response
{
"status": true,
"data": [
{
"offerID": "A115887147",
"offerName": "شريحه 4G",
"offerStartDate": "2020-01-01 03:00:00",
"offerEndDate": "2037-01-01 00:00:00"
},
{
"offerID": "A4990006",
"offerName": "باقة مزايا فورجي فولتي الشهريه دفع مسبق",
"offerStartDate": "2024-07-21 17:14:06",
"offerEndDate": "2024-08-19 23:59:59"
},
{
"offerID": "A3825",
"offerName": "دفع مسبق باقة نت توفير فورجي 5 جيجا الشهرية",
"offerStartDate": "2024-07-26 18:01:40",
"offerEndDate": "2024-08-24 23:59:59"
}
],
"message": "Balance Query Success"
}
ADSL Balance Success Response
{
"status": true,
"mobileBalance": "44.18 جيجابايت",
"expiredDate": "21/10/2024",
"offerAmount": "12600",
"minAmount": "250",
"message": "Balance Query Success",
"transactionID": "1"
}
Landphone Balance Success Response
{
"status": true,
"mobileBalance": "2869",
"message": "Balance Query Success",
"transactionID": "1"
}
Yemen 4G Balance Success Response
{
"status": true,
"mobileBalance": "26.90جيجابايت",
"expiredDate": "2024-11-06",
"offerAmount": "2400",
"offerSize": "2400",
"callBalance": "",
"message": "Balance Query Success",
"transactionID": "1"
}
{
"status": false,
"message": "Error Message"
}
Payment Operations
Execute payment transactions for balance, offers, and gaming services
Optional Webhook Fields
Optional fields can be included in all payment operations requests:
WebHookURL: A URL in your system that our platform will call when the status of the order changes. This allows your system to receive updates without the need to query the transaction status manually.WebHookCode: An optional code or password for the transaction. It will be sent along with the request to the WebHook URL provided in the request. This code acts as a signature for the transaction and helps prevent conflicts. It is recommended that this code be unique for each transaction.
Payment Balance
Paymenthttps://mukallatelecompro.nflow.tech/rest-api/
Request Headers
| Header Name | Value | Description |
|---|---|---|
api-token |
access_token from Login Request |
Access token obtained from the Login endpoint |
Content-Type |
application/json |
Specifies the media type of the resource |
Request Fields
| Field Name | Value | Description |
|---|---|---|
NetworkNumber |
Example: 1 |
The network number you want to use |
ServiceNumber |
Example: 103 |
The service number you wish to request |
MobileNumber |
7XXXXXXXX - 0XXXXXXX - 10XXXXXX |
The subscriber's mobile phone number |
Amount |
100 |
The payment amount or the amount you wish to charge to the mobile number. Note:
|
TransactionID |
xxx |
A unique transaction ID in your system. Each transaction must have a unique ID, and the same ID cannot be used for multiple transactions. |
WebHookURL Optional
|
https://your-domain.com/webhook |
A URL in your system that our platform will call when the status of the order changes |
WebHookCode Optional
|
xxxxxxxxx |
An optional code or password for the transaction. It will be sent along with the request to the WebHook URL |
Response Example
Success Response
{
"status": true,
"operationStatus": 1,
"agentBalance": 2445990.29131,
"price": 5227,
"message": "Payment success",
"transactionID": "1",
"referenceID": 243085
}
status: The overall status of the request. Iftrue, it indicates that the request was successful as a whole.operationStatus: The status of the operation. Values:1: Successful,0: Failed,-1: PendingagentBalance: The agent's balance after the transaction.price: The price of the transaction.message: Notes or remarks about the transaction.transactionID: The unique transaction ID sent from your side.referenceID: The reference ID for the transaction from our platform.
{
"status": false,
"message": "Error Message"
}
Payment Offers
Paymenthttps://mukallatelecompro.nflow.tech/rest-api/
For requesting payment offers to telecom companies.
Instead of the Amount field, use
the OfferCode field. The OfferCode is the code of the offer or package you want to
request from our platform.
Request Headers
| Header Name | Value | Description |
|---|---|---|
api-token |
access_token from Login Request |
Access token obtained from the Login endpoint |
Content-Type |
application/json |
Specifies the media type of the resource |
Request Fields
| Field Name | Value | Description |
|---|---|---|
NetworkNumber |
Example: 2 |
The network number through which the request will be made |
ServiceNumber |
Example: 202 |
The service inquiry number you want to request |
MobileNumber |
7XXXXXXXX - 73XXXXX - 71XXXXXX - 70XXXXXX |
The subscriber's mobile phone number |
OfferCode |
PREWhatsApp |
The Offer Link Code |
TransactionID |
xxx |
A unique transaction ID in your system |
WebHookURL Optional
|
https://your-domain.com/webhook |
A URL in your system for status updates |
WebHookCode Optional
|
xxxxxxxxx |
Optional code for transaction verification |
Response Example
{
"status": true,
"operationStatus": 1,
"agentBalance": 2445990.29131,
"price": 5227,
"message": "Payment success",
"transactionID": "1",
"referenceID": 243085
}
status: The overall status of the request. Iftrue, it indicates that the request was successful as a whole.operationStatus: The status of the operation. Values:1: Successful,0: Failed,-1: PendingagentBalance: The agent's balance after the transaction.price: The price of the transaction.message: Notes or remarks about the transaction.transactionID: The unique transaction ID sent from your side.referenceID: The reference ID for the transaction from our platform.
{
"status": false,
"message": "Error Message"
}
Payment Game Services and Gift Cards
Paymenthttps://mukallatelecompro.nflow.tech/rest-api/
Request Headers
| Header Name | Value | Description |
|---|---|---|
api-token |
access_token from Login Request |
Access token obtained from the Login endpoint |
Content-Type |
application/json |
Specifies the media type of the resource |
Request Fields
| Field Name | Value | Description |
|---|---|---|
NetworkNumber |
Example: 8 |
The network number through which the request will be made |
ServiceNumber |
Example: 801 |
The service inquiry number you want to request |
MobileNumber |
|
Mobile number to recharge (if applicable) |
LinkCode |
Example: pubg_60 |
The category or service code on our platform for which you want to create an order. Get this from Get Games and Gift Cards Categories Request |
Fields |
JSON
|
Field in JSON format. This field contains the necessary information for the requested category, such as the player's ID or email |
Quantity |
1 |
The quantity field is used in game charging categories that allow free quantities such as the number of coins or gold coins |
TransactionID |
xxx |
A unique transaction ID in your system |
WebHookURL Optional
|
https://your-domain.com/webhook |
A URL in your system for status updates |
WebHookCode Optional
|
xxxxxxxxx |
Optional code for transaction verification |
Response Example
{
"status": true,
"operationStatus": 1,
"agentBalance": 2445990.29131,
"price": 5227,
"message": "Payment success",
"transactionID": "1",
"referenceID": 243085
}
status: The overall status of the request. Iftrue, it indicates that the request was successful as a whole.operationStatus: The status of the operation. Values:1: Successful,0: Failed,-1: PendingagentBalance: The agent's balance after the transaction.price: The price of the transaction.message: Notes or remarks about the transaction.transactionID: The unique transaction ID sent from your side.referenceID: The reference ID for the transaction from our platform.
{
"status": false,
"message": "Error Message"
}
Example Webhook Request
If you set the WebHookURL to https://your-domain.com/webhook
and the WebHookCode to xxxxxxxxx, our
platform will send a request to your system upon updating the operation as follows:
https://your-domain.com/webhook
Parameters
{
"OperationStatus": 1,
"WebHookCode": "xxxxxxxxx",
"TransactionID": "TransactionID From Your System",
"ReferenceID": 220065,
"price": 507.87,
"message": "Order Success"
}
Note: The parameters will not be in JSON format in the actual request. They are shown here in JSON format for clarity. The parameters will be sent as a query string in the URL.
Parameter Descriptions
| Parameter | Description |
|---|---|
OperationStatus |
The status of the operation. Possible values: 0: Failed,
1: Ready
|
WebHookCode |
The code provided by you when creating the order to prevent conflicts |
TransactionID |
The unique ID of the transaction in your system |
ReferenceID |
The reference number or transaction ID on our platform |
price |
The cost of the operation that will be charged to your account |
message |
Notes or comments regarding the status of the operation |
Example Request
The request sent to your WebHookURL will look like this:
curl -G "https://your-domain.com/webhook" \
--data-urlencode "OperationStatus=1" \
--data-urlencode "WebHookCode=xxxxxxxxx" \
--data-urlencode "TransactionID=TXN789" \
--data-urlencode "ReferenceID=220065" \
--data-urlencode "price=507.87" \
--data-urlencode "message=Order received and under process"