NepalPay QR
The NepalPay QR API facilitates QR-based payments via Nepal Clearing House Limited’s (NCHL) NepalPay QR standard. It enables CellPay users to make secure QR payments to merchants and service providers part of the interoperable national QR ecosystem.
Parse NepalPay QR
Endpoint:
{base-url}/payments/externalQr/validateAndParse
Method: POST
Request Headers:
The following HTTP headers are required when calling the API:
Content-Type: application/json
Cellpay-Access-Token: {{accessToken}}
Parse QR – Request Example
{
"qrMessage": "{{qrMessage}}"
}
Parse QR – Successful Response (Sample)
{
"status": true,
"sessionExpired": false,
"payload": {
"data": {
"responseCode": "000",
"responseMessage": "SUCCESS",
"validationTraceId": "2506220000284929YRB",
"instructionId": "CEL69043250622113954",
"qrType": "DYNAMIC",
"acquirerId": "00000000",
"countryCode": "NP",
"merchantPan": "kntbGGuDrqcmz41AWM/baQTSrch3PQb48OFQJxfhQwSik9sK8giNiYy1LajQ45YZ3s4/RGCDfSNsn9KFG1alO1WlMw1eza/14LXR3/E4afsVESFRusOnj8IkdHk3FnlHIz65rJqHjxc08sSaDRmWKQpVjg7/Fe66sSz+2DEET9A=",
"merchantCategoryCode": 0,
"transactionAmount": "500",
"transactionFee": 2.00,
"transactionCurrency": "NPR",
"merchantName": "Samajik Surakchha Kosh",
"merchantCity": "KTM",
"merchantCountryCode": "NP",
"merchantBillNo": "cellcom02",
"merchantTxnRef": "QR Payment",
"terminal": "SSF-101-APP-3",
"encKeySerial": "592886824955520617546386",
"network": "NEPALPAY-29",
"token": "vn6MFoobe7xr0qF0PHKzJhAg0KRAkcyJbKR4R3vAxk2DovAYIJLg1jEdLr2jt9Lw/OXDVGrSoCXkO43mrWf/DjvxkbnvkDcF7t606uqbnhyDESZK74IvrgRnpWWxJYLLIzZUQmUB8kfFO5tLIJs0k1Ry9N1d1U2UVEb3Hg2p+XU=",
"tokenString": "2506220000284929YRB,CEL69043250622113954,00000000,kntbGGuDrqcmz41AWM/baQTSrch3PQb48OFQJxfhQwSik9sK8giNiYy1LajQ45YZ3s4/RGCDfSNsn9KFG1alO1WlMw1eza/14LXR3/E4afsVESFRusOnj8IkdHk3FnlHIz65rJqHjxc08sSaDRmWKQpVjg7/Fe66sSz+2DEET9A=,0000,500,2.00,NPR,Samajik Surakchha Kosh,cellcom02,SSF-101-APP-3,000",
"qrId": "260"
},
"type": "NepalPayQR"
}
}
Book Payment
Endpoint:
{base-url}/payments/systemPayment
Method: POST
Request Headers:
The following HTTP headers are required when calling the API:
Content-Type: application/json
Cellpay-Access-Token: {{accessToken}}
Book Payment – Request Example
{
"transferTypeId": "{{transferTypeId}}",
"amount": "10",
"description": null,
"currencyId": "1",
"webRequest": true,
"customValues": [
{
"fieldId": "206",
"internalName": "QR_ID",
"value": "{{qrId}}"
},
{
"fieldId": "213",
"internalName": "SENDER_NUMBER",
"value": "{{SENDER_NUMBER}}"
},
{
"fieldId": "15",
"internalName": "PAYMENTMETHOD",
"value": "Account"
},
{
"fieldId": "35",
"internalName": "SELECTBANK",
"value": "{{senderBankCode}}"
},
{
"fieldId": "14",
"internalName": "ACCOUNTNUMBER",
"value": "{{senderBankAccountNumber}}"
}
],
"isOtpEnable": null,
"otp": null
}
Book Payment – Successful Response (Sample)
{
"status": true,
"sessionExpired": false,
"payload": {
"DoPaymentResult": {
"wouldRequireAuthorization": false,
"from": {
"id": {{fromMemberId}},
"name": "{{fromMemberName}}",
"username": "{{fromMemberUsername}}",
"mobileNo": "{{fromMemberPrincipal}}",
"premiumMember": false
},
"finalAmount": 10.00,
"formattedFinalAmount": "Rs. 10.00",
"fees": [
{
"name": "Fees",
"amount": 2.00,
"formattedAmount": "RS 2.00",
"description": "Transaction Fee"
}
],
"transferType": {
"id": {{transferTypeId}},
"name": "{{transferTypeName}}",
"title": "{{transferTypeTitle}}",
"from": {
"id": 5,
"name": "Transaction Account",
"currency": {
"id": 1,
"symbol": "रु",
"name": "Nepalese Rupee"
}
},
"to": {
"id": 6,
"name": "Cellcom Float Account",
"currency": {
"id": 1,
"symbol": "रु",
"name": "Nepalese Rupee"
}
}
},
"customValues": [
{
"internalName": "QR_ID",
"fieldId": 206,
"value": "{{qrId}}"
},
{
"internalName": "SENDER_NUMBER",
"fieldId": 213,
"value": "{{SENDER_NUMBER}}"
},
{
"internalName": "PAYMENTMETHOD",
"fieldId": 15,
"value": "Account"
},
{
"fieldId": "35",
"internalName": "SELECTBANK",
"value": "{{senderBankCode}}"
},
{
"fieldId": "14",
"internalName": "ACCOUNTNUMBER",
"value": "{{senderBankAccountNumber}}"
}
],
"isOtpEnable": false,
"showConsolidateAmount": false,
"bookingId": 356
}
}
}
Confirm Payment
Endpoint:
{base-url}/payments/confirmSystemPayment
Method: POST
Request Headers:
The following headers are required when calling the API:
Content-Type: application/json
Cellpay-Access-Token: {{accessToken}}
Confirm Payment – Request Example
{
"transferTypeId": "{{transferTypeId}}",
"amount": "500",
"description": null,
"currencyId": "1",
"webRequest": true,
"transactionPin": "xxxxxx",
"traceNumber": "CEL-123456",
"customValues": [
{
"fieldId": "206",
"internalName": "QR_ID",
"value": "{{qrId}}"
},
{
"fieldId": "213",
"internalName": "SENDER_NUMBER",
"value": "{{SENDER_NUMBER}}"
},
{
"fieldId": "15",
"internalName": "PAYMENTMETHOD",
"value": "Account"
},
{
"fieldId": "35",
"internalName": "SELECTBANK",
"value": "{{senderBankCode}}"
},
{
"fieldId": "14",
"internalName": "ACCOUNTNUMBER",
"value": "{{senderBankAccountNumber}}"
}
],
"isOtpEnable": null,
"otp": null,
"bookingId": 356
}
Confirm Payment – Successful Response (Sample)
{
"status": true,
"sessionExpired": false,
"payload": {
"ConfirmPaymentResult": {
"id": 171019,
"traceNumber": "CELL-123456", //Use consistent transaction IDs like CELL-001 or PRV-001 per your company's standard. Trace Number must be unique.
"pending": false
}
}
}
Service Parameters
| Parameter Name | Type | Required | Description |
|---|---|---|---|
transferTypeId | Integer | Yes | Unique identifier that represents the service or transfer type for the bill payment. |
amount | String | Yes | Amount to be paid for the bill. |
description | String | Yes | Description or purpose of the payment. |
currencyId | Integer | Yes | Defines the payment method used for the transaction. Use 1 for Account/Wallet payments and 2 for Loyalty payments. |