kuickpayDeveloper Portal
Institution/End-to-End/Bill Payment Spec

Bill Payment — API Specification

This is the spec for the API you build. After the consumer confirms payment, Kuickpay calls this endpoint to record the payment in your system. You must mark the bill as paid and return a confirmation.

What to build

Expose a POST endpoint. When called, mark the bill as paid in your DB using thetran_auth_idas the payment reference.

POST https://your-domain.com/your/payment/endpoint

Idempotency

If a duplicate transaction is received, return response_Code: "03".

If a bill is already paid and the customer attempts repayment, validate all four of the following. If they all match, return "03":

  • Consumer number
  • Date paid
  • tran_auth_id
  • Amount paid

In case of mismatch, return response_Code: "04" with message "Transaction mismatch".

Note: Do not restrict tran_auth_id to a single consumer number. Two different banks may send the same tran_auth_id simultaneously for different consumers.

Request (Kuickpay sends this)

Request Parameters

ParameterTypeRequiredMax LengthDescription
consumer_numbernumericrequired18Consumer/account number. Numeric characters only.
bank_mnemonicstringoptional7Short code of the payment channel. Optional.
tran_auth_idnumericrequired6Transaction auth ID generated by the payment channel. Numeric characters only. Used for idempotency.
paid_amountstringrequired122500
tran_datestringrequired8Transaction date in YYYYMMDD format (e.g. "20250615").
tran_timestringrequired6Transaction time in HHMMSS format (e.g. "143025").
reservedstringoptional100Optional metadata.

Request Example

POST https://your-domain.com/payment
Content-Type: application/json

{
  "consumer_number": "XXXXX0000000000001",
  "bank_mnemonic": "MCB",
  "tran_auth_id": "123456",
  "paid_amount": "250000",
  "tran_date": "20250615",
  "tran_time": "143025",
  "reserved": ""
}

Response (you return this)

Response Parameters

ParameterTypeRequiredMax LengthDescription
response_Codestringrequired2"00" = Success, "01" = Invalid Voucher Number, "03" = Already Paid, "05" = Error.
response_descriptionstringrequired100Human-readable result message.
Identification_parameterstringrequired50Your internal payment reference. Returned as-is by Kuickpay.
reservedstringoptional100Optional.

Response Example — Success

{
  "response_Code": "00",
  "response_description": "Payment Successful",
  "Identification_parameter": "YOUR-INTERNAL-REF-001",
  "reserved": ""
}

Response Codes

Your API must return one of these codes in response_Code.

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.
Next
Hybrid Integration — Insert Voucher
Insert Voucher →