Introduction
IIMMPACT API is organized around REST. Our API has predictable resource-oriented URLs, accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.
You can use the IIMMPACT API in staging mode, which doesn't affect live transaction. This staging environment is setup to test on the flow.
IIMMPACT API doesn't support bulk updates. You can work on only one object per request.
To optimize performance and reliability, IIMMPACT has established rate limits and allocations for API endpoints.
What made this section unhelpful for you?
Base URL
Production:
https://api.iimmpact.com/v2
Staging:
https://staging.iimmpact.com/v2
Authenticate
Our API uses Bearer Token to authenticate requests. You can create your account to generate token through our Dashboard. For staging please use this LINK to create your account.
Your API keys carry many privileges, so be sure to keep them secure. Don't share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth.
Balance
The Balance API allows you to retrieve the current balance of your IIMMPACT account.
When making a request to the Balance API endpoint, you will receive a response containing the current balance information. This response includes details such as the account id , account name and total balance.
Keep in mind that the balance returned by this API endpoint include pending transactions. If you need to retrieve a more detailed view, login to Dashboard and go to Report to view Transaction History and Balance Statement.
Please note that authentication is required to access the Balance API endpoint. You will need to include your idToken
in the request header to authenticate and authorize the request.
Topup
The topup API endpoint allows you to perform topup or check transaction related to top-up. This endpoint provides access to details such as the amount, date, and status of each top-up transaction. The information returned by this API can be used to track and monitor top-up activity within the system.
The diagram below illustrate the standard flow in using the topup API :

What made this section unhelpful for you?
Reloads and Bill Payment
Most of our product follow this standard request schema. Only certain products (MobileData,PTPTN and Zakat) which required more details, then it would have a different schema.
Header Parameters
Body Parameters
A unique identifier to create / search for transaction. The maximum length is 25 characters
The product code for a the product. Refer to Product section to check what are the available product codes.
The account / phone number to receive the top-up. Refer to Product section to check on which product required this field.
The amount for the transaction. Refer to Product section to check on the denomination and type.
Responses
Response Attributes
What made this section unhelpful for you?
Response
{
"statuscode": "20",
"status": "Successful",
"account": "0113242124",
"product": "C",
"amount": "10",
"sn": "123456",
"pin": "",
"expiry": "",
"cost": "9.70",
"balance": "151.10",
"remarks": "",
"refid": "UID-123",
"timestamp": "2023-10-01 00:11:54",
"note": ""
}
Product Listing
The product API return the list of products and also the details. Our dashboard also have the feature to check on pricing and details of the products being offer depending on your accounts. Please check the below section.
Price List
To access the report , login to Dashboard and navigate to Price List.

Fields | Description |
Image | A logo of the products. |
Category | The product category i.e Broadband, Mobile Data and etc. |
ProductCode | The unique product code to be pass as to product parameter when calling v2/topup |
Product Name | The name of the product. |
Denomination | The available denomination of the product. |
Denomination Type | The type of the value to be passed into amount parameter when calling v2/topup. integer / decimal |
Unit Price | The unit price of the product. |
Discount | The discount given based on account. |
Update Time | Time taken for the transaction to be updated. |
API Parameter | Determine where to passed account number when calling v2/topup |
Note | Description on how to redeem / use a product ( Only applicable for certain products) |
Header Parameters
Query Parameters
Responses
Response Attributes
What made this section unhelpful for you?
Response
{
"status": "Active",
"category": "Mobile Postpaid",
"product_code": "CB",
"operator_code": "B",
"product_name": "Celcom Postpaid",
"denomination": "1-1000",
"unit_price": "1.0",
"discount": "0%",
"api_parameter": "account: Mobile Number/Account Number",
"update_time": "INSTANT",
"note": "",
"datatype": "Decimal",
"display_name": "Celcom",
"group_type": "Mobile",
"category_code": "B",
"has_subproduct": "false",
"should_sync": "true",
"product_img": "https://dashboard.iimmpact.com/img/CB.png"
}
Get Subproducts
The "Get Subproducts" API is an indispensable tool for retrieving comprehensive information about available internet plans. Its function is exceptionally valuable when dealing with dynamic or static product types.
When invoked, this API returns a list of internet plans relevant to the details supplied. These details can be specific to dynamic products, such as a specific phone number, or generic for static products.
For dynamic products, the API provides a tailored list of eligible internet plans for an individual phone number. This ensures that users only see the plans they can access, minimizing transaction errors and streamlining the user experience.
For static products, while calling the "Get Subproducts" API will return a uniform list of internet plans applicable to every phone number, it's not strictly necessary if the user already knows which plan they want to buy. Given that plans for static products remain consistent across all phone numbers, a user or application already familiar with the available plans can proceed directly to purchase without using this API.
In either case, usage of the "Get Subproducts" API is crucial for obtaining accurate and relevant data about the internet products available to the user. Its use is strongly recommended to ensure the best user experiences when selecting and purchasing internet plans.
Header Parameters
Query Parameters
Body Parameters
Customer's phone number
Mobile Internet Product Code
Responses
Response Attributes
Show child attributes
What made this section unhelpful for you?
Response
{
"data": [
{
"subproduct_code": "Everything Unlimited with Unlimited Weekly Pass RM12",
"display_name": "Hotlink Internet",
"denomination": 12,
"validity": "7 day",
"description": "Everything Unlimited with Unlimited Weekly Pass RM12"
},
{
"subproduct_code": "30GB Pakej Perpaduan for 180 Days (3Mbps)",
"display_name": "Hotlink Internet",
"denomination": 30,
"validity": "30 day",
"description": "30GB Pakej Perpaduan for 180 Days (3Mbps)"
},
{
"subproduct_code": "Unlimited data with hotspot and calls 30-days (3Mbps) H",
"display_name": "Hotlink Internet",
"denomination": 40,
"validity": "30 day",
"description": "Unlimited data with hotspot and calls 30-days (3Mbps) H"
},
{
"subproduct_code": "Roam like home 40GB RM45",
"display_name": "Hotlink Internet",
"denomination": 45,
"validity": "30 day",
"description": "Roam like home 40GB RM45"
},
{
"subproduct_code": "Unlimited data with hotspot and calls 30-days (6Mbps) H",
"display_name": "Hotlink Internet",
"denomination": 50,
"validity": "30 day",
"description": "Unlimited data with hotspot and calls 30-days (6Mbps) H"
},
{
"subproduct_code": "Unlimited RM55 12Mbps with 5G (100GB) 30D",
"display_name": "Hotlink Internet",
"denomination": 55,
"validity": "30 day",
"description": "Unlimited RM55 12Mbps with 5G (100GB) 30D"
},
{
"subproduct_code": "Unlimited data with hotspot and calls 30-days (18Mbps) H",
"display_name": "Hotlink Internet",
"denomination": 60,
"validity": "30 day",
"description": "Unlimited data with hotspot and calls 30-days (18Mbps) H"
}
]
}
PTPTN
For PTPTN product it have a different top-up schema. It required identification number (IC) and sub product code. Account number from PTPTN can be retrieved from using the bill-presentment API together with the user's NRIC number.
Below diagram illustrate the flow to do a PTPTN top-up. Use the Retrieve PTPTN Accounts and Pay PTPTN for more details.

Mobile Data
This section of the documentation guides you through integrating the "Internet Top Up" feature into your application using the IIMMPACT API. As noted, this feature is supported only in version 2 of the API.
The Internet Top Up API endpoint empowers your application to provide users with the ability to top-up their mobile data directly. This works across multiple service providers, enhancing the user experience by eliminating the need to use third-party platforms or manually process the top-up.
Incorporating the "Internet Top Up" feature not only allows you to offer a comprehensive solution, thereby enriching the user experience, but can also enhance user engagement and retention on your platform. Remember, this feature is exclusive to version 2 of the IIMMPACT API, hence make sure to upgrade if you're using an older version.
Refer to the following section for detailed instructions, including step-by-step guides, code examples, and any special considerations for implementing this feature. A mobile data package, to put it simply, is an internet plan for prepaid numbers with specific parameters required for purchasing. Further intricacies and directions will be outlined in the specification below.
Status/Error Code
Clients send request to this method to initiate airtime recharge, bill payments, send gift transaction and all of the products available in the product list. Partner can check the transaction status by sending request to this method with the same parameters.
The following table lists and explains what type of error has occurred when a request was sent to the server. To simulate an error, send a request with the provided "Simulation Account Number" corresponding to the desired error type. This will allow you to test your application's error handling and display the appropriate error message to your users.
This Simulation Account Number should only be used in staging environment and NOT production.
The status code can be read in the response under data
object with the parameter name
Y
Submit the same request again to get the final transaction status. (Success / Fail)N
Transaction status is final. No resend needed.
Status Code | Status | Description | Retry | Simulation |
0 | Accepted | Transaction accepted and will be will be sent for processing. | Y | |
1 | Processing | Transaction is still being processing. | Y | |
20 | Successful | Transaction is successful. | N | |
41 | Failed | Client's account has been suspended or an unauthorized access has occurred. | N | 60123450041 |
43 | Failed | Insufficient credit on client's wallet | N | 60123450043 |
44 | Failed | Incorrect format or an invalid product has been passed | N | 60123450044 |
45 | Failed | Product out of stock | N | 60123450045 |
47 | Failed | Service currently unavailable. Try again later | N | 60123450047 |
48 | Failed | Transaction reject by provider | N | 60123450048 |
40,52 | Failed | Invalid account number/ Invalid mobile number or the mobile number has been barred/ terminated | N | 60123450052 |
54 | Failed | Duplicate transaction , daily account's transaction limit has been reached, refer to product list. | N | 60123450464 |
55 | Failed | Transaction failed due to timeout | N | 60123450055 |
56 | Failed | Account blacklisted | N | 60123450056 |
57 | Failed | Customer's mobile number activated | N | 60123450057 |
58,61 | Failed | Invalid Denomination or amount. | N | 60123450861 |
e-Sim
The e-SIM product offers global mobile connectivity, supporting up to 156 countries with plans for further expansion. This innovative solution eliminates the need for physical SIM cards, providing users with a flexible and transferable option. We offer different mobile plans based on the country, and to retrieve these plans, please use the specialized API described in the following sections. Further details on the integration process, API usage, and other technical specifications will be covered later in this document.
Beta
Bill Presentment List
Name | Product Code | Customer Name | Outstanding | Due Date |
Air Selangor | SYABAS | Yes | Yes | Yes |
Air Kelantan | ASKB | Yes | Yes | Yes |
Astro | ASB | Yes | No | No |
Indah Water Konsortium | IW | No | Yes | No |
Pengiran Air Pahang | PAIP | Yes | Yes | No |
Perak Water Board | PWB | No | No | No |
Kuching Water Board | KWB | No | No | No |
Ranhill SAJ | SAJ | No | No | No |
Syarikat Air Darul | SADA | No | No | No |
Syarikat Air Negeri Sembilan | SAINS | No | No | No |
Sabah Eletic | SESB | Yes | Yes | Yes |
Tenaga Nasional Berhad | TNB | No | Yes | Yes |
Celcom Postpaid | CB | No | Yes | No |
Redone Postpaid | RB | Yes | Yes | No |
Maxis Postpaid | MB | No | No | No |
XOX Postpaid | XB | Yes | Yes | Yes |
Digi Postpiad | DB | No | No | No |
Maxis Prepaid | M | No | No | No |
Redone Prepaid | RO | Yes | No | No |
Celcom Prepaid | C | No | No | No |
Digi Prepiad | D | No | No | No |
Majilist Daerah Kuala Langat | MDKL | Yes | Yes | Yes |
Majlis Perbandaran Sepang | MPSS | Yes | Yes | Yes |
Majlis Perbandaran Subang Jaya | MPSJ | Yes | Yes | Yes |
Header Parameters
ID Token From Authrorization
Query Parameters
The phone number/ account number of the product.
The product code of the product. Refer to product listing.
Responses
Response Attributes
Show child attributes
What made this section unhelpful for you?
Response
{
"data": {
"message": "Account no is valid",
"CustomerName": "",
"Outstanding": "0",
"Balance": "",
"Data": "",
"Address": "",
"E-Bill": "",
"CustomField": "",
"DueDate": "25/10/2023",
"metadata": {
"status_code": "200",
"product_code": "TNB",
"last_updated": "22-10-2023 12:34:07"
},
"transaction_validity": "false",
"transaction_message": "TNB Maximum count per acc/month exceeded"
}
}
Reconciliation
The reconciliation API's endpoint allows you to retrieve specific reports related to your data which can be sync to your ERP system. This API and Dashboard feature section provides functionalities to access various reports based on your requirements. The Reports API endpoint offers a straightforward way to retrieve detailed information and insights about your data.
To access the report , login to Dashboard and navigate to Statement Of Account and select Transaction Summary.
The Invoice statement is generated by month. You filter the result based on the date range. To extract the report, Click on the download button.

Import POSTMAN Collection
The following link contains all IIMMPACT API.
Click this LINK to import the our API collection into Postman.