kuickpayDeveloper Portal
kuickpayDeveloper Portal

Institution Integration

Kuickpay provides bill payment infrastructure to institutions, making their bills payable across all Kuickpay channels — mobile apps, internet banking, ATMs, and more. Two integration paths are available: End-to-End (you expose APIs, Kuickpay calls them) and Hybrid (you call Kuickpay's APIs).

Generated October 20, 2026 — see the live docs for the full interactive reference.

1. End-to-End Integration — you build these APIs

You build two REST endpoints on your server. Kuickpay calls them automatically whenever a consumer pays through any channel. Authentication uses username/password headers you provide to Kuickpay during onboarding. Always call Bill Inquiry before Bill Payment to confirm bill details with the consumer.

POST(your endpoint)

Bill Inquiry — API Specification

Kuickpay calls this endpoint when a consumer wants to inquire about your bill.

Request (Kuickpay sends this)

FieldTypeReqMax LenDescription
consumer_numbernumericYes18Consumer/account number sent by Kuickpay. First 5 digits identify your biller. Numeric characters only.
bank_mnemonicstringNo7Short code of the payment channel (e.g. MCB, HBL, UBL). Optional.
reservedstringNo100Optional metadata. Can be empty string.

Response (you return this)

FieldTypeReqMax LenDescription
response_CodestringYes2Two-digit result code. "00" = success.
response_descriptionstringYes100Human-readable result message.
consumer_detailstringYes50Customer name. No special characters.
bill_statusstringYes1"U" = Unpaid, "P" = Paid, "B" = Blocked. Omit when response_Code is "01".
due_datestringYes8Bill due date, YYYYMMDD.
amount_within_due_dateAN14Yes1413-digit amount, left-padded with zeros (last 2 digits = minor units), + a +/- sign. E.g. "0000000250000+" = Rs. 2,500.00.
amount_after_due_dateAN14Yes14Same AN14 format as amount_within_due_date.
billing_monthstringYes4Billing period, YYMM (e.g. "2506").
date_paidstringNo8Date paid, YYYYMMDD, if already paid.
amount_paidstringNo12Amount paid in paisa, if applicable.
tran_auth_idnumericNo6Transaction auth ID returned after successful payment. Numeric only.
contact_numberstringYes15Consumer contact number.
emailstringYes100Consumer email address.
institution_idstringYes10Your biller institution ID.
institution_namestringYes50Your institution name.
When response_Code is "01" (not found), return only response_Code and response_description — omit bill_status and all bill detail fields.

Response Codes

CodeMeaning
00Bill found successfully.
01Consumer number not found.
02Voucher is blocked or inactive.
03Unknown error or bad request.
04Invalid data — wrong credentials or malformed request.
05Server error — your API or ERP system failed internally.
POST(your endpoint)

Bill Payment — API Specification

Kuickpay calls this endpoint after the consumer confirms payment. Mark the bill as paid and return a confirmation.

Request (Kuickpay sends this)

FieldTypeReqMax LenDescription
consumer_numbernumericYes18Consumer/account number. Numeric characters only.
bank_mnemonicstringNo7Short code of the payment channel. Optional.
tran_auth_idnumericYes6Transaction auth ID generated by the payment channel. Numeric only. Used for idempotency.
paid_amountstringYes12Amount paid in paisa (e.g. "250000" = Rs. 2,500).
tran_datestringYes8Transaction date, YYYYMMDD.
tran_timestringYes6Transaction time, HHMMSS.
reservedstringNo100Optional.

Response (you return this)

FieldTypeReqMax LenDescription
response_CodestringYes2"00"=Success, "01"=Invalid Voucher Number, "03"=Already Paid, "05"=Error.
response_descriptionstringYes100Human-readable result message.
Identification_parameterstringYes50Your internal payment reference. Returned as-is by Kuickpay.
Always check if tran_auth_id has already been processed before marking a bill as paid — if a duplicate is received, return response_Code: "03". If a bill is already paid and the customer attempts repayment, validate consumer number, date paid, tran_auth_id, and amount paid all together. Do not restrict tran_auth_id to a single consumer number.

Response Codes

CodeMeaning
00Success.
01Invalid Voucher Number.
02Voucher is blocked. Payment not allowed.
03Already paid — duplicate tran_auth_id received.
04Invalid data — missing/wrong fields or bad credentials.
05Server error — your API or ERP system failed internally.
Once your endpoints are live, share the URLs, username, and password with the Kuickpay team via the Integration Setup tool to get your Institution ID and validate connectivity on UAT.

2. Hybrid Integration — you call these APIs

You have customer data but no public API endpoints. Push invoices into Kuickpay via Insert Voucher, the consumer pays through any channel, and you pull payment status via Payment Inquiry or Bulk Inquiry.

Sandbox Base URL

https://uat-adminapi.kuickpay.com
POST/api/insertPPMVoucher

Insert Voucher

Create a bill voucher for your customer. Once inserted, the customer can pay through any Kuickpay channel using the voucher number returned in response_description.

Authentication

usernameProvided by Kuickpay
passwordProvided by Kuickpay
FieldTypeReqMax LenDescription
institutionIDstringYes5Your Kuickpay-assigned institution ID.
registrationNumberstringYes—Your internal registration/reference number for this consumer.
head1 … head10stringNo—Description of fee heads 1–10 (e.g. "Fee", "Charges"). head1 is required; leave the rest empty if unused.
amount1 … amount10numberNo—Amount for each corresponding head, in PKR. amount1 is required; 0 for unused heads.
totalAmountnumberYes—Sum of amount1–amount10, in PKR.
dueDatestringYes—Bill due date, YYYY-MM-DD.
amountAfterDueDatenumberYes—Amount payable after due date, in PKR.
expiryDatestringYes—Voucher expiry date, YYYY-MM-DD.
issueDatestringYes—Voucher issue date, YYYY-MM-DD.
voucherMonthstringYes2Billing month, MM (e.g. "08").
voucherYearstringYes4Billing year, YYYY (e.g. "2026").
namestringYes—Consumer's full name.
mobilestringYes—Consumer's mobile number.
emailstringNo—Consumer's email address.
branchstringNo—Branch code or name.

Response

{
  "response_Code": "00",
  "response_description": "00008260900045228",
  "responseCode_Detail": "228"
}
POST/api/PaymentInquiry

Payment Inquiry

Check the payment status of a voucher created via Insert Voucher. Call periodically to update your payment records.

Authentication

X-API-KEYYour API key
IN-IDYour Institution Initiator ID
FieldTypeReqDescription
consumer_numberstringYesThe consumer/voucher number used when creating the invoice.
reservedstringNoOptional metadata.

Response

{
  "response_Code": "00",
  "response_description": "Success",
  "consumer_detail": "John Doe",
  "bill_status": "Paid",
  "due_date": "2025-06-30",
  "amount_within_due_date": "250000"
}
POST/api/BillPaymentBulkInquiry

Bulk Inquiry

Fetch all settled transactions for your institution on a given date. Useful for daily reconciliation.

Authentication

usernameProvided by Kuickpay
passwordProvided by Kuickpay
FieldTypeReqMax LenDescription
institutionIDstringYes—Your Kuickpay institution ID.
transactionDatestringYes8Date to fetch settled transactions for, yyyyMMdd (e.g. "20260831").
response_Code reflects the request status; transactionList[] holds the settled transactions and count their total.
POST/api/GetBillers

Get Billers

Returns all active billers and their mnemonic codes for use in the endpoints above.

Authentication

X-API-KEYYour API key
IN-IDYour Institution Initiator ID
POST/api/sendSMS · /api/sendEmail · /api/sendEmailNew

Notifications

Send SMS and email notifications to your customers — bill reminders, payment confirmations, or any message.

Send SMS

FieldTypeReqDescription
mobile_numberstringYesCustomer mobile number (Pakistani format, e.g. 03001234567).
messagestringYesSMS message text. Max 160 characters for single SMS.
reservedstringNoOptional metadata.

Send Email

FieldTypeReqDescription
emailstringYesCustomer email address.
subjectstringYesEmail subject line.
bodystringYesEmail body content. Plain text.
reservedstringNoOptional metadata.

Send Email (New) — supports HTML + attachments

FieldTypeReqDescription
emailstringYesCustomer email address.
subjectstringYesEmail subject line.
bodystringYesEmail body. Supports basic HTML.
attachmentsstring[]NoBase64-encoded attachment files.
reservedstringNoOptional metadata.

Response (all three endpoints)

{
  "response_Code": "00",
  "response_description": "Notification Sent Successfully",
  "reserved": ""
}
POST/api/UpdateSAFStatus

Update SAF Status

Update the Store and Forward (SAF) status for a transaction queued when the biller system was temporarily unavailable. Call once you have confirmed the final outcome.

Authentication

X-API-KEYYour API key
IN-IDYour Institution Initiator ID
FieldTypeReqDescription
tran_auth_idstringYesTransaction auth ID of the SAF transaction to update.
statusstringYesNew status: "SUCCESS" or "FAILED".
reservedstringNoOptional metadata.