Appearance
Bill Presentment (Beta)
Retrieve outstanding bill information for a specific account or service. This enables your application to display current bill details, send bill reminders, and automate recurring payments.
Your application should dynamically populate the bill information based on the API response. If a particular piece of information (e.g., customer name) is not returned by the API for a biller, that label or field should not be displayed to the user.
TIP
For a step-by-step integration walkthrough, see the Bill Presentment Guide.
INFO
Integrate this API across all products. This will prevent the need to reintegrate it when a new biller is added later.
API Endpoint
http
GET https://api.iimmpact.com/v2/bill-presentmentRequest Headers
| Header | Description | Required |
|---|---|---|
X-Api-Key | Your API key | Yes |
X-Timestamp | Unix timestamp in seconds | Yes |
X-Nonce | Unique request identifier | Yes |
X-Signature | HMAC-SHA256 signature (v1=...) | Yes |
See API Key Authentication for how to sign your requests.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
account | string | Yes | The account number. For JomPAY, this is equivalent to Ref-1 |
product | string | Yes | Product code |
biller_code | string | No | The JomPAY biller code. Required if the product is JOMPAY |
ref2 | string | No | Optional reference field (Ref-2). Only used if the product is JOMPAY |
amount | string | No | Amount. This is only used if the product code is JOMPAY |
Response 200
INFO
Some response field names in this endpoint use PascalCase (e.g., BillerName, CustomerName). This differs from the camelCase or snake_case used by other endpoints. This is a legacy format maintained for backward compatibility.
| Field | Type | Description |
|---|---|---|
data | object | Bill information |
data.message | string | Short description of the result |
data.BillerName | string | Name of the biller |
data.CustomerName | string | Account holder name |
data.Outstanding | number | Account outstanding amount |
data.Balance | string | Account balance |
data.Data | string | Account data balance |
data.Address | string | Customer address |
data.E-Bill | string | A PDF version of the customer bill |
data.CustomField | any | Custom field from the biller. Type varies by biller — may be a string, number, object, array, or null |
data.DueDate | string | Bill due date |
metadata | object | Response metadata |
metadata.status_code | number | HTTP status code |
metadata.product_code | string | Product code queried |
metadata.last_updated | string | Timestamp (GMT+8) |
transaction_validity | boolean | Whether the account is valid for payment |
transaction_message | string | Validation result message |
error_message | string | Error label to display to the user |
Example Response:
json
{
"data": {
"message": "Account no is valid",
"BillerName": "Air Kelantan",
"CustomerName": "EN. MOHD MOKHTAR B.AWANG",
"Outstanding": 45.94,
"Balance": "",
"Data": "",
"Address": "KG. TUALANG KUDONG, 18500 LABIK, MACHANG.",
"E-Bill": null,
"CustomField": "",
"DueDate": "13/06/2025"
},
"metadata": {
"status_code": 200,
"product_code": "AKSB",
"last_updated": "19-05-2025 15:37:28"
},
"transaction_validity": true,
"transaction_message": "Account validation successful with AKSB.",
"error_message": ""
}Response 400
Returned when the account number or parameters are invalid.
| Field | Type | Description |
|---|---|---|
data | object | Empty or partial bill data |
data.message | string | Error description (e.g., Invalid account no) |
data.CustomerName | string | Empty string |
data.Outstanding | number | null |
data.Balance | string | Empty string |
data.Data | string | Empty string |
data.Address | string | Empty string |
data.E-Bill | string | Empty string |
data.CustomField | any | Empty string |
data.DueDate | string | Empty string |
metadata | object | Response metadata |
metadata.status_code | number | 400 |
metadata.product_code | string | Product code queried |
metadata.last_updated | string | Timestamp (GMT+8) |
transaction_validity | boolean | null |
transaction_message | string | null |
error_message | string | User-facing error message |
Example Response:
json
{
"data": {
"message": "Invalid account no",
"CustomerName": "",
"Outstanding": null,
"Balance": "",
"Data": "",
"Address": "",
"E-Bill": "",
"CustomField": "",
"DueDate": ""
},
"metadata": {
"status_code": 400,
"product_code": "JOMPAY",
"last_updated": "21-05-2025 13:40:23"
},
"transaction_validity": null,
"transaction_message": null,
"error_message": "The provided biller code is invalid"
}Error Messages
| API Error Message | Application Response/Action | Can User Proceed to Payment? |
|---|---|---|
Account no is valid | Display relevant bill information. If a particular piece of information is not returned by API, do not display that label or field to user | Yes |
Bill presentment is unavailable for this product | Do not display any bill information | Yes |
Service unavailable. Please try again later | Do not display any bill information | Yes |
Invalid account no | Prompt user with the error message displayed in response['error_message'] (see below) | No |
| Any other error | Do not display any bill information | Yes |
Possible error_message values:
The provided biller code is invalidThe provided amount is invalidInvalid account noRef-2 is required
