Skip to main content

Smart QR

The NepalPay QR API facilitates QR-based payments via SmartQR MyQR standard. It enables CellPay users to make secure QR payments to merchants and service providers part of the interoperable QR ecosystem.

Parse Smart 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": "1",
"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,
"transactionPin": "XXXXXX"
}

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": 1.00,
"formattedFinalAmount": "NPR 1.00",
"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": 89
}
}
}

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": "1",
"traceNumber": "CEL-123456", //Use consistent transaction IDs like CELL-001 or PRV-001 per your company's standard. Trace Number must be unique.
"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": "",
"transactionPin": "XXXXXX",
"bookingId": 89
}

Confirm Payment – Successful Response (Sample)​

{
"status": true,
"sessionExpired": false,
"payload": {
"ConfirmPaymentResult": {
"id": 7285364,
"pending": false,
"traceNumber": "CEL-123456" //Use consistent transaction IDs like CELL-001 or PRV-001 per your company's standard. Trace Number must be unique.
}
}
}

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.