Bill Initiator APIs
Call Kuickpay's V3 REST APIs to look up and pay bills on behalf of consumers. Three calls: Login → GetBillers → BillInquiryV3 → BillPaymentV3.
Generated October 20, 2026 — see the live docs for the full interactive reference.
Sandbox Base URL
https://sandbox-kpcore.kuickpay.com1. Authentication
/api/LoginLogin
Login with your Bill Initiator username and password to receive a JWT token and your API key / IN-ID. Pass X-API-KEY and IN-ID headers on every subsequent request.
| Field | Type | Req | Description |
|---|---|---|---|
| username | string | Yes | Your Bill Initiator username from the Business Portal. |
| password | string | Yes | Your password. |
Response
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiry": "2025-06-15T12:00:00Z",
"apiKey": "KP-XXXXXXXXXXXXXXXX",
"initiatorId": "INIT-XXXXX"
}apiKey as X-API-KEY and initiatorId as IN-ID on every Get Billers, Bill Inquiry, and Bill Payment request.2. Get Billers
/api/GetBillersGet Billers
Returns the full list of billers available on Kuickpay. Use bank_mnemonic from this response in Bill Inquiry and Bill Payment requests. Cache this list — it changes infrequently.
Authentication
X-API-KEYYour API keyIN-IDYour Initiator IDResponse
[
{ "billerID": "XXXXX", "billerName": "Utility Company", "bank_mnemonic": "UTIL", "category": "Utility", "isActive": true },
{ "billerID": "YYYYY", "billerName": "Telecom Provider", "bank_mnemonic": "TELCO", "category": "Telecom", "isActive": true }
]3. Bill Inquiry V3
/api/BillInquiryV3Bill Inquiry V3
Look up a consumer's bill. Save tran_auth_idfrom the response — it's required for payment.
Authentication
X-API-KEYYour API keyIN-IDYour Initiator ID| Field | Type | Req | Max Len | Description |
|---|---|---|---|---|
| consumer_number | numeric | Yes | 18 | Consumer/account number. First 5 digits identify the biller. Numeric characters only. |
| bank_mnemonic | string | No | 7 | Biller short code from Get Billers (e.g. MCB, HBL). Optional. |
| reserved | string | No | 100 | Optional metadata. Pass empty string if unused. |
| network | string | No | 20 | Payment network identifier. |
| channel | string | No | 20 | Channel identifier (e.g. MOBILE, WEB). |
Response — Success (00)
{
"response_Code": "00",
"response_description": "Success",
"consumer_detail": "JOHN DOE",
"bill_status": "U",
"due_date": "20250630",
"amount_within_due_date": "0000000250000+",
"amount_after_due_date": "0000000265000+",
"billing_month": "2506",
"date_paid": "",
"amount_paid": "",
"tran_auth_id": "",
"contact_number": "03001234567",
"email": "john.doe@example.com",
"reserved": "",
"institution_id": "XXXXX",
"institution_name": "Utility Company"
}amount_within_due_date / amount_after_due_date use AN14: a 13-digit amount left-padded with zeros (last 2 digits are minor units) followed by a +/- sign — e.g. Rs. 2,500.00 → 0000000250000+. tran_auth_id in the response is numeric only, max length 6, populated once the bill is paid.Response Codes
| Code | Meaning |
|---|---|
| 00 | Bill found — proceed to payment |
| 01 | Consumer number not found |
| 02 | Voucher is blocked or inactive |
| 03 | Unknown error or bad request |
| 04 | Invalid data — wrong credentials or malformed request |
| 05 | Server error — API or ERP system failed internally |
| 401 | Authentication failed — check X-API-KEY / IN-ID / IP |
4. Bill Payment V3
/api/BillPaymentV3Bill Payment V3
Execute a bill payment after a successful Bill Inquiry. Always call Bill Inquiry V3 first to confirm bill details with the consumer.
Authentication
X-API-KEYYour API keyIN-IDYour Initiator ID| Field | Type | Req | Max Len | Description |
|---|---|---|---|---|
| consumer_number | numeric | Yes | 18 | Consumer/account number (same as used in Bill Inquiry). Numeric characters only. |
| bank_mnemonic | string | No | 7 | Biller short code from Get Billers. Optional. |
| tran_auth_id | numeric | Yes | 6 | Your unique transaction ID. Numeric characters only. Used for idempotency and reconciliation. Not restricted to a single consumer number. |
| paid_amount | string | Yes | 12 | Amount paid in paisa (1 PKR = 100 paisa). E.g. Rs.2500 → "250000". |
| tran_date | string | Yes | 8 | Transaction date in YYYYMMDD format. |
| tran_time | string | Yes | 6 | Transaction time in HHMMSS format. |
| reserved | string | No | 100 | Optional metadata. Pass empty string if unused. |
tran_auth_id has already been processed before marking a bill as paid — if a duplicate is received, return response code 03. Do not restrict tran_auth_id to a single consumer number; two different banks may send the same value simultaneously for different consumers.Response — Success (00)
{
"response_Code": "00",
"response_description": "Bill Payment Successful",
"Identification_parameter": "123456",
"reserved": "",
"Is_BI_completed": true
}Response Codes
| Code | Meaning |
|---|---|
| 00 | Success |
| 01 | Invalid Voucher Number |
| 02 | Voucher is blocked. Payment not allowed |
| 03 | Already paid — duplicate tran_auth_id received |
| 04 | Invalid data — missing/wrong fields or bad credentials |
| 05 | Server error — API or ERP system failed internally |
| 401 | Authentication failed — check X-API-KEY / IN-ID / IP |