Skip to main content

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 NameTypeRequiredDescription
transferTypeIdIntegerYesUnique identifier that represents the service or transfer type for the bill payment.
amountStringYesAmount to be paid for the bill.
descriptionStringYesDescription or purpose of the payment.
currencyIdIntegerYesDefines the payment method used for the transaction. Use 1 for Account/Wallet payments and 2 for Loyalty payments.