New Flow Tech Platform Public API Documentation

A comprehensive and professional guide to the API interface

Last Updated: 7 November 2025 12:00 AM UTC

Get Started Here

Welcome! This section will guide you through the initial setup, from obtaining your API credentials to understanding the request structure. Follow these steps to ensure a smooth and successful integration.

Welcome! This guide explains how to interact with the payment platform API services. Please read all instructions carefully.

Prerequisites

To integrate with the API services, you will need the following data:

UserName: Your username
Password: Your password
AccountNumber: Account number
API Token: Access token

Request Specifications

POST Request Method: POST
JSON Content Type: application/json

Generate Authentication Token

Important: The authentication token (Token) is generated using the following formula:
Token = md5(UserName + AccountNumber + md5(Password) + APIToken)

PHP Example

$token = md5($UserName . $AccountNumber . md5($Password) . $ApiToken);

C# Example

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();
        }
    }
}

Networks Data

Network Number Description

Services Data

Network Number Service Number Description

Endpoints

Login

POST https://softibs.com/rest-api/login
To obtain the access token, send 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 Fields
Field Name Description Required
AccountNumber Your account number on our platform Yes
UserName Your username Yes
Token Generate Authentication Token Yes
Response Examples
Response Type Response Example
Success Response
{
    "status": true,
    "message": "Login Successful",
    "access_token": "*********************",
    "token_expires": "2024-08-05 19:31:45"
}
Error Response
{
    "status": false,
    "message": "Error Message"
}

Global Operations

These operations relate to your account, such as checking balance, verifying transaction status, and reviewing feed vouchers.
Note: In these requests, NetworkNumber = 0 is set. The ServiceNumber specifies the requested service.

Check Balance

POST https://softibs.com/rest-api/
Required Request Headers
Header Name Value Description
api-token access_token From login request The access token obtained from the login request
Request Fields
Field Name Value Description
NetworkNumber 0 Global network number
ServiceNumber 1 Balance query service number
Response Examples
Response Type Response Example
Success Response
{
    "status": true,
    "agentBalance": 100,
    "message": "Agent Balance Query Success",
    "transactionID": 0
}
Error Response
{
    "status": false,
    "message": "Error Message"
}

Check Operation Status

POST https://softibs.com/rest-api/
Required Request Headers
Header Name Value Description
api-token access_token From login request The access token obtained from the login request
Operation Status:
  • 1 Ready (Success)
  • 0 Cancelled (Failed)
  • -1 Pending
Request Fields
Field Name Value Description
NetworkNumber 0 Global network number
ServiceNumber 2 Status query service number
TransactionID XXXXXXXXX Transaction ID from your system
Response Examples
Response Type Response Example
Successful Operation
{
    "status": true,
    "operationStatus": 1,
    "mobileNumber": "777777777",
    "price": 100,
    "message": "Ready",
    "details": "Operation notes",
    "transactionID": 1234,
    "referenceID": 4321
}
Failed Operation
{
    "status": true,
    "operationStatus": 0,
    "mobileNumber": "777777777",
    "price": 100,
    "message": "Cancelled",
    "details": "Operation notes",
    "transactionID": 1234,
    "referenceID": 4321
}
Pending Operation
{
    "status": true,
    "operationStatus": -1,
    "mobileNumber": "777777777",
    "price": 100,
    "message": "Pending",
    "details": "Operation notes",
    "transactionID": 1234,
    "referenceID": 4321
}
Error Response
{
    "status": false,
    "message": "Error Message"
}

Check Feed Vouchers

POST https://softibs.com/rest-api/
Required Request Headers
Header Name Value Description
api-token access_token From login request The access token obtained from the login request
Request Fields
Field Name Value Description
NetworkNumber 0 Global network number
ServiceNumber 3 Feed vouchers service number
Response Examples
Response Type Response Example
Success Response
{
    "status": true,
    "data": [
        {
            "Date": "2024-08-03",
            "Amount": "70000.00000",
            "Currency": "Yemeni Rial",
            "Notes": "Notes"
        },
        {
            "Date": "2024-08-01",
            "Amount": "100000.00000",
            "Currency": "Yemeni Rial",
            "Notes": "Notes"
        }
    ],
    "message": "Query Success"
}
Error Response
{
    "status": false,
    "message": "Error Message"
}

Games and Cards List

POST https://softibs.com/rest-api/
Required Request Headers
Header Name Value Description
api-token access_token From login request The access token obtained from the login request
Request Fields
Field Name Value Description
NetworkNumber 0 Global network number
ServiceNumber 4 Categories service number
Response Examples

The response contains a data array with a list of all available games and cards with their details.

Response Type Response Example
Success Response
{
  "status": true,
  "data": [
    {
      "TheNumber": 968,
      "ServiceName": "شدات بوبجي - Pubg UC",
      "CategoryName": "شدات بوبجي ( 60 شدة )",
      "GameUnitsCount": 60,
      "LinkCode": "pubg_60",
      "Price": 0.9,
      "CurrencyName": "دولار",
      "LocalPrice": 495,
      "LocalCurrencyName": "ريال يمني",
      "AllowFreeQuantity": false,
      "MinQuantity": 1,
      "MaxQuantity": 1,
      "RequiredFields": [
        {
          "FieldCode": "PlayerID",
          "FieldName": "رقم ايدي - اللاعب"
        }
      ]
    },
    {
      "TheNumber": 969,
      "ServiceName": "شدات بوبجي - Pubg UC",
      "CategoryName": "شدات بوبجي ( 120 شدة )",
      "GameUnitsCount": 120,
      "LinkCode": "pubg_120",
      "Price": 1.81,
      "CurrencyName": "دولار",
      "LocalPrice": 995.5,
      "LocalCurrencyName": "ريال يمني",
      "AllowFreeQuantity": false,
      "MinQuantity": 1,
      "MaxQuantity": 1,
      "RequiredFields": [
        {
          "FieldCode": "PlayerID",
          "FieldName": "رقم ايدي - اللاعب"
        }
      ]
    },
    {
      "TheNumber": 970,
      "ServiceName": "شدات بوبجي - Pubg UC",
      "CategoryName": "شدات بوبجي ( 325 شدة )",
      "GameUnitsCount": 325,
      "LinkCode": "pubg_325",
      "Price": 4.38,
      "CurrencyName": "دولار",
      "LocalPrice": 2409,
      "LocalCurrencyName": "ريال يمني",
      "AllowFreeQuantity": false,
      "MinQuantity": 1,
      "MaxQuantity": 1,
      "RequiredFields": [
        {
          "FieldCode": "PlayerID",
          "FieldName": "رقم ايدي - اللاعب"
        }
      ]
    },
    {
      "TheNumber": 971,
      "ServiceName": "شدات بوبجي - Pubg UC",
      "CategoryName": "شدات بوبجي ( 385 شدة )",
      "GameUnitsCount": 385,
      "LinkCode": "pubg_385",
      "Price": 5.2,
      "CurrencyName": "دولار",
      "LocalPrice": 2860,
      "LocalCurrencyName": "ريال يمني",
      "AllowFreeQuantity": false,
      "MinQuantity": 1,
      "MaxQuantity": 1,
      "RequiredFields": [
        {
          "FieldCode": "PlayerID",
          "FieldName": "رقم ايدي - اللاعب"
        }
      ]
    }
  ],
  "message": "Success",
  "transactionID": "1"
}
Error Response
{
    "status": false,
    "message": "Error Message"
}

Query Operations

POST https://softibs.com/rest-api/
Overview: These requests are used to query balance, Offers, and subscriptions for subscribers of Yemeni telecommunications companies.

Standard Request Structure

Typically, the request data is structured as follows:

NetworkNumber: The network number through which the request will be made
ServiceNumber: The number of the query service requested
MobileNumber: The subscriber's phone number
TransactionID: A unique transaction ID for each request

Query Subscriber Balance and Offers

Required Request Headers
Header Name Value Description
api-token access_token From login request The access token obtained from the login request
Request Fields
Field Name Example Value Description
NetworkNumber 1 Network Number:
  • 1 - Yemen Mobile
  • 5 - ADSL
  • 6 - Landline
  • 7 - Yemen 4G
ServiceNumber 101 Requested Service Number:
  • 101 - Yemen Mobile Balance
  • 102 - Yemen Mobile Loan
  • 107 - Yemen Mobile Offers
  • 501 - ADSL Balance
  • 601 - Landline Balance
  • 701 - Yemen 4G Balance
MobileNumber 7XXXXXXXX Phone number to query
Accepted formats: 7XXXXXXXX - 0XXXXXXX - 10XXXXXX
TransactionID XXXXXXXXX A unique transaction ID for each request
Required Must be unique
Response Examples

Field Information:
  • mobileType: Subscription type
    • 1 Prepaid
    • 2 Postpaid
{
    "status": true,
    "mobileBalance": 154.15,
    "availableCredit": "",
    "mobileType": 1,
    "mobileTypeName": "Prepaid",
    "message": "Balance Query Success",
    "transactionID": 0
}

{
    "status": true,
    "loanStatus": false,
    "loanStatusString": "Number not loaned",
    "message": "Balance Query Success"
}

The response contains a data array with all active Offers for the subscriber:

{
    "status": true,
    "data": [
        {
            "offerID": "A115887147",
            "offerName": "4G SIM",
            "offerStartDate": "2020-01-01 03:00:00",
            "offerEndDate": "2037-01-01 00:00:00"
        },
        {
            "offerID": "A4990006",
            "offerName": "Prepaid Forjy Volti Monthly Offer",
            "offerStartDate": "2024-07-21 17:14:06",
            "offerEndDate": "2024-08-19 23:59:59"
        }
    ],
    "message": "Balance Query Success"
}

{
    "status": true,
    "mobileBalance": "44.18 GB",
    "expiredDate": "21/10/2024",
    "offerAmount": "12600",
    "minAmount": "250",
    "message": "Balance Query Success",
    "transactionID": "1"
}

{
    "status": true,
    "mobileBalance": "2869",
    "message": "Balance Query Success",
    "transactionID": "1"
}

{
    "status": true,
    "mobileBalance": "26.90 GB",
    "expiredDate": "2024-11-06",
    "offerAmount": "2400",
    "offerSize": "2400",
    "callBalance": "",
    "message": "Balance Query Success",
    "transactionID": "1"
}
Response Type Example
Error Response
{
    "status": false,
    "message": "Error Message"
}

Payment Operations

Important Note: The following optional fields can be added to all payment operation requests:
WebHookURL (Optional):

A URL in your system that will be automatically called when the request status changes. This allows your system to receive updates without the need for manual querying.

WebHookCode (Optional):

An optional code or password for the transaction. It is sent with the request to the WebHook URL as a transaction signature to prevent conflicts. It is recommended to be unique for each transaction.


Balance Payment

POST https://softibs.com/rest-api/
Required Request Headers
Header Name Value Description
api-token access_token From login request The access token obtained from the login request
Request Fields
Field Name Example Value Description
NetworkNumber 1 The network number to be used
ServiceNumber 103 The service number to be executed
MobileNumber 7XXXXXXXX Subscriber's phone number
Formats: 7XXXXXXXX - 0XXXXXXX - 10XXXXXX
Amount 100 Payment or recharge amount:
Important: In some networks, this amount represents the number of units:
  • Sabafon, YOU Telecom, and Y Telecom: Amount = Number of units × Unit price
    Example: If the unit price is 1.21 and the amount is 10, the total price = 12.1
  • Yemen Mobile, Landline, ADSL, Yemen 4G: Amount = Direct recharge value
TransactionID xxx A unique transaction ID in your system
Required Must be unique
WebHookURL https://your-domain.com/webhook Optional URL to receive request status updates automatically
WebHookCode xxxxxxxxx Optional Transaction signature code
Response Examples
Response Type Response Example Field Explanation
Success Response
{
    "status": true,
    "operationStatus": 1,
    "agentBalance": 2445990.29131,
    "price": 5227,
    "message": "Payment success",
    "transactionID": "1",
    "referenceID": 243085
}
Field Explanation:
  • status: Overall request status true = Success
  • operationStatus: Operation status
    • 1 Successful
    • 0 Failed
    • -1 Pending
  • agentBalance: Agent balance after the operation
  • price: Transaction price
  • message: Descriptive message
  • transactionID: Transaction ID from your system
  • referenceID: Reference ID from our platform
Error Response
{
    "status": false,
    "message": "Error Message"
}

Package Payment

POST https://softibs.com/rest-api/
Note: To request package recharge for telecom companies:
  • Instead of the Amount field, use the OfferCode field
  • OfferCode: The code of the package or bundle to be requested from our platform
Required Request Headers
Header Name Value Description
api-token access_token From login request The access token obtained from the login request
Request Fields
Field Name Example Value Description
NetworkNumber 2 The network number to be used for recharge
ServiceNumber 202 The requested query service number
MobileNumber 7XXXXXXXX Subscriber's phone number
Formats: 7XXXXXXXX - 73XXXXX - 71XXXXXX - 70XXXXXX
OfferCode PREWhatsApp Package Code
The linking code of the package in the system
TransactionID xxx A unique transaction ID in your system
Required Must be unique
WebHookURL https://your-domain.com/webhook Optional URL to receive status updates
WebHookCode xxxxxxxxx Optional Signature code
Response Examples
Response Type Response Example Field Explanation
Success Response
{
    "status": true,
    "operationStatus": 1,
    "agentBalance": 2445990.29131,
    "price": 5227,
    "message": "Payment success",
    "transactionID": "1",
    "referenceID": 243085
}
Same response structure as in Balance Payment
Error Response
{
    "status": false,
    "message": "Error Message"
}

Games and Cards Payment

POST https://softibs.com/rest-api/
Required Request Headers
Header Name Value Description
api-token access_token From login request The access token obtained from the login request
Request Fields
Field Name Example Value Description
NetworkNumber 8 Network number (8 or 9 for games)
ServiceNumber 801 The requested service number
MobileNumber - Phone number for recharge (may be empty in some cases)
LinkCode pubg_60 Category or Service Code
Get it from the Games and Cards List request
Fields
{
    "ZoneID": "ThePlayerZoneID",
    "PlayerID": "ThePlayerID",
    "EmailAddress": "email@example.com"
}
JSON format field
Contains necessary information such as player ID or email address
Quantity 1 Required quantity
Used in categories that allow free quantities such as number of coins
TransactionID xxx Unique transaction ID
Required Must be unique
WebHookURL https://your-domain.com/webhook Optional URL to receive updates
WebHookCode xxxxxxxxx Optional Signature code
Response Examples
Response Type Response Example Field Explanation
Success Response
{
    "status": true,
    "operationStatus": 1,
    "agentBalance": 2445990.29131,
    "price": 5227,
    "message": "Payment success",
    "transactionID": "1",
    "referenceID": 243085
}
Same response structure as in previous operations
Error Response
{
    "status": false,
    "message": "Error Message"
}

WebHook Request Example

If you set WebHookURL to https://your-domain.com/webhook and WebHookCode to xxxxxxxxx, our platform will send a request to your system when the operation is updated as follows:

Endpoint: https://your-domain.com/webhook
Method: GET
Request Parameters
{
    "OperationStatus": 1,
    "WebHookCode": "xxxxxxxxx",
    "TransactionID": "TransactionID From Your System",
    "ReferenceID": 220065,
    "price": 507.87,
    "message": "Order Success"
}
Parameter Description
Parameter Description
OperationStatus Operation status:
  • 0 Failed
  • 1 Ready
WebHookCode The code you provided when creating the request to prevent conflicts
TransactionID The unique transaction ID in your system
ReferenceID Reference number or transaction number on our platform
price The cost of the operation that will be deducted from your account
message Notes or comments about the operation status
Note: The parameters will not be in JSON format in the actual request. They are shown here in JSON format for illustration only. The parameters will be sent as a query string in the URL.
Actual Request Example
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"