This is the api reference document for Multibank UPI PSP backend. In the multibank model all are Server to Server APIs. We use application/json content type for our request and response type.
Before this document explains more about every API, let's start with the philosophy behind the structure of request and response of the APIs.
HTTP Response Codes
500: This error will only come in case any of the internal service is down. Some examlples are newtork issue, server crashes, etc.
401: In case of signature mismatch or invalid credentials.
200: For all other queries. Any business logic or validation error can have a response as 200 OK but the data will have status = FAILURE. Details of this behavior will be explained later in this document.
Note
These are specific to our logic. While all other HTTP error codes are still valid.
x-response-signature and udfParameters will be only present in responses where HTTP response code is 200.
Following snippet shows the way to create a signature over the headers and payload of the request.
Note
The order of the parameters while creation of a string for signature should be adhered as above.
PSS padding is to be used for signature calculation.
RefUrl
An additional url that is provided by the merchant as a part of a p2m collect or intent request that provides additional information about the transaction, i.e., bill/invoice information.
RefCategory
The RefCategory field is used to identify the category of the transaction. It tells whether to show addition information (via refUrl) to the customer. RefCategory can take the following values:
00 -> NULL/Dont show additional information
01 -> Advertisement
02 -> Invoice.
There are others for future use.
Body
This is a JSON. Every API will have its own set of keys and structure. All the request parameters are mandatory for an api unless stated otherwise. The data type of all parameters is string.
Some of the APIs take a credblock string as input. This is an encrypted string generated by the NPCI Common Library and verifies the MPIN with customer bank. The credblock strings of various apis are dereived from a common data structure.
In the Set MPIN api for example, there are two data blocks. One for the OTP and one for the MPIN.
Initiation Mode
Mode
Meaning
00
Default txn
01
QR Code
02
Secure QR Code
03
Bharat QR
04
Intent
05
Secure Intent
06
NFC
07
BLE (Bluetooth)
08
UHF (Ultra High Frequency)
09
Aadhaar
10
SDK
11
UPI Mandate
12
FIR (Foreign Inward Remittance)
13
Static Secure QR Mandate (Offline)
14
Restricted
15
Dynamic QR Code (Offline)
16
Dynamic Secure QR Code (Offline)
17
Dynamic Secure QR Mandate (Offline)
18
ATMQR (Dynamic)
19
Online STATIC QR Code
20
Online STATIC Secure QR Code
21
Online Static QR Mandate
22
Online Dynamic QR Code
23
Online Dynamic Secure QR Code
24
Online Dynamic Secure QR Code Mandate
Purpose code
Code
Meaning
00
Default
01
SEBI
02
AMC
03
Travel
04
Hospitality
05
Hospital
06
Telecom
07
Insurance
08
Education
09
Gifting Common
10
BBPS
11
Global UPI
12
Metro ATM QR
13
Non-metro ATM QR
14
SI
15
Corporate disbursement
20
B2B transactions
25
RDS (For Govt. Securities via RBI Retail Direct Scheme with max limit upto 5L/txn for verified merchants, MCC 6211)
41
UPI Lite Initial Top Up
42
UPI Lite Subsequent Top Up
43
UPI Lite Deregistration with Amount in Wallet
44
UPI Lite Send Money
45
Offline Payments using Lite
46
UPI Lite Transfer Out
50
UPI Lite Zero Balance Disablement
60
Customer from another country wishes to pay to Indian Merchant
At the time of onboarding, PSP will share a public key with the merchant. The algorithm used for creating the signature is SHA256 RSA with PSS padding. Following snippet shows how merchant has to validate the signature at their end.
Note
The order of the parameters while creation of a string for signature should be adhered as above.
PSS padding is to be used for signature calculation.
Every valid API response will have a valid json as a response body. Our general philosophy around the response structure is, response json should contain a key called status. The value of this key can be SUCCESS or FAILURE.
Consumers should first look at this key and decide whether querying was a success or not. If status is SUCCESS, there will be another key as payload which will be the output for the API being consumed. In case of failure, check the keys called responseCode and responseMessage which will give details around the reason for querying failure.
Details about the structure will be explained later in this document.
Note
udfParameters will be only present in responses where HTTP response code is 200.
Some of the account management APIs return a vpaAccount object as part of their response. This is a nested json containing data related to the customer account and the vpas linked to it.
Response parameters
Parameter
Description
Values
bankCode
IIN of the bank for the account
String
bankName
Name of bank for the account
String
maskedAccountNumber
Masked account number as returned by NPCI
String
mpinLength
MPIN length for the account
String
mpinSet
Flag to denote if the account has MPIN set or not
Boolean string
otpLength
OTP length for the account
String
atmPinLength
ATM PIN length for the account used for FORMAT2 usecases
Every valid API response will have a valid json as a response body. Our general philosophy around the response structure is, response json should contain a key called status. The value of this key can be SUCCESS or FAILURE.
Consumers should first look at this key and decide whether querying was a success or not. If status is SUCCESS, there will be another key as payload which will be the output for the API being consumed. In case of failure, check the keys called responseCode and responseMessage which will give details around the reason for querying failure.
Common API Error Codes
# Here are some examples of error codes# HTTP 200 OK{"status": "FAILURE",
"responseCode": "BAD_REQUEST",
"responseMessage": "merchantCustomerId regex match not found"}# HTTP 200 OK{"status": "FAILURE",
"responseCode": "INVALID_DATA",
"responseMessage": "Invalid merchantCustomerRegistrationTokenReferenceId"}# HTTP 500{"status": "FAILURE",
"responseCode": "INTERNAL_SERVER_ERROR",
"responseMessage": "INTERNAL_SERVER_ERROR"}# HTTP 401{"status": "FAILURE",
"responseCode": "UNAUTHORIZED",
"responseMessage": "UNAUTHORIZED"}# HTTP 200 OK{"status":"FAILURE",
"responseCode": "SERVICE_UNAVAILABLE_NPCI_406",
"responseMessage": "UPI Service is not reachable at a moment"}
These are the common error codes which can come for any of the APIs,
responseCode
Meaning
BAD_REQUEST
This error will be returned in case a mandatory parameter is missing from the request or some regex mismatch happens.
INVALID_DATA
In case all madantory keys are passed, but they contain an incorrect value. For example, in send money api call merchant passes a payer vpa that does not belong to the customer.
INTERNAL_SERVER_ERROR
This error will be returned in case something went wrong with internal PSP components. For example, the database server went down. Ideally this error should never come.
UNAUTHORIZED
This error will come in case the validation of merchant signature fails at PSP.
DEVICE_FINGERPRINT_MISMATCH
This error will come in case the customer device fingerprint is not valid.
REQUEST_EXPIRED
This error will be returned in case the x-timestamp header passed in request is older than 30 minutes.
SERVICE*UNAVAILABLE*{entity}_{error}
This error will be returned in case the third party servers are not reachable from PSP. entity will be the third party that is not reachable like NPCI, etc. error will be the HTTP error returned by the third party servers like 406, timeout, reset, etc.
Error codes specific to particular APIs are discussed later in the document.
Note
In case of BAD_REQUEST and INVALID_DATA errors, the responseMessage field will have more details on the error.
HTTP 401 will be returned with UNAUTHORIZED.
HTTP 500 will be returned with INTERNAL_SERVER_ERROR.
HTTP 200 will be returned with all other error codes.
Merchants can setup monitoring of api responses at their end.
HTTP response codes can be monitored as described in the HTTP Response Codes section. Every valid API response will have a valid json as a response body. The response json should contain a key called status. The value of this key can be SUCCESS or FAILURE. In case of failure, check the keys called responseCode and responseMessage which will give details around the reason for querying failure.
Incase for an API, the PSP requires to interact with third party systems (like NPCI, CBS), additional parameters gatewayResponseStatus, gatewayResponseCode and gatewayResponseMessage will be returned in the response. gatewayResponseStatus is the status returned by the third party, gatewayResponseCode is the error code retuned by the third party and gatewayResponseMessage is a human readable error messsage for the error code.
Flows
This section describes the various flows supported by the PSP.
Device Binding
Device Registration with NPCI
Account Management
Transactions
Multiple APIs can be involved in each flow.
Utility APIs
These are the various utility apis.
List Banks
curl -L -X GET '{{host}}/api/n2/merchants/banks'# Response: HTTP 200 OK{"banks": [{"name": "Bank of XYZ",
"code": "12345",
"upiEnabled": true,
"referenceId": "JUS_ABCXYZ",
"mobRegFormat": "FORMAT1",
"versionSupported": {"Version": [{"description": "ITS A BASE VERSION",
"mandatory": "true",
"no": "1.0"},
{"description": "ITS A FIR VERSION",
"mandatory": "true",
"no": "2.0"},
{"description": "ITS A MANDATE VERSION",
"mandatory": "false",
"no": "2.1"},
{"description": "Lite",
"mandatory": "false",
"no": "2.98"},
{"description": "Credt card",
"mandatory": "false",
"no": "2.99"}]}}]}
This api can be used for getting the list of banks available on the UPI ecosystem.
Response parameters
Parameter
Description
Values
name
Name of the bank
String
code
Unique IIN for the bank
Numeric String
upiEnabled
Flag denoting whether bank is enabled for UPI or not
Boolean
referenceId
PSP generated reference id for bank
String
mobRegFormat
Mobile registraion format type for the bank
FORMAT1, FORMAT2, FORMAT3
versionSupported
Details of all the features supported by the bank
JSON
Note: This api does not require any authentication.
This API will start the device binding process and return an sms token. The sms token will provide the sms text and the virtual mobile number(VMN) for the sms to be sent from customer device. A new sms token will be returned every time this api is called.
Request parameters
Parameter
Description
Constraints
deviceId
Unique identifier for the device
String
os
Operating system running on the device
String
provider optional
Cellular provider for VMN selection strategy
String from ENUM [AIRTEL, VODAFONE, JIO, BSNL, UNKNOWN]
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
serviceProviders
Array of VMNs that can be used for device binding for this token
Array of object
name
Name of the VMN service provider like Vodafone, Airtel
String
number
Number of the VMN service provider
Numeric String
smsContent
SMS content to be used for device binding for this token
This api is used to bind the device to customer. If device binding is not completed before the expiry of sms token, the sms token will be marked as expired.
If responseCode = "SMS_VERIFICATION_PENDING" in the response, the api has to be retried.
Note: This api is idempotent for one day.
Request parameters
Param
Description
Constraint
merchantCustomerId
Unique identifier for the customer at merchant end
Alphanumeric string with dot(.). Max length 256
deviceId
Unique identifier for the device
String
attemptIdentifier
attemptIdentifier received in init response
String
mobileNumber
Expected mobile number of the customer
12 digit phone number as String
os
Operating system running on the device
String
manufacturer
Manufacturer of the device
String
model
Model of the device
String
version
Version of the device
String
ssid
Ssid of simId chosen for device binding
String
packageName
Package name of application
String
otp
OTP captured via SMS retriever API
String
senderId
Last 6 characters of SMS header
String
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
customerMobileNumber
Customer mobile number as received from the VMN aggregator
12 digits mobile number string
deviceFingerPrint
PSP generated fingerprint for the device used for binding
String
udfParameters optional
Udf parameters as passed in the request
JSON string
Additional Error Codes
responseCode
Meaning
SMS_VERIFICATION_PENDING
PSP has not recieved a callback from VMN yet, merchant to poll again.
SMS_VERIFICATION_EXPIRED
PSP did not recieve a callback from VMN within expiry, device binding expired.
REGISTRATION_DECLINED
Device binding declined because fraud was suspected.
This Api is used to activate the merchantCustomer to use UPI services with mobile number recieved in bindDevice response.
If responseCode = "SMS_VERIFICATION_PENDING" in the response, then device binding is not done yet.
If responseCode = "SMS_VERIFICATION_MISMATCH" in the response, customerMobileNumber will be present in the payload of response.
The deregisterOldCustomer flag can be used to handle the scenario where the given merchantCustomerId or mobileNumber is already registered. If this flag is passed as "false" then responseCode = "OPERATION_RESTRICTED_DEREGISTER_CUSTOMER" error will be returned, else the older customer will be auto deregistered.
Note: This api is idempotent for one day.
Request parameters
Param
Description
Constraint
merchantCustomerId
Unique identifier for the customer at merchant end
Alphanumeric string with dot(.). Max length 256
deregisterOldCustomer
Flag denoting whether the older customer should be deregistered or not
Boolean string
attemptIdentifier
attemptIdentifier received in init response
String
mobileNumber
Expected mobile number of the customer
12 digit phone number as String
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
customerMobileNumber
Customer mobile number as received from the VMN aggregator
12 digits mobile number string
deviceFingerPrint
PSP generated fingerprint for the device used for binding
String
udfParameters optional
Udf parameters as passed in the request
JSON string
Additional Error Codes
responseCode
Meaning
SMS_VERIFICATION_PENDING
Device binding is not success yet.
REGISTRATION_TOKEN_EXPIRED
PSP did not recieve a callback from VMN within expiry, device binding expired.
SMS_VERIFICATION_MISMATCH
Customer mobile number recieved from the VMN is not same as the one passed by merchant
BIND_DEVICE_LIMIT_EXCEEDED
Bind device limit has exceeded as per guidelines.
OPERATION_RESTRICTED_DEREGISTER_CUSTOMER
Active device binding already exists for the customer, deregister before continuing.
JPDL
If the merchantCustomer or mobile number is already binded and an active mandate is there.
This api can be used to deregister the customer from UPI ecosystem. Customers device binding, all vpas, all accounts and their mappings will be deleted.
Note: This is an idempotent api.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
delink optional
Delink type of the profile
CUSTOMER or PROFILE
appIds optional
Only for P2MSDK which is the list of merchants
Array of JSON of merchantId and channelId of partner app to be delinked
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
customerMobileNumber
Customer mobile number as per device binding
12 digits mobile number string
appIds optional
Only for P2MSDK which is the list of merchants
Array of JSON of merchantId and channelId of partner app which are delinked
This api returns the registration and account information maintained at the PSP for the customer. Merchants can use this api to periodically sync data with the PSP.
Note
You can add --header 'x-api-version: 1' to get UpiNumbers linked with the merchantCustomer.
This is yet to be launched in production.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
customerMobileNumber
Customer mobile number as per device binding
12 digits mobile number string
deviceFingerPrint
Fingerprint of the customer device
String
deviceId
Unique identifier for the customer device
String
manufacturer
Manufacturer of the customer device
String
model
Model of the customer device
String
version
Version of the operating system on the customer device
This api fetches customer accounts from NPCI. accounts will be present in the response only if gatewayResponseCode = "00". In case there are one or more accounts fetched, vpaSuggestions will be sent in response.
Note: In case merchant retries this api, the accounts will be fetched from NPCI again.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
upiRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with merchant prefix provided.
deviceFingerPrint
Device fingerprint of the customer
String
bankCode
Bank code (IIN) of selected bank
String
udfParameters optional
Stringified JSON for udf parameters
JSON string
accountType optional
Account Type(In CC TPAP should send accountType as CREDIT, in other cases they can skip sending this field)
String
packageName optional
Package name of the UPI application
String
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
customerMobileNumber
Mobile number of the customer
12 digits mobile number string
gatewayTransactionId
Transaction id returned by gateway
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
accounts optional
Bank accounts as returned by NPCI for the customer mobile number
This api Fetches active Vouchers for a given mobile number from NPCI.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
upiRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with merchant prefix provided.
deviceFingerPrint
Device fingerprint of the customer
String
fallbackDeviceFingerPrint optional
Fallback Device fingerprint of the customer
String
udfParameters optional
Stringified json for udf parameters.
String
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
customerMobileNumber
Customer mobile number
12 digits mobile number string
gatewayTransactionId
Transaction id returned by gateway
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
gatewayTimestamp
Gateway timestamp for the Api call.
String(YYYY-MM-DDTHH:MM:SS+05:30)
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
vpaSuggestions optional
VPA suggestions for the customer generated using a random combination of customers' name, mobile number, and account details. This will come only when available is false.
This api checks the availability of the VPA and also provides suggestion if the vpa is not available.
Note: This is an idempotent api.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
customerVpa
VPA of the customer for which the availability check is called.
something@handle
udfParameters optional
Stringified json for udf parameters.
String
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
customerMobileNumber
Customer mobile number
12 digits mobile number string
available
Availablity Status
String - "true", "false"
vpaSuggestions optional
VPA suggestions for the customer generated using a random combination of customers' name, mobile number, and account details. This will come only when available is false.
This api links the customer bank account to a vpa (ONE_TO_ONE mapping) / vpas (ONE_TO_MANY mapping). In case the vpa does not exist, same will be created.
If primaryAccountMapping is ONE_TO_ONE then account in request will be set primary for vpa passed in request.
If primaryAccountMapping is ONE_TO_ALL then account in request will be set primary for all vpas of a customer.
If primaryAccountMapping is NONE then account in request will not be set primary for vpa passed in request.
This is yet to be launched in production.
Additionally, if setAsDefaultBank is passed as "true", then the account becomes default for the customer and all his vpas. All incoming payments to any of the customer vpas will be credited to this account.
Note: This is an idempotent api.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
bankAccountUniqueId
Unique id for the bank account to be linked
bankAccountUniqueId in the response of Fetch Accounts api call.
customerVpa
VPA to which the bank account should be linked
something@handle
setAsDefaultBank
A flag denoting whether the account has to be made default for the customer
Boolean string
primaryAccountMapping
A flag denoting whether the account has to be made primary for the customer
ONE_TO_ONE, ONE_TO_ALL, NONE
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
This API will be used to resolve the name of the entity to whom a vpa belongs. In case of a valid vpa, it will provide the name and other details of the entity.
name, ifsc and iin will be sent in response only when gatewayResponseCode is "00".
isMerchantVerified, mcc and merchantType will be sent in response only when isMerchant is "true".
UPI Numbers can also be resolved using this API by passing the request parameter vpa in the format upiNumber@mapper.npci (Example: 9876543210@mapper.npci). The actual VPA mapped to the upiNumber shall be sent in the response parameter vpa.
Note:
For featureTags you will need to send x-api-version: 1 in headers.
Request parameters
Parameter
Description
Constraints
vpa
VPA to be verified
something@handle
upiRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with merchant prefix provided.
merchantCustomerId optional
Merchant generated unique profile id for customer as passed in the request
String
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
gatewayTransactionId
Transaction id returned by gateway
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
vpa
This is a vpa for which name should be resolved
As passed in request or the VPA mapped to a UPI number
name optional
Name of the customer
String
ifsc optional
IFSC code of the account linked to this VPA
String
iin optional
IIN code of the account linked to this VPA
String
isMerchant
Flag indicating whether the VPA is of merchant or not
Boolean string
isMerchantVerified optional
Flag indicating whether merchant is verified or not
Boolean string
mcc optional
Merchant Category Code for the merchant whose VPA is passed
String
merchantType optional
Merchant Type for the merchant whose VPA is passed
JSON
udfParameters optional
Udf parameters as passed in the request
JSON string
featureTags optional
This will be an array of feature values, each having it's own significance as decided by NPCI
Array of strings
Feature Tag Values
Feature value
Account Type
01
MANDATE
05
CREDIT
06
PPIWALLET
09
UOD
10
VOUCHER
11
Special commercials 1 for RuPay Credit Card on UPI
12
Special commercials 2 for PPI on UPI
13
Special commercials 3 for Credit Line on UPI
31
Credit Line Products
14 to 30
Reserved for future use-cases
Feature Tag Clarification table
Feature value
Meaning
01
Overall Mandate is supported at this merchant at the moment.
05
Overall Credit card on UPI is not accepted at this merchant at the moment.
06
Overall PPI on UPI is not accepted at this merchant at the moment.
09
Overall UOD on UPI is not accepted at this merchant at the moment.
10
Overall VOUCHER on UPI is not accepted at this merchant at the moment.
31
Overall Credit Line on UPI is not accepted at this merchant at this moment.
05,11
Credit Card on UPI is not accepted on this merchant at the moment, however, amount up to INR 2000 is accepted (Only for Small Offline merchants)
06,12
PPI on UPI is not accepted on this merchant at the moment, however, amount up to INR 2000 is accepted (Only for Small Offline merchants)
31,13
Credit Line on UPI is not accepted on this merchant at the moment, however, amount up to INR 2000 is accepted (Only for Small Offline merchants)
11
Invalid
12
Invalid
13
Invalid
Feature value - 11,12,13 always comes in conjunction with 05,06,31 respectively
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Vpa is verified.
ZH
FAILURE
Invalid vpa.
UX
FAILURE
Expired vpa.
ZE
FAILURE
Transaction not permitted to the vpa by PSP.
ZG
FAILURE
Vpa restricted by the customer.
U17
FAILURE
PSP is not registered i.e invalid vpa handle suffix.
This api will be used for completing all P2P and P2M Payment scenarios. This includes
Incoming Intent Payment
Scan and Pay (UPI QR & Bharat QR)
P2P Pay (Vpa & Account+IFSC)
Payment to PSP merchant
Self Pay
The api can be invoked to process different types of payments. The transactionType key of request is used to identify the type of payment. Possible values are P2M_PAY, P2P_PAY, SELF_PAY, INTENT_PAY and SCAN_PAY. Depending on the payment type, some additional parameters need to be passed.
P2M_PAY is to be used for payment to a PSP merchant only. The payeeVpa should be a valid PSP generated vpa for the merchant.
INTENT_PAY and SCAN_PAY are used for the intent and qr scan transactions. Both UPI QR and Bharat QR codes are supported.
P2P_PAY is to be used for completing all other P2P payment scenarios. For direct to account transfers, payeeVpa should be of format <account-no>@<ifsc-code>.ifsc.npci like 12345@BankIFSC.ifsc.npci.
SELF_PAY is to be used for doing a self transfer between customer accounts having same vpa domain.
Below are some request parameters required to be handled specifically according to the payment scenario.
Parameter
P2M Pay
P2P Pay
Scan & Pay
Incoming Intent
Self Pay
transactionType
P2M_PAY
P2P_PAY
SCAN_PAY
INTENT_PAY
SELF_PAY
payeeVpa
Mandatory
Mandatory
pa in deeplink url
pa in deeplink url
Mandatory
payeeName
Not Required
Not required for account transfers only
pn in deeplink url
pn in deeplink url
Mandatory
amount
Mandatory
Mandatory
am in deeplink url
am in deeplink url
Mandatory
splitDetails
Not Required
Not Applicable
split in deeplink url
split in deeplink url
Not Applicable
upiRequestId
Mandatory
Mandatory
tid in deeplink url
tid in deeplink url
Mandatory
remarks
Mandatory
Mandatory
tn in deeplink url
tn in deeplink url
Mandatory
refUrl
Not Required
Not Required
url in deeplink url
url in deeplink url
Not Required
refCategory
Not Required
Not Required
category in deeplink url
category in deeplink url
Not Required
currency
INR
INR
cu in deeplink url
cu in deeplink url
INR
mcc
Mandatory
Not Required
mc in deeplink url
mc pin deeplink url
Not Required
transactionReference
Not Required
Not Required
tr in deeplink url
tr in deeplink url
Not Required
payeeBankAccountUniqueId
Not Required
Not Required
Not Required
Not Required
Mandatory
initiatingChannel
Not Required
Optional
Not Required
Not Required
Not Required
location
Optional
Optional
Optional
Optional
Optional
geocode
Optional
Optional
Optional
Optional
Optional
mid
Optional
Optional
Optional
Optional
Optional
msid
Optional
Optional
Optional
Optional
Optional
mtid
Optional
Optional
Optional
Optional
Optional
mSubCode
Optional
Optional
Optional
Optional
Optional
mType
Optional
Optional
Optional
Optional
Optional
mGenre
Optional
Optional
Optional
Optional
Optional
mOnBoardingType
Optional
Optional
Optional
Optional
Optional
mRegId
Optional
Optional
Optional
Optional
Optional
mPinCode
Optional
Optional
Optional
Optional
Optional
mTier
Optional
Optional
Optional
Optional
Optional
mLoc
Optional
Optional
Optional
Optional
Optional
mInstCode
Optional
Optional
Optional
Optional
Optional
mBrand
Optional
Optional
Optional
Optional
Optional
mLegal
Optional
Optional
Optional
Optional
Optional
mFranchise
Optional
Optional
Optional
Optional
Optional
mOwnershipType
Optional
Optional
Optional
Optional
Optional
Note
Validity of a payeeVpa can be verified using the Verify VPA API.
SERVICE_UNAVAILABLE_{entity}_{error} will be returned in case of NPCI timeout or deemed transactions.
splitDetails enables Tips and Convenience Fee feature, encompassing details of customer-selected supplementary expenses.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
deviceFingerPrint
Device fingerprint of the customer
String
merchantRequestId
Merchant generated id for the transaction
35 characters alphanumeric
payerVpa
VPA of the customer to be used for payment
something@handle
payeeVpa
Vpa of the payee to whom money is being sent
something@handle
payeeName optional
Name of the payee
String as returned in the Verify VPA API
amount
Amount for transaction
Numeric string with two decimals
splitDetails optional
Supplementary Expenses of the transaction
List of JSON with name (supplementary expense) in string and value (amount) as numeric string with two decimals
upiRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with merchant prefix provided.
bankAccountUniqueId
Unique id for the payer selected bank account
bankAccountUniqueId in the response of Fetch Accounts api call
payeeBankAccountUniqueId optional
Unique id for the payee selected bank account for self transfer
bankAccountUniqueId in the response of Fetch Accounts api call
credBlock
Encrypted credblock containing user mpin
As returned by Common Library
remarks
Any transaction summary
50 characters alphanumeric with space and hyphen
currency
Currency code
String - INR
transactionType
Type of payment
P2M_PAY, P2P_PAY, INTENT_PAY or SCAN_PAY
upiNumbers optional
upiNumber of payee if transaction is done using UPI Number
8-10 digit Number
transactionReference optional
Transaction reference id
String
refUrl optional
Reference url for the intent transaction
String
refCategory optional
Details for refUrl, whether it is 01 (Advertisement), 02(Invoice)
This service shall facilitate customers who are live on UPI, to withdraw cash from ATMs (enabled for UPI-ATM (ICCW)) without using their card. ICCW transaction withdrawal is supported with initMode(18), purpose code (12,13) and mcc(6013) as received in the QR. mPinCode is required to be passed for ICCW Transactions. The transaction limit shall be applicable as per the existing NFS ATM transaction i.e. upto ₹.10,000/- per transaction. For ICCW, Issuer bank should support version 2.91.
This api is to review and take an action on a pending payment request. requestType can be APPROVE or DECLINE. If requestType is APPROVE, then payeeName and credBlock parameters are mandatory. A collect request is successfully approved when gatewayResponseCode is 00 in response. A collect request is successfully declined only when gatewayResponseCode is ZA in response.
Note:SERVICE_UNAVAILABLE_{entity}_{error} will be returned in case of NPCI timeout or deemed transactions.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
deviceFingerPrint
Device fingerprint of the customer
String
merchantRequestId
Merchant generated id for the transaction
35 characters alphanumeric
payerVpa
If collectType is null or TRANSACTION, Vpa of the customer request to be used for payment and if collectType is MANDATE, umn of the mandate.
payeeVpa
Vpa of the payee to whom money is being sent
something@handle
payeeName optional
Name of the payee
String
amount
Amount for transaction
Numeric string with two decimals
upiRequestId
Unique id sent to UPI switch for the transaction
35 character alphanumeric
collectType optional
Differentiates between a transaction collect request (TRANSACTION) or a mandate execution collect request (MANDATE).
TRANSACTION or MANDATE
requestType
Action to be taken on the collect request
APPROVE or DECLINE
bankAccountUniqueId
Unique id for the selected bank account
bankAccountUniqueId in the response of Fetch Accounts api call
credBlock optional
Encrypted credblock containing user mpin
As returned by Common Library
currency
Currency code
String - INR
udfParameters optional
Stringified JSON for udf parameters
JSON string
packageName optional
Package name of the UPI application
String
location optional
Location of the payer
String with a maximum length of 40.
geocode optional
Geocode of the payer
Numeric string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantRequestId
Merchant generated request id as passed in the collect request
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
customerMobileNumber
Customer mobile number
12 digits mobile number string
payerVpa
If collectType is null or TRANSACTION, Vpa of the customer who received the collect request and if collectType is MANDATE, umn of the mandate.
requestType
Action to be taken on the collect request. As passed in the request body
APPROVE or DECLINE
collectType optional
Differentiates between a transaction collect request (TRANSACTION) or a mandate execution collect request (MANDATE).
TRANSACTION or MANDATE
seqNumber optional
Denotes the recurring cycle of mandate execution. Will be received only during mandate executions.
String
payeeMcc
MCC for the payee
String
payeeMerchantCustomerId optional
Merchant generated unique id for customer who received the payment. Only if it is an onus P2P transaction.
String
payeeName
Name of the upi user who received the payment. Only if payment is done to a non A/C+IFSC vpa.
payeeVpa
Vpa of the upi user who received the payment
As passed in the request
refUrl
Reference url for the intent transaction
String
bankAccountUniqueId optional
Unique id for the selected bank account
As passed in the request
bankCode optional
Bank code of the account which was used
Valid bank IIN
maskedAccountNumber optional
Masked account number of the account which was used
XXXX123456
amount
Amount for the payment
As passed in the request
transactionTimestamp
Timestamp of when the transaction was attempted
YYYY-MM-DDTHH:MM:SS+05:30
gatewayTransactionId
Transaction id returned by gateway
String
gatewayReferenceId
Reference id returned by the gateway
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, DECLINED, FAILURE
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
gatewayPayerResponseCode optional
Response code returned by gateway
String
gatewayPayeeResponseCode optional
Response code returned by gateway
String
gatewayPayerReversalResponseCode optional
Response code returned by gateway
String
gatewayPayeeReversalResponseCode optional
Response code returned by gateway
String
riskScore optional
RiskScore shared by NPCI or Bank
String
udfParameters optional
Udf parameters as passed in the request
JSON string
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Collect request approved successfully.
ZA
DECLINED
Collect request declined successfully.
Z9
FAILURE
Insufficient funds in customer (remitter) account.
Z8
FAILURE
Per transaction limit exceeded as set by remitting member.
Z7
FAILURE
Transaction frequency limit exceeded as set by remitting member.
This api will be used for getting the status for both P2P and P2M transaction and the response will be similar to callback response for the transactionType passed in the request.
Below are the possible values for transactionType,
transactionType
Callback Type
MERCHANT_CREDITED_VIA_PAY
Incoming Money to Merchant - Pay
CUSTOMER_CREDITED_VIA_PAY
Incoming Money to Customer - Pay
MERCHANT_CREDITED_VIA_COLLECT
Incoming Money to Merchant - Collect Status
CUSTOMER_CREDITED_VIA_COLLECT
Incoming Money to Customer - Collect Status
CUSTOMER_DEBITED_FOR_MERCHANT_VIA_PAY
Outgoing Money from a Customer
CUSTOMER_DEBITED_VIA_PAY
Outgoing Money from a Customer
CUSTOMER_DEBITED_FOR_MERCHANT_VIA_COLLECT
Outgoing Money from a Customer
CUSTOMER_DEBITED_VIA_COLLECT
Outgoing Money from a Customer
COLLECT_REQUEST_SENT
Outgoing Collect Request from Customer
Note: Merchant can pass an optional parameter transactionTimestamp. Passing this parameter will help PSP to optimize the status retrieval for the transaction.
Request parameters
Parameter
Description
Constraints
upiRequestId
Request id of the transaction whose status is to be checked.
35 character alphanumeric unique id.
transactionType
Type of transaction
String
transactionTimestamp optional
Timestamp of the upiRequestId as returned by PSP
(YYYY-MM-DDTHH:MM:SS+05:30)
checkWithUdir optional
Boolean flag for UDIR status check
String
udfParameters optional
Stringified JSON for udf parameters
JSON String
Response
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
payload
Callback data in appropriate format for the transactionType passed in the request. Refer Transaction API Callbacks section for more details.
This api will be used to list all the VPAs that were blocked so far by the customer.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
limit
Maximum number of rows to be returned. Used for pagination
Number > 0
offset
Offset for rows to be returned. Used for pagination
Number >= 0
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
customerMobileNumber
Customer mobile number
12 digits mobile number string
payeeVpa
Vpa that is blocked for the customer
String
name
Name associated with the vpa that is blocked for the customer
String
blockedAt
Timestamp of when the vpa was blocked by the customer.
YYYY-MM-DDTHH:MM:SS+05:30
udfParameters optional
Udf parameters as passed in the request
JSON string
List Transactions
This API will be used to list all the transactions for a submerchant and parent merchant. Limit no of transactions starting from offset record between startTimestamp and endTimestamp will be returned in the response.
This api can be used to register an merchant intent payment. The response parameters should be passed as it is in the deeplink url. Refer below table for mapping of response parameters to the deeplink url parameters.
Response Parameter
Deeplink URL Parameter
payeeVpa
pa
payeeName
pn
payeeMcc
mc
gatewayTransactionId
tid
orderId
tr
amount optional
am
splitDetails optional
split split=CCONFEE:1.00|PCONFEE:1.00
enableTips optional
enTips enTips="Y"
currency
cu
remarks optional
tn optional
refUrl optional
url optional
refCategory optional
category optional
Note:
This is an idempotent api.
splitDetails enables Tips and Convenience Fee feature, encompassing details of the supplementary expenses.
enableTips indicates whether tips are accepted by the merchant.
Request parameters
Parameter
Description
Constraints
merchantRequestId
Merchant generated id for the transaction
35 characters alphanumeric
upiRequestId
Unique id sent to UPI switch for the transaction
35 character alphanumeric
amount optional
Amount of intent transaction being registered
Amount in two decimals. Decimals are mandatory
splitDetails optional
Supplementary Expenses of the transaction
List of JSON with name (supplementary expense) in string and value (amount) as numeric string with two decimals
enableTips optional
Indicates whether tips are accepeted
Boolean
intentRequestExpiryMinutes (Optional)
Minutes for which intent is valid. If this value is not passed, the default value will be used from merchant configurations. if both of them aren't available, intent will never expire.
number > 0 (as string)
intentRequestExpirySeconds (Optional)
Seconds for which intent is valid. If this value is not passed, intentRequestExpiryMinutes will consider. If this value not passed. then the default value will be used from merchant configurations. if both of them aren't available, intent will never expire.
number > 0 (as string)
remarks optional
Remarks for the intent transaction being registered
String
refUrl optional
Reference url for the intent transaction being registered
String
refCategory optional
Details for refUrl for the intent transaction being registered, whether it is 01 (Advertisement), 02(Invoice)
String
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
gatewayTransactionId
Gateway transaction id to be used for the intent transaction
String as passed in the request
orderId
Transaction refernce to be used for the intent transaction
String
payeeVpa
Payee VPA to be used for the intent transaction
String
payeeName
Payee name to be used for the intent transaction
String
payeeMcc
Payee mcc to be used for the intent transaction
String
amount optional
Amount to be used for the intent transaction
String as passed in the request
splitDetails optional
Supplementary Expenses to be used for the intent transaction
List of JSON as passed in the request
enableTips optional
Indicates whether tips are accepted
Boolean
currency
Currency to be used for the intent transaction
String INR
remarks optional
Remarks to be used for the intent transaction
String as passed in the request
refUrl optional
Reference URL to be used for the intent transaction
String as passed in the request
refCategory optional
Reference URL category to be used for the intent transaction
This api is called to deregister a registered intent. It can be used for cancelling a transaction initiated by merchant intent that is not yet processed.
This api can be used to trigger a refund against a successful merchant transaction. There are two types of refunds supported - ONLINE and OFFLINE. ONLINE refunds get credited to remitter account instantly, whereas OFFLINE refunds take around 3-5 working days.
Note:
This is an idempotent api.
Use --header x-api-version: 2 to get gatewayRefundTransactionId and merchantRequestId in response.
Request parameters
Parameter
Description
Constraints
originalUpiRequestId
UPI request id for the original transaction against which refund is being initiated
35 character alphanumeric
originalTransactionTimestamp optional
Timestamp of the original transaction
As returned in the response of original transaction api, String (YYYY-MM-DDTHH:MM:SS+05:30)
refundRequestId
Merchant generated unique id for the refund
35 characters alphanumeric
refundAmount
The amount to be refunded
String with mandatory two decimals
refundType
Type of refund being initiated
OFFLINE, ONLINE
merchantRefundVpa optional
Merchant refund vpa that is to be used for online refund
mandatory for refundType = ONLINE, vpa@handle,
remarks
Remarks or reason for the refund
String
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant
As passed in request headers
merchantChannelId
Unique id for the merchant channel
As passed in request headers
refundRequestId
Merchant generated unique id for the refund
As passed in the request body
transactionAmount
The total amount for which original transaction was performed
String with mandatory two decimals
refundAmount
The amount to be refunded
As passed in the request body
refundType
Type of refund being initiated
As passed in the request body
refundTimestamp
Timestamp of when refund request was initiated
String (YYYY-MM-DDTHH:MM:SS+05:30)
riskScore optional
RiskScore shared by NPCI or Bank
String
gatewayTransactionId
UPI request id returned by gateway for the transaction
Same as originalUpiRequestId passed in request
gatewayRefundReferenceId
Reference id returned by the gateway for the refund
String
gatewayResponseStatus
Response status returned by gateway for the refund
String (SUCCESS, PENDING, DEEMED, FAILURE)
gatewayResponseCode
Response code returned by gateway for the refund
String
gatewayResponseMessage
Response message for code returned by gateway for the refund
This api can be used to trigger a refund against a successful complaint resolve and if the transaction is successful.
Refund360 will be used for initiating a new refund or getting the status of an existing refund. If the "refundRequestId" is present with the PSP, then the latest status of the existing refund will be returned. If not present, then a new refund will be triggered.
UDIR refunds get credited to remitter account instantly.
Note:
This is an idempotent api.
Request parameters
Parameter
Description
Constraints
originalUpiRequestId
UPI request id for the original transaction against which refund is being initiated
35 character alphanumeric
refundUpiRequestId optional
Upi request Id used for refund transaction
Max 35 characters alphanumeric.
originalMerchantRequestId conditional
merchantRequestId of the original transaction against which refund is being initiated.
35 character alphanumeric
originalTransactionTimestamp optional
Timestamp of the original transaction
As returned in the response of original transaction api, String (YYYY-MM-DDTHH:MM:SS+05:30)
refundRequestId
Merchant generated unique id for the refund
35 characters alphanumeric
refundAmount
The amount to be refunded
String with mandatory two decimals
refundType
Type of refund being initiated
UDIR
remarks
Remarks or reason for the refund
String
iat
Current Epoch Unix timestamp string. Has to be of 13 digit in Milliseconds
Example: 1496918882000
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant
As passed in request headers
merchantChannelId
Unique id for the merchant channel
As passed in request headers
refundRequestId
Merchant generated unique id for the refund
As passed in the request body
transactionAmount
The total amount for which original transaction was performed
String with mandatory two decimals
refundAmount
The amount to be refunded
As passed in the request body
refundType
Type of refund being initiated
As passed in the request body
refundTimestamp
Timestamp of when refund request was initiated
String (YYYY-MM-DDTHH:MM:SS+05:30)
riskScore optional
RiskScore shared by NPCI or Bank
String
gatewayTransactionId
UPI request id returned by gateway for the transaction
Same as originalUpiRequestId passed in request
gatewayRefundReferenceId
Reference id returned by the gateway for the refund
String
gatewayResponseStatus
Response status returned by gateway for the refund
String (SUCCESS, PENDING, DEEMED, FAILURE)
gatewayResponseCode
Response code returned by gateway for the refund
String
gatewayResponseMessage
Response message for code returned by gateway for the refund
String
gatewayPayerResponseCode optional
Response code returned by gateway
String
gatewayPayeeResponseCode optional
Response code returned by gateway
String
gatewayPayerReversalResponseCode optional
Response code returned by gateway
String
gatewayPayeeReversalResponseCode optional
Response code returned by gateway
String
udfParameters optional
Udf parameters
As passed in the request body
gatewayRefundTransactionId
UPI Request Id of refund transaction
String
merchantRequestId optional
Merchant Request Id of original transaction
String
subMerchantId optional
Unique id for subMerchant. Only if present as a subMerchant
String
subMerchantChannelId optional
Unique id for the channel via which request is made. Only if present as a subMerchant
String
adjFlag optional
Reason flag for complaint sent to NPCI
String
adjCode optional
Reason flag for complaint sent to NPCI
String
reqAdjFlag
Reason flag for complaint sent to NPCI
String
reqAdjCode
Reason flag for complaint sent to NPCI
String
crn optional
Complaint reference number returned by NPCI
14 to 16 characters alphanumeric
merchantRefundVpa optional
RefundVPA used for refund
String
originalMerchantRequestId optional
merchantRequestId of the original transaction against which refund is being initiated.
This API hits TSP Server with a timeout of 60 seconds.
This api will be used for initiating a new PushToVpa to transfer money directly to the customer.
Request parameters
Parameter
Description
Constraints
upiRequestId
Unique id passed to NPCI.
35 character alphanumeric. Should always start with a unique merchant prefix
transactionReference
Required for Intent & QR
Required for Intent & QR
mcc optional
Merchant Category Code for the merchant whose VPA is passed
String
merchantRequestId
Request id for PushToVpa request
35 character alphanumeric unique id.
customerVpa
Vpa of the customer to be used for transaction.
something@handle
upiNumber optional
upiNumber of payee if transaction is done using UPI Number
String (8-10 digit Number)
amount
Amount for the transaction.
Numeric string with two decimals.
merchantVpa
Vpa of the merchant from which amount has to be deducted.
something@handle
remarks
Remarks sent by merchant for the transaction.
50 characters alphanumeric with space and hyphen
isPreApproved
If isPreApproved is true, it implies no additional debit is required from the payer’s account. if it is false the payer’s account will be debited to complete the transaction.
Boolean string
udfParameters
JSON for udf parameters
JSON
Response parameters
Parameter
Description
Values
status
Status of the API.
SUCCESS, FAILURE
responseCode
SUCCESS if call succeeded. Otherwise shows the error code.
Refer error code section
responseMessage
SUCCESS if call succeeded. Otherwise shows verbose error.
Refer error code section
customerVpa
Vpa of the customer to be used for transaction.
As passed in the request
upiNumber optional
upiNumber of payee if transaction is done using UPI Number
String (8-10 digit Number)
merchantId
Unique id for merchant.
As passed for x-merchant-id in request headers.
merchantChannelId
Unique id for the channel via which request is made.
As passed for x-merchant-channel-id in request headers.
merchantRequestId
Request id used for the transaction
String
transactionAmount
The amount for which transaction was performed
As passed in request.
bankAccountHash
A hashed version of the payee's account number
String
payeeAccountNumber
Account number for the payee
Numeric string. Maximum length is 30.
payeeMaskedAccountNumber
Masked account number for the sub-merchant
XXXX123456
payeeName optional
Name of the payee
String as returned in the Verify VPA API
payeeIfsc
Account ifsc of the customer who received the payment
String
gatewayReferenceId
RRN for the transaction.
Customer reference number (rrn) for the transaction.
gatewayTransactionId
UPI request id returned by gateway for the transaction.
String
gatewayResponseCode
Response code returned by gateway for the transaction.
00, Any valid NPCI error code
gatewayResponseMessage
Response message returned by gateway for the transaction.
This API hits TSP Server with a timeout of 60 seconds.
This api will be used for requesting the mandate by Merchant to the Payer.
Request parameters
Parameter
Description
Constraints
amount
Amount for which merchant requested the mandate
Amount in two decimals. Decimals are mandatory.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
String but only allowed values are EXACT / MAX
blockFund optional
Denotes whether customer's fund should be blocked or not. Only applicable for ONETIME mandate. For recurring mandate it should always be false, for onetime it can be true or false. Default value is false.
String - true,false
customerVpa
VPA on which request mandate should be triggered
Valid VPA
mandateName
Name of the mandate
String
mandateRequestExpiryMinutes
Minutes for which request is valid
A number between 2 to 64800, both inclusive, in String format.
merchantRequestId
Merchant generated id for the mandate
35 character alphanumeric unique id.
payerRevocable optional
Defines whether mandate is revocable by PAYER or not. Applicable only when it is ONETIME mandate and initiatedBy PAYEE. For recurring mandate it should always be true, for onetime it can be true or false. Default value is true.
String - true/false.
recurrencePattern
Recurrence Pattern for Mandate. Denotes at what frequency mandate can be executed.
Recurrence Rule for Mandate. It is not required for ONETIME, DAILY and ASPRENTED recurrencePattern.
ON, BEFORE, AFTER.
recurrenceValue conditional
Recurrence Value for Mandate. It is not required for ONETIME, DAILY and ASPRENTED recurrencePattern.
between 1-31 and depends on recurrencePattern.
refCategory optional
Details for refUrl, whether it is 01 (advertisement), 02(Invoice). If nothing is passed, a default value of "00" is set up and same will be sent back in response.
Numeric String
refUrl optional
Invoice as sesnt by merchant or reference to the mandate in the form of url. If nothing is passed then a default value is set for this tag and same will be send back in response.
String
remarks optional
Any mandate summary
String
udfParameters optional
Stringified json for udf parameters.
String "udfParameters" : "{}"
upiRequestId
Unique id passed to NPCI.
35 character alphanumeric. Should always start with a unique merchant prefix
validityEnd
Date befor which mandate can be execute
String with proper date format YYYY/MM/DD
validityStart
Date after which mandate can be executed
String with proper date format YYYY/MM/DD
platform
Platform from which request is initiated
WEB, ANDROID,IOS
Response parameters
Parameter
Description
Values
status
Status of the API.
SUCCESS, FAILURE
responseCode
SUCCESS if call succeeded. Otherwise shows the error code.
Refer error code section
responseMessage
SUCCESS if call succeeded. Otherwise shows verbose error.
Refer error code section
amount
Amount for which merchant requested the mandate
As passed in request.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
As passed for amountRule in request.
customerVpa
VPA on which request mandate should be triggered
As passed in request
expiry
Minutes for which request is valid
Timestamp in YYYY-MM-DDTHH:MM:SS+05:30 format, request timestamp plus expiry minutes passed in request.
gatewayMandateId
UPI request id returned by gateway for the mandate
As passed for upiRequestId in request
gatewayResponseCode
Response code returned by gateway for the transaction.
00
gatewayResponseMessage
Response message returned by gateway for the transaction.
String
gatewayResponseStatus
Response status returned by gateway.
SUCCESS, FAILURE
mandateName
Name of the mandate
As passed in request
mandateTimestamp
Timestamp of when the webMandate was initiated
(YYYY-MM-DDTHH:MM:SS+05:30)
merchantChannelId
Unique id for the channel via which request is made.
As passed in request.
merchantId
Unique id for merchant.
As passed in request.
merchantRequestId
35 character alphanumeric unique id.
As passed in request
orgMandateId
Refers to upiRequestId used during creation of mandate
As passed for upiRequestId in the request.
payerRevocable
Defines whether mandate is revocable by PAYER or not. For onetime mandate it can be true or false. Default value is true.
String - true, false
recurrencePattern
Recurrence Pattern for Mandate
As passed for recurrencePattern in request
recurrenceRule conditional
Recurrence Rule for Mandate. It will not be present for ONETIME, DAILY and ASPRESENTED recurrence pattern.
As passed for recurrenceRule in request
recurrencValue conditional
Recurrence Value for Mandate. It will not be present for ONETIME, DAILY and ASPRESENTED recurrence pattern.
As passed for recurrencValue in request.
refCategory
Details for refUrl, whether it is 01 (advertisement), 02(Invoice). It will be same value if passed in request, else a default value of "00" is sent.
Numeric String
refUrl
Reference url for the mandate. It will be same value if passed in request else it will be a default url.
String
remarks
Any mandate summary. If pssed in request, it will be same in response else a default value is send.
String
udfParameters optional
Udf parameters as passed in the web mandate request.
As passed in request
validityEnd
Date before which mandate can be executed.
As passed for validityEnd in request
validityStart
Date after which mandate can be executed.
As passed for validityStart in request
responseCode
responseMessage
SUCCESS
SUCCESS
INTERNAL_SERVER_ERROR
INTERNAL_SERVER_ERROR
BAD_REQUEST
Any Other Reason
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Mandate Creation Success. / Mandate Create Request Sent Successfully
This API hits TSP Server with a timeout of 60 seconds.
This api will be used for updating or revoking the mandate which is already created by Merchant to the Payer. Only validityEnd and amount of the original mandate can be updated. Either one of the two parameters is necessary when requestType is "UPDATE".
Request parameters
Parameter
Description
Constraints
amount conditional
Amount for mandate. Only required if amount needs to be updated for mandate and requestType is UPDATE. Either one of validityEnd or amount has to be passed.
Amount in two decimals. Decimals are mandatory.
makeAsync optional
Denotes whether the API call will be done in synchronous or asynchronous manner. If it is not passed by default API call will be in synchronous. It is not required if requestType is UPDATE as it will be default async as it requires approval from Customer.
true,false
mandateRequestExpiryMinutes
Minutes for which request is valid
A number between 1 to 64800, both inclusive, in String format.
merchantRequestId
Merchant generated id for the mandate
35 character alphanumeric unique id.
orgMandateId
gatewayMandateId returned in create mandate
String and it should be corresponding Upi Request id used during webMandate
remarks optional
Any mandate summary
String
requestType
differentiate the request for UPDATE and REVOKE
String but allowed values are only UPDATE and REVOKE
udfParameters optional
Stringified json for udf parameters.
String "udfParameters" : "{}"
upiRequestId
Unique id passed to NPCI.
35 character alphanumeric. Should always start with a unique merchant prefix
validityEnd conditional
Date after which mandate cannot be executed. Only required if validity end date needs to be updated for mandate and requestType is UPDATE. Either validityEnd or amount has to be passed.
String with proper date format YYYY/MM/DD
Response parameters
Parameter
Description
Values
status
Status of the API.
SUCCESS, FAILURE
responseCode
SUCCESS if call succeeded. Otherwise shows the error code.
Refer error code section
responseMessage
SUCCESS if call succeeded. Otherwise shows verbose error.
Refer error code section
amount
Updated amount for mandate. If only validityEnd is updated then amount will be same as it was passed during creation of mandate.
Numeric String
customerVpa
VPA on which request mandate should be triggered
Vpa for which mandate was requested during webMandate
expiry
Minutes for which request is valid
Timestamp in YYYY-MM-DDTHH:MM:SS+05:30 format, request timestamp plus expiry minutes passed in request.
gatewayMandateId
UPI request id returned by gateway for the mandate
As passed for upiRequestId in request
gatewayResponseCode
Response code returned by gateway for the transaction.
00
gatewayResponseMessage
Response message returned by gateway for the transaction.
String
gatewayResponseStatus
Response status returned by gateway.
SUCCESS, FAILURE
makeAsync optional
Denotes whether the API call will be done in synchronous or asynchronous manner
Only present if passed in reqBody and same value as in request.
mandateName
Name of the mandate
Name of the mandate
mandateTimestamp
Timestamp of when the webMandate was initiated
(YYYY-MM-DDTHH:MM:SS+05:30)
merchantChannelId
Unique id for the channel via which request is made.
As passed in request.
merchantId
Unique id for merchant.
As passed in request.
merchantRequestId
35 character alphanumeric unique id.
As passed in request
orgMandateId
gatewayMandateId returned in create mandate
As passed in request
remarks
Any mandate summary. If pssed in request, it will be same in response else a default value is send.
String
udfParameters optional
Udf parameters as passed in the request.
As passed for udfParameters in request.
umn
Vpa used for execution of mandate.
String
validityEnd
Updated date before which mandate can be executed. If only amount is updated then validityEnd will be same as it was passed during creation of mandate.
String with proper date format YYYY/MM/DD.
responseCode
responseMessage
SUCCESS
SUCCESS
INTERNAL_SERVER_ERROR
INTERNAL_SERVER_ERROR
JPMR
Mandate is revoked
JPMC
Mandate is completed
JPMD
Mandate is declined by payer
JPMR
Mandate is revoked due to first execution failure
JPMR
Mandate is revoked due to first execution failure
JPMX
Mandate is expried due to no action by payer
BAD_REQUEST
Any Other Reason
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Mandate Updation Success. / Mandate Update/Revoke Request Sent Successfully
This API hits TSP Server with a timeout of 60 seconds.
This api can be used by Merchant for checking the status of the mandate for both Payer and Payee side. Using this API, the recent status of the mandate / (mandate action) can be found.
Recent status of the mandate is denoted by gatewayResponseStatus field in the response if upiRequestId is not passed in the requestBody. Based on different scenarios gatewayResponseStatus can have multiple values like SUCCESS, FAILURE, REVOKED, PAUSED, COMPLETED, DECLINED, EXPIRED depending upon the current status of the mandate. Refer to table below for different value of gatewayResponseCode and gatewayResponseStatus.
If upiRequestId is passed in the requestBody, then gatewayResponseStatus denotes the status of that particular action (UPDATE, REVOKE, PAUSE and UNPAUSE) taken on mandate.
Request parameters
Parameter
Description
Constraints
orgMandateId
gatewayMandateId returned in create mandate
35 character alphanumeric unique id
role
Defines the role of the customer in the mandate
PAYER, PAYEE
upiRequestId optional
gatewayMandateId returned for update, revoke, pause, unpause operations. It should not be passed for create mandate status and BAD_REQUEST error will be thrown.
35 character alphanumeric unique id
udfParameters optional
Stringified json for udf parameters.
String "udfParameters" : "{}"
Response parameters
Parameter
Description
Values
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
status
PSP status of the API
SUCCESS, FAILURE
amount
Amount for mandate
Amount in two decimals. Decimals are mandatory
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
As passed for amountRule in create mandate.
bankAccountUniqueId optional
Unique id for the selected bank account. It will not be present if role passed in request is PAYEE and payeeVpa is of merchant.
bankAccountUniqueId in the response of Fetch Accounts api call.
blockFund
Denotes whether customer's fund should be blocked or not. True for recurring mandate, for ONETIME mandate can be true or false
true / false
expiry optional
Timestamp until which mandate request is valid. It will only be present if request is pending for approval for create mandate or update mandate.
Timestamp in YYYY-MM-DDTHH:MM:SS+05:30 format.
gatewayMandateId
UPI request id returned by gateway for the particular mandate / mandate action request
String
gatewayReferenceId
Customer reference number (rrn) for the mandate / mandate action operation.
String
gatewayResponseCode
Response code returned by gateway for the mandate / mandate action operation.
Refer table below.
gatewayResponseMessage
Response message returned by gateway for the mandate / mandate action operation.
String
gatewayResponseStatus
Denotes the current status of the mandate if upiRequestId is not passed in reqBody. Denotes the status of mandate action if upiRequestId is passed in reqBody.
Below are some request parameters required to be handled specifically according to the mandate creation scenario.
Parameter
P2M Mandate
P2P Mandate (Payer Initiated)
P2P Mandate (Payee Initiated)
Scan & Pay
Incoming Intent
transactionType
P2M_MANDATE
UPI_MANDATE
UPI_MANDATE
QR_MANDATE
INTENT_MANDATE
payeeVpa
Mandatory
Mandatory
Mandatory
pa in deeplink url
pa in deeplink url
recipientName
Mandatory
Mandatory
Mandatory
pn in deeplink url
pn in deeplink url
mandateName
Mandatory
Mandatory
Mandatory
mn in deeplink url
mn in deeplink url
upiRequestId
Mandatory
Mandatory
Mandatory
tid in deeplink url
tid in deeplink tid
validityStart
Mandatory
Mandatory
Mandatory
validitystart in deeplink url
validitystart in deeplink url
validityEnd
Mandatory
Mandatory
Mandatory
validityend in deeplink url
validityend in deeplink url
amount
Mandatory
Mandatory
Mandatory
am in deeplink url
am in deeplink url
amountRule
Mandatory
Mandatory
Mandatory
amrule in deeplink url
amrule in deeplink url
recurrencePattern
Mandatory
Mandatory
Mandatory
recur in deeplink url
recur in deeplink url
recurrenceValue
Optional
Optional
Optional
recurvalue in deeplink url
recurvalue in deeplink url
recurrenceRule
Optional
Optional
Optional
recurtype in deeplink url
recurtype in deeplink url
transactionReference
Required for Intent & QR
Required for Intent & QR
Required for Intent & QR
tr in deeplink url
tr in deeplink url
refUrl
Optional
Optional
Optional
url in deeplink url
url in deeplink url
currency
Required for Intent & QR
Required for Intent & QR
Required for Intent & QR
cu in deeplink url
cu in deeplink url
mcc
Required for Intent & QR
Required for Intent & QR
Required for Intent & QR
mc in deeplink url
mc in deeplink url
remarks
Optional
Optional
Optional
tn in deeplink url
tn in deeplink url
initiationMode
Required for Intent & QR
Required for Intent & QR
Required for Intent & QR
mode in deeplink url
mode in deeplink url
purpose
Required for Intent & QR
Required for Intent & QR
Required for Intent & QR
purpose in deeplink url
purpose in deeplink url
refCategory
Required for Intent & QR
Required for Intent & QR
Required for Intent & QR
NA
NA
packageName optional
Package name of the UPI application
String
This API hits TSP Server with a timeout of 60 seconds.
This api will be used for creation of a mandate. It can be initiated by both Payer as well as Payee for mandate creation. There are following scenarios :
When Payee creates a mandate, it requires mandate approval from Payer side. Cred block is not required for this case.
When Payer creates a mandate, then cred block is required and no approval is required.
Request parameters
Parameter
Description
Constraints
amount
Amount for mandate
Amount in two decimals. Decimals are mandatory.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
MAX,EXACT
bankAccountUniqueId
Unique id for the selected bank account
bankAccountUniqueId in the response of Fetch Accounts api call.
blockFund optional
Denotes whether customer's fund should be blocked or not. Only applicable for ONETIME mandate. For recurring mandate it should always be false, for onetime it can be true or false. If blockFund and payerRevocable are both send false for a request then request will be rejected. Default value is false.
String - true,false
credBlock optional
Encrypted credblock containing user mpin. It is required if mandate is initiatedBy Payer.
As returned by Common Library
currency optional
Currency code
String - INR
deviceFingerPrint optional
Device fingerprint of the customer. It is required if mandate is initiatedBy Payer.
String
expiry optional
Minutes for which request is valid. Only applicable if initiatedBy PAYEE
A numeric string between 2 to 64800 (both inclusive)
initiatedBy
Describes whether PAYER or PAYEE has initiated the create mandate request.
PAYER,PAYEE
makeAsync optional
Denotes whether the API call will be done in synchronous or asynchronous manner. If it is not passed by default API call will be in synchronous. It is not required if initiatedBy PAYEE as it will be default async as it required approval from Customer.
true,false
mandateName
Name of the mandate
String
mcc optional
Merchant category code
String
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
merchantRequestId
Merchant generated id for the mandate request
35 character alphanumeric unique id.
payeeVpa
Vpa of the payee.
Valid VPA
payerRevocable optional
Defines whether mandate is revocable by PAYER or not. Applicable only when it is ONETIME mandate and initiatedBy PAYEE. For recurring mandate it should always be true, for onetime it can be true or false. If blockFund and payerRevocable are both send false for a request then request will be rejected. Default value is true.
String - true/false.
payerVpa
Vpa of the payer.
Valid VPA
recipientName
Name against which mandate is triggered. If initiatedBy is PAYER then payeeName or vice-versa. If name is not present with merchant payerVpa can be sent.
String
recurrencePattern
Recurrence Pattern for Mandate. Denotes at what frequency mandate can be executed.
Recurrence Rule for Mandate. It is not required for ONETIME, DAILY and ASPRENTED recurrencePattern.
ON, BEFORE, AFTER.
recurrencValue optional
Recurrence Value for Mandate. It is not required for ONETIME, DAILY and ASPRENTED recurrencePattern.
between 1-31 and depends on recurrencePattern.
refUrl optional
Reference url for the mandate. It is mainly kept for future purpose for invoice in inbox feature, if nothing is passed then a default value is set for this tag and same will be send back in response.
String
remarks optional
Any mandate summary
String
shareToPayee optional
Descibes whether mandate will be shared with payee or not. Required only when it is ONETIME mandate and initiatedBy PAYER. For recurring mandate it should always be true, for onetime it can be true or false. Default value is true.
String - true,false
transactionType
Type of Mandate Creation. UPI_MANDATE should be used for normal requests. QR_MANDATE should be used if mandate is created using QR. INTENT_MANDATE should be used if mandate is created using intent flow. P2M_MANDATE should be used if customer is directly creating a mandate with payeeVpa of merchant.
35 character alphanumeric. Should always start with a unique merchant prefix. Max length is 35.
validityEnd
Date before which mandate can be execute
String with proper date format YYYY/MM/DD
validityStart
Date after which mandate can be executed
String with proper date format YYYY/MM/DD
refCategory optional
Details for refUrl, whether it is 01 (advertisement), 02(Invoice). If nothing is passed, a default value of "00" is set up and same will be sent back in response.
Numeric String
transactionReference optional
Transaction reference id
String
purpose optional
Defines the purpose code of the mandate
Numeric String
initiateionMode optional
Defines the initiationMode of the mandate
Numeric String
umn optional
Unique mandate number. Only applicable for PAYER initiated mandate. If not passed, it is autogenerated.
String
Response parameters
Parameter
Description
Values
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
status
PSP status of the API
SUCCESS, FAILURE
amount
Amount for mandate
Numeric String with two decimals. As passed for amount in request.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
As passed for amountRule in request.
bankAccountUniqueId
Unique id for the selected bank account
bankAccountUniqueId in the response of Fetch Accounts api call. As passed for bankAccountUniqueId in request.
blockFund
Defines whether customer's fund should be blocked or not. For onetime mandate it can be true or false. Default value is false.
String - true, false
expiry optional
Timestamp upto which mandate creation request is valid. It will only be present if mandate is initiated by PAYEE.
Timestamp in YYYY-MM-DDTHH:MM:SS+05:30 format, request timestamp plus expiry minutes passed in request.
gatewayMandateId
UPI request id returned by gateway for the mandate
As passed for upiRequestId in request
gatewayReferenceId
Customer reference number (rrn) for the mandate operation.
String
gatewayResponseCode
Response code returned by gateway for the mandate operation.
Refer table below.
gatewayResponseMessage
Response message returned by gateway for the mandate operation.
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
initiatedBy
Describes whether PAYER or PAYEE has initiated the mandate.
As passed for initiatedBy in request.
makeAsync optional
Denotes whether the API call will be done in synchronous or asynchronous manner
Only present if passed in reqBody and same value as in request.
mandateApprovalTimestamp Optional
Time instant at which create mandate request was approved. Only present if mandate type is create and approved.
YYYY-MM-DDTHH:MM:SS+05:30.
mandateName
Name of the mandate.
As passed for mandateName in request.
mandateTimestamp
Timestamp of when this request was attempted
YYYY-MM-DDTHH:MM:SS+05:30
merchantChannelId
Unique id for the merchant channel.
As passed for x-merchant-channel-id in request headers
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256. As passed for merchantCustomerId in request.
merchantId
Unique id for the merchant.
As passed for x-merchant-id in request headers
merchantRequestId
Merchant generated id for the mandate request.
As passed for merchantRequestId in request body.
orgMandateId
upiRequestId of the create request.
As passed for upiRequestId in the request.
payeeMcc
Merchant Category Code of the payee merchant.
payeeName optional
Name of the Payee involved in mandate.
payeeVpa
VPA of payee
As passed for payeeVpa in request
payerName optional
Name of the Payer involved in mandate.
payerRevocable
Defines whether mandate is revocable by PAYER or not. For onetime mandate it can be true or false. Default value is true.
String - true, false
payerVpa
VPA of payer
As passed for payerVpa in request
recurrencePattern
Recurrence Pattern for Mandate
As passed for recurrencePattern in request
recurrenceRule conditional
Recurrence Rule for Mandate. It will not be present for ONETIME, DAILY and ASPRESENTED recurrence pattern.
As passed for recurrenceRule in request
recurrencValue conditional
Recurrence Value for Mandate. It will not be present for ONETIME, DAILY and ASPRESENTED recurrence pattern.
As passed for recurrencValue in request.
refUrl
Reference url for the mandate. It will be same value if passed in request else it will be a default url.
String
remarks optional
Any mandate summary. If pssed in request, it will be same in response else a default value is send.
String
role
Role of the customer for this mandate.
PAYER, PAYEE
shareToPayee
Descibes whether mandate will be shared with payee or not. For onetime mandate it can be true or false. Default value is true.
String - true, false.
transactionType
Type of Mandate Creation
As passed for transactionType in request.
udfParameters optional
Udf parameters as passed in the request.
As passed for udfParameters in request
umn optional
Unique Mandate Number used for execution of the mandate. Will be sent only if mandate is initiated by Payer.
String
validityEnd
Date before which mandate can be executed.
As passed for validityEnd in request
validityStart
Date after which mandate can be executed.
As passed for validityStart in request
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Mandate Creation Success. / Mandate Create Request Sent Successfully
This API hits TSP Server with a timeout of 60 seconds.
This api will be used for updating / revoking a mandate. requestType can be UPDATE or REVOKE.If requestType is UPDATE then the entity (PAYER/PAYEE) whoever has initiated the create mandate request can update the mandate. If mandate is updated by PAYER then credBlock is required and when it is updated by PAYEE then approval is required by PAYER. Only amount and validityEnd can be updated. If requestType is REVOKE then mandate will be revoked. If REVOKE request is initiated by PAYEE then credBlock is not required and vice-versa.
Request parameters
Parameter
Description
Constraints
amount conditional
Amount for mandate. Only required if amount needs to be updated for mandate and requestType is UPDATE. Either one of validityEnd or amount has to be passed.
Amount in two decimals. Decimals are mandatory.
bankAccountUniqueId optional
Unique id for the selected bank account. Should be same bankId used while create or approve mandate. It is not required when initiatedBy PAYEE.
String. As passed for bankAccountUniqueId in request.
credBlock optional
Encrypted credblock containing user mpin. It is required if mandate update or revoke is initiatedBy Payer
As returned by Common Library.
deviceFingerPrint optional
Device fingerprint of the customer. It is required if mandate update or revoke is initiatedBy Payer
String
expiry optional
Minutes for which request is valid. It is required only when requestType is UPDATE.
A number between 2 to 64800, both inclusive, in String format.
makeAsync optional
Denotes whether the API call will be done in synchronous or asynchronous manner. If it is not passed by default API call will be in synchronous. It is not required if initiatedBy PAYEE and requestType is UPDATE as it will be default async as it requires approval from Customer.
true,false
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
merchantRequestId
Merchant generated request id for the mandate operation.
35 character alphanumeric unique id.
orgMandateId
gatewayMandateId of the original mandate
String.
remarks optional
Any mandate summary
String
requestType
Type of mandate operation request. If requestType is UPDATE, mandate's validityEnd and amount can be updated. If requestType is REVOKE, mandate will be revoked.
UPDATE, REVOKE
udfParameters optional
Stringified json for udf parameters.
String "udfParameters" : "{}"
upiRequestId
Unique id passed to NPCI.
35 character alphanumeric. Should always start with a unique merchant prefix.
validityEnd conditional
Date before which mandate can be executed. Only required if validity end date needs to be updated for mandate and requestType is UPDATE. Either validityEnd or amount has to be passed.
String with proper date format YYYY/MM/DD
packageName optional
Package name of the UPI application
String
Response parameters
Parameter
Description
Values
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
status
PSP status of the API
SUCCESS, FAILURE
amount
Updated amount for mandate. If only validityEnd is updated then amount will be same as it was passed during creation of mandate.
Numeric String
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
As passed for amountRule in create mandate.
bankAccountUniqueId
Unique id for the selected bank account
bankAccountUniqueId in the response of Fetch Accounts api call. As passed for bankAccountUniqueId in request. If not send in the request then bankAccountUniqueId that was used during creation of mandate will be send.
blockFund
Denotes whether customer's fund should be blocked or not. For onetime mandate it can be true or false. Default value is false.
String - true,false
expiry optional
Timestamp upto which mandate updation request is valid. It will only be present if mandate updation is initiated by PAYEE.
Timestamp in YYYY-MM-DDTHH:MM:SS+05:30 format, request timestamp plus expiry minutes passed in request.
gatewayMandateId
UPI request id passed in request
As passed for upiRequestId in request
gatewayReferenceId
Customer reference number (rrn) for the mandate operation.
String
gatewayResponseCode
Response code returned by gateway for the mandate operation.
Refer to table below.
gatewayResponseMessage
Response message returned by gateway for the mandate operation.
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
initiatedBy
Describes whether PAYER or PAYEE has initiated the mandate operation request.
PAYER, PAYEE
makeAsync optional
Denotes whether the API call will be done in synchronous or asynchronous manner
Only present if passed in reqBody and same value as in request.
mandateName
Name of the mandate
String. As passed during creation of mandate.
mandateTimestamp
Timestamp of when this request was attempted.
(YYYY-MM-DDTHH:MM:SS+05:30)
mandateType
Defines the type of mandate request
UPDATE, REVOKE
merchantChannelId
Unique id for the merchant channel.
As passed for x-merchant-channel-id in request headers.
merchantCustomerId
Merchant generated unique id for customer.
Alphanumeric string with dot(.). Maximum length is 256. As passed for merchantCustomerId in request.
merchantId
Unique id for the merchant.
As passed for x-merchant-id in request headers
merchantRequestId
Merchant generated id for the mandate request.
As passed for merchantRequestId in request body.
orgMandateId
gatewayMandateId returned in create mandate
As passed for orgMandateId in request
payeeMcc
Merchant Category Code of the payee merchant.
payeeName optional
Name of the Payee involved in mandate.
payeeVpa
VPA of Payee.
String. As passed during creation of mandate.
payerName optional
Name of the Payer involved in mandate.
payerRevocable
Defines whether mandate is revocable by PAYER or not. For onetime mandate it can be true or false. Default value is true.
String - true,false
payerVpa
VPA of Payer.
String. As passed during creation of mandate.
recurrencePattern
Recurrence Pattern for Mandate
String. Same as original mandate in create or list mandate response.
recurrenceRule optional
Recurrence Rule for Mandate. It will not be present for ONETIME, DAILY and ASPRESENTED recurrence pattern.
Same as original mandate in create or list mandate response.
recurrencValue optional
Recurrence Value for Mandate. It will not be present for ONETIME, DAILY and ASPRESENTED recurrence pattern.
String. Same as original mandate in create or list mandate response.
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url.
String. As passed during creation of mandate.
remarks
Any mandate summary. If pssed in request, it will be same in response else a default value is send.
String
role
Role of the customer for this mandate.
PAYER, PAYEE
shareToPayee
Descibes whether mandate will be shared with payee or not. For onetime mandate it can be true or false. Default value is true.
Unique Mandate Number used for execution of the mandate.
String
validityEnd
Updated date before which mandate can be executed. If only amount is updated then validityEnd will be same as it was passed during creation of mandate.
String with proper date format YYYY/MM/DD.
validityStart
Date after which mandate can be executed
String with proper date format YYYY/MM/DD
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Mandate Updation Success. / Mandate Update Request Sent Successfully
This API hits TSP Server with a timeout of 60 seconds.
This api is to review and take some action on a pending mandate request. requestType can be APPROVE or DECLINE. If requestType is APPROVE, then bankAccountUniqueId and credBlock parameters are mandatory. A mandate request approve is success if gatewayResponseCode is 00. A mandate request decline is success if gatewayResponseCode is ZA if action is against a create mandate request and gatewayResponseCode is QT if action is against an update mandate. The gatewayResponseStatus for a successful decline will be DECLINED.
Request parameters
Parameter
Description
Constraints
bankAccountUniqueId optional
Unique id for the selected bank account. Should always use the same account for all operations of a single mandate. It is only required when requestType is APPROVE.
bankAccountUniqueId in the response of Fetch Accounts api call.
credBlock optional
Encrypted credblock containing user mpin. It is required when requestType is APPROVE.
As returned by Common Library
deviceFingerPrint optional
Device fingerprint of the customer. It is required when requestType is APPROVE.
String
makeAsync optional
Denotes whether the API call will be done in synchronous or asynchronous manner. If it is not passed by default API call will be in synchronous.
true,false
mandateRequestId
upiRequestId used during create or update mandate based on whether create or update mandate request is getting approved.
String
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
merchantRequestId
Merchant generated id for the mandate request
35 character alphanumeric unique id.
requestType
Action to be taken on the mandate request
APPROVE or DECLINE
udfParameters optional
Stringified json for udf parameters.
String "udfParameters" : "{}"
umn optional
Required when requestType is APPROVE and the umn of the mandate to be approved is null. Sets the umn of the mandate.
String
packageName optional
Package name of the UPI application
String
Response parameters
Parameter
Description
Values
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
status
PSP status of the API
SUCCESS, FAILURE
amount
Updated Amount for mandate
Amount in two decimals. Decimals are mandatory. As passed during creation of mandate.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
As passed for amountRule in create mandate.
bankAccountUniqueId optional
Unique id for the selected bank account. It will not be present if requestType is DECLINE.
bankAccountUniqueId in the response of Fetch Accounts api call. As passed for bankAccountUniqueId in request.
blockFund
Denotes whether customer's fund should be blocked or not. For onetime mandate it can be true or false. Default value is false.
String - true,false
expiry
Timestamp until which mandate request is valid
Timestamp in YYYY-MM-DDTHH:MM:SS+05:30 format.
gatewayMandateId
UPI request id passed in request
As passed for upiRequestId in request
gatewayReferenceId
Customer reference number (rrn) for the mandate operation.
String
gatewayResponseCode
Response code returned by gateway for the mandate operation.
Refer to table below.
gatewayResponseMessage
Response message returned by gateway for the mandate operation.
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE, DECLINED
initiatedBy
Describes whether PAYER or PAYEE has initiated the mandate operation request.
PAYER, PAYEE
makeAsync optional
Denotes whether the API call will be done in synchronous or asynchronous manner
Only present if passed in reqBody and same value as in request.
mandateApprovalTimestamp Optional
Time instant at which create mandate request was approved. Only present if mandate type is create and approved.
YYYY-MM-DDTHH:MM:SS+05:30.
mandateName
Name of the mandate
String. As passed during creation of mandate.
mandateTimestamp
Timestamp of when this request was created.
(YYYY-MM-DDTHH:MM:SS+05:30)
mandateType
Defines the type of mandate
CREATE, UPDATE
merchantChannelId
Unique id for the merchant channel.
As passed for x-merchant-channel-id in request headers.
merchantCustomerId
Merchant generated unique id for customer.
Alphanumeric string with dot(.). Maximum length is 256. As passed for merchantCustomerId in request.
merchantId
Unique id for the merchant.
As passed for x-merchant-id in request headers
merchantRequestId
Merchant generated id for the mandate request.
As passed for merchantRequestId in request body.
orgMandateId
gatewayMandateId returned in create mandate.
String
payeeMcc
Merchant Category Code of the payee merchant.
payeeName optional
Name of the Payee involved in mandate.
payeeVpa
VPA of Payee.
String. As passed during creation of mandate.
payerName optional
Name of the Payer involved in mandate.
payerRevocable
Defines whether mandate is revocable by PAYER or not. For onetime mandate it can be true or false. Default value is true.
String - true,false
payerVpa
VPA of Payer.
String. As passed during creation of mandate.
recurrencePattern
Recurrence Pattern for Mandate
String. Same as original mandate in create or list mandate response.
recurrenceRule optional
Recurrence Rule for Mandate. It will not be present for ONETIME, DAILY and ASPRESENTED recurrence pattern.
Same as original mandate in create or list mandate response.
recurrencValue optional
Recurrence Value for Mandate. It will not be present for ONETIME, DAILY and ASPRESENTED recurrence pattern.
String. Same as original mandate in create or list mandate response.
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url.
String. As passed during creation of mandate.
remarks
Any mandate summary. It will be the same value that was used during create mandate response.
String
role
Role of the customer for this mandate.
PAYER, PAYEE
shareToPayee
Descibes whether mandate will be shared with payee or not. For onetime mandate it can be true or false. Default value is true.
This API hits TSP Server with a timeout of 60 seconds.
This api will be used for PAUSE/UNPAUSE an active mandate. requestType can be PAUSE or UNPAUSE. If requestType is PAUSE then pauseStart, pauseEnd are required. pauseStart and pauseEnd are not required when requestType is UNPAUSE. Pause and Unpause request can always be initiatedBy Payer. credBlock is required for both during PAUSE and UNPAUSE.
Request parameters
Parameter
Description
Constraints
bankAccountUniqueId
Unique id for the selected bank account
bankAccountUniqueId in the response of Fetch Accounts api call.
credBlock
Encrypted credblock containing user mpin
As returned by Common Library
deviceFingerPrint
Device fingerprint of the customer
String
makeAsync optional
Denotes whether the API call will be done in synchronous or asynchronous manner. If it is not passed by default API call will be in synchronous.
true,false
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
merchantRequestId
Merchant generated id for the mandate
35 character alphanumeric unique id.
orgMandateId
gatewayMandateId returned during create mandate
String and it should be corresponding Upi Request id used during create mandate.
pauseEnd optional
Defines the date on which the mandate should unpause. Only required when requestType is PAUSE
Date in "YYYY/MM/DD".
pauseStart optional
Defines the date from which the mandate should pause. Only required when requestType is PAUSE
Date in "YYYY/MM/DD".
remarks optional
Any mandate summary
String
requestType
Type of Mandate Request
PAUSE, UNPAUSE.
udfParameters optional
Stringified json for udf parameters.
String "udfParameters" : "{}"
upiRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with a unique merchant prefix.
packageName optional
Package name of the UPI application
String
Response parameters
Parameter
Description
Values
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
status
PSP status of the API
SUCCESS, FAILURE
amount
Amount for mandate
Amount in two decimals. Decimals are mandatory. As passed during creation of mandate.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
As passed for amountRule in create mandate.
bankAccountUniqueId
Unique id for the selected bank account as passed in request. It should be same as the one that was used during creation of mandate.
bankAccountUniqueId in the response of Fetch Accounts api call.
blockFund
Denotes whether customer's fund should be blocked or not. For onetime mandate it can be true or false. Default value is false.
String - true, false
gatewayMandateId
upiRequestId passed in the request.
As passed for upiRequestId in request.
gatewayReferenceId
Customer reference number (rrn) for the mandate operation.
String
gatewayResponseCode
Response code returned by gateway for the mandate operation.
Refer table below.
gatewayResponseMessage
Response message returned by gateway for the mandate operation.
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
initiatedBy
Describes whether PAYER or PAYEE has initiated the mandate operation request.
PAYER, PAYEE
makeAsync optional
Denotes whether the API call will be done in synchronous or asynchronous manner
Only present if passed in reqBody and same value as in request.
mandateName
Name of the mandate
String. As passed during creation of mandate.
mandateTimestamp
Timestamp of when this request was attempted.
(YYYY-MM-DDTHH:MM:SS+05:30)
mandateType
Defines the type of mandate request
UPDATE, REVOKE
merchantChannelId
Unique id for the merchant channel.
As passed for x-merchant-channel-id in request headers
merchantCustomerId
Merchant generated unique id for customer.
Alphanumeric string with dot(.). Maximum length is 256. As passed for merchantCustomerId in the request.
merchantId
Unique id for the merchant.
As passed for x-merchant-id in request headers
merchantRequestId
Merchant generated id for the mandate request.
As passed for merchantRequestId in request body.
orgMandateId
gatewayMandateId returned in create mandate
As passed for orgMandateId in request.
pauseEnd optional
Defines the date on which the mandate should unpause. It will only be present if requestType is PAUSE.
As passed in request.
pauseStart optional
Defines the date from which the mandate should pause. It will only be present if requestType is PAUSE.
As passed in request.
payeeMcc
Merchant Category Code of the payee merchant.
payeeName optional
Name of the Payee involved in mandate.
payeeVpa
VPA of Payee.
String. As passed during creation of mandate.
payerName optional
Name of the Payer involved in mandate.
payerRevocable
Defines whether mandate is revocable by PAYER or not. For onetime mandate it can be true or false. Default value is true.
String - true,false
payerVpa
VPA of Payer.
String. As passed during creation of mandate
recurrencePattern
Recurrence Pattern for Mandate.
Same as original mandate in create or list mandate response
recurrenceRule optional
Recurrence Rule for Mandate. It will not be present for ONETIME, DAILY and ASPRESENTED recurrence pattern.
Same as original mandate in create or list mandate response.
recurrencValue optional
Recurrence Value for Mandate. It will not be present for ONETIME, DAILY and ASPRESENTED recurrence pattern.
Same as original mandate in create or list mandate response.
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url.
String. As passed during creation of mandate.
remarks
Any mandate summary. If pssed in request, it will be same in response else a default value is send.
String
role
Role of the customer for this mandate.
PAYER, PAYEE
shareToPayee
Descibes whether mandate will be shared with payee or not. For onetime mandate it can be true or false. Default value is true.
This API hits TSP Server with a timeout of 60 seconds.
This api will be used for getting all the mandates with the requested status. status PENDING means all the mandate requests that requires action. ONGOING mandates means all the mandates that are currently in active state.
COMPLETED means either ONETIME mandate is executed or validityEnd over for the mandate.
PAUSED means the mandate that are currently paused.
INACTIVE means the mandate that are in FAILURE, EXPIRED, DECLINED, etc.
This API returns an array of mandates for the status as passed in the request.
Request parameters
Parameter
Description
Constraints
limit optional
limits the number of mandates
Numeric String
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
offset optional
leaves that many number of mandates starting from the beginning
Numeric String
status
status for which mandates should be listed. PENDING means all the mandate requests that requires action. ONGOING mandates means all the mandates that are currently in active state. COMPLETED means mandate that is either executed for ONETIME mandate or validityEnd over for the mandate. PAUSED means the mandate that are currently paused. INACTIVE means the mandate that are in FAILURE, EXPIRED, DECLINED, etc.
PENDING, ONGOING, COMPLETED, PAUSED, INACTIVE.
udfParameters optional
Stringified json for udf parameters
String
Response parameters
Parameter
Description
Values
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
status
PSP status of the API
SUCCESS, FAILURE
amount
Amount for mandate
Amount in two decimals. Decimals are mandatory
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
As passed for amountRule in create mandate.
bankAccountUniqueId
Unique id for the selected bank account
bankAccountUniqueId in the response of Fetch Accounts api call.
blockFund
Denotes whether customer's fund should be blocked or not. For onetime mandate it can be true or false. Default value is false.
String - true, false
expiry optional
Timestamp until which mandate request is valid. It will only be present if request is pending for approval for create or update mandate.
Timestamp in YYYY-MM-DDTHH:MM:SS+05:30 format.
gatewayMandateId
UPI request id returned by gateway for the particular mandate request
String
gatewayReferenceId
Customer reference number (rrn) for the mandate operation.
String
gatewayResponseCode
Response code returned by gateway for the mandate operation.
Refer table below.
gatewayResponseMessage
Response message returned by gateway for the mandate operation.
String
gatewayResponseStatus
When status is passed as PENDING it can denote status of create or update pending requests otherwise it denotes the current status of the mandate.
Flag if the payeeVpa is marked as spam. It will be present if and only if gatewayResponseStatus is PENDING and mandateType is CREATE.
true, false
isVerifiedPayee optional
Flag if the payeeVpa is a verified vpa. It will be present if and only if gatewayResponseStatus is PENDING and mandateType is CREATE.
true, false
mandateApprovalTimestamp Optional
Time instant at which create mandate request was approved. Only present if mandate was initiatedBy PAYEE.
YYYY-MM-DDTHH:MM:SS+05:30.
mandateName
Name of the mandate
String
mandateTimestamp
Timestamp of when the mandate request was initiated. When status is passed as PENDING in request it can be the timestamp of when create or update mandate request was initiated depending on the mandateType field , but for every other status it will be timestamp of when mandate was created.
YYYY-MM-DDTHH:MM:SS+05:30.
mandateType
Defines the type of mandate
CREATE, UPDATE
merchantChannelId
Unique id for the merchant channel.
As passed for x-merchant-channel-id in request headers.
merchantCustomerId
Merchant generated unique id for customer.
Alphanumeric string with dot(.). Maximum length is 256. As passed for merchantCustomerId in request.
merchantId
Unique id for the merchant.
As passed for x-merchant-id in request headers
merchantRequestId optional
Merchant generated id for the mandate request. It will not be present if status is passed as PENDING as initiatedBy is PAYEE.
As passed for merchantRequestId in request body.
orgMandateId
Refers to upiRequestId used during creation of mandate.
Same as upiRequestId of create mandate.
payeeMcc
Merchant Category Code of the payee merchant.
payeeName optional
Name of the Payee involved in mandate.
payeeVpa
VPA of payee.
String
payerName optional
Name of the Payer involved in mandate.
payerRevocable
Defines whether mandate is revocable by PAYER or not. For onetime mandate it can be true or false. Default value is true.
String - true,false
payerVpa
VPA of payer.
String
recurrencePattern
Recurrence Pattern for Mandate.
Same as original mandate in create mandate response.
recurrenceRule optional
Recurrence Rule for Mandate. It will not be present for ONETIME, DAILY and ASPRESENTED recurrence pattern.
Same as original mandate in create mandate response.
recurrencValue optional
Recurrence Value for Mandate. It will not be present for ONETIME, DAILY and ASPRESENTED recurrence pattern.
Same as original mandate in create mandate response.
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url.
String. As passed during creation of mandate.
remarks
Any mandate summary
As passed during mandate operation request.
role
Defines the role of the customer in the mandate
PAYER, PAYEE
shareToPayee
Descibes whether mandate will be shared with payee or not. For onetime mandate it can be true or false. Default value is true.
Unique Mandate Number used for execution of the mandate. It will not be present if mandate is pending for payer approval and payee's merchantCustomerId is passed in the request.
At the time of onboarding, PSP will share a public key with the merchant. The algorithm used for creating the signature is SHA256 RSA with PSS padding. Following snippet shows how merchant has to validate the signature at their end.
Note
The keys in request JSON body will be in alphabetically sorted order.
Merchants are required to share the callback URLs and whitelist the PSP IP from which callbacks will be sent.
This callback will be sent to merchant when the PSP receives a confirmation from the VMN aggregator on the customer mobile number and sms token.
status
Description
VERIFIED
Confirmation recieved from VMN ontime. Merchant can call Bind Device API to complete the device binding process.
DECLINED
Device binding process declined due to fraud.
EXPIRED
Confirmation recieved from VMN was delayed. Device binding expired.
Transaction API Callbacks
Incoming Money to Merchant - Collect Status
# A callback with following POST data will be sent to the endpoint configured for "MERCHANT_CREDITED_VIA_COLLECT"{"amount": "100.00",
"autoUpdateNote" : "TCC|102",
"customResponse": "{}",
"expiry": "2016-11-25T00:10:00+05:30",
"gatewayPayerResponseCode": "00",
"gatewayPayeeResponseCode": "00",
"gatewayPayerReversalResponseCode": "00",
"gatewayPayeeReversalResponseCode": "00",
"gatewayReferenceId": "806115044725",
"gatewayResponseCode": "00",
"gatewayResponseMessage": "Transaction is approved",
"gatewayResponseStatus": "SUCCESS",
"gatewayTransactionId": "XYZd0c077f39c454979...",
"gstAmount": "0.54",
"mdrAmount": "3.00",
"merchantChannelId": "DEMOUATAPP",
"merchantId": "DEMOUAT01",
"merchantRequestId": "TXN1234567",
"netSettlementAmount": "96.46",
"payeeMcc": "4121",
"payeeVpa" : "merchant@abc",
"payerAccBin" : "6071530000",
"payerActype" : "CREDIT""payerIfsc" : "BankIFSC",
"payerMerchantCustomerId": "DEMO-CUST-5678""payerName": "Customer Name",
"payerVpa": "customer@xyz",
"refUrl": "https://www.abcxyz.com/",
"riskScore": "00979",
"transactionTimestamp": "2016-11-25T00:00:00+05:30",
"type": "MERCHANT_CREDITED_VIA_COLLECT",
"udfParameters": "{}"}
This callback is given when a collect request is initiated from merchant website or app and the same gets approved/declined/expired by a upi user.
Note:
This callback is also sent after mandate execution instead of the MERCHANT_OUTGOING_EXECUTE_MANDATE if the merchantFlag merchantCreditedViaCollectForMandateExecute is set to true.
Parameter
Description
amount
Amount for which merchant initiated the collect request.
autoUpdateNote optional
adjFlag and adjCode separated by "|"
customResponse
Stringified JSON parameter for future use.
expiry
Expiry timestamp for the collect request.
gatewayPayerResponseCode optional
Response code returned by gateway
gatewayPayeeResponseCode optional
Response code returned by gateway
gatewayPayerReversalResponseCode optional
Response code returned by gateway
gatewayPayeeReversalResponseCode optional
Response code returned by gateway
gatewayReferenceId
Customer reference number (rrn) for the transaction.
gatewayResponseCode
Response code returned by gateway for the transaction. Refer below.
gatewayResponseMessage
Verbose response message returned by gateway for the transaction.
gatewayResponseStatus
Response status returned by gateway
gatewayTransactionId
UPI request id returned by gateway for the transaction.
gstAmount
Gst applied on the MDR charged
mdrAmount
MDR applied on the total transaction amount
merchantChannelId
Unique id for the channel via which request is made.
merchantId
Unique id for merchant.
merchantRequestId
Merchant generated request id as passed in web collect request.
netSettlementAmount
Net amount which needs to be settled (netSettlementAmount = txnAmount - (mdrAmount + gstAmount))
payeeMcc
Merchant Category Code of the payee merchant.
payeeVpa
Vpa of the merchant who initiated the collect request.
payerAccBin optional
Only if payerActype = "CREDIT" , will share 10 digits bin of the credit account .If BIN is 6 digits, then remaining 4 digits shall be zero. If BIN is 8 digits, then remaining 2 digits will be zero.
payerActype optional
Account type of the customer who received the payment.
payerIfsc optional
Account's ifsc of the customer who received the payment.
payerMerchantCustomerId optional
Merchant generated unique id for customer who received the collect request. Only if it is an onus transaction.
payerName optional
Name of the upi user who received the collect request. Only if gatewayResponseCode is "00".
payerVpa
Vpa of the upi user who received the collect request.
refUrl
Invoice as sent by merchant or reference to the transaction in the form of url.
riskScore optional
RiskScore shared by NPCI or Bank
seqNumber
optional
transactionTimestamp
Timestamp of when the web collect was initiated. (YYYY-MM-DDTHH:MM:SS+05:30)
type
Event type of the callback - MERCHANT_CREDITED_VIA_COLLECT.
udfParameters optional
Udf parameters as passed in the web collect request.
umn optional
Umn of the mandate. Will be received only during mandate execution.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Payment Success.
01
PENDING
Payment is in pending state.
ZA
DECLINED
Decline Success.
U69
EXPIRED
Collect request expired.
Else
FAILURE
Any other reason.
Incoming Money to Merchant - Pay
# A callback with following POST data will be sent to the endpoint configured for "MERCHANT_CREDITED_VIA_PAY"{"amount": "100.00",
"splitDetails": [{"name": "TIPS", "value": "1.00"}, {"name": "CCONFEE", "value": "1.00"}, {"name": "PCONFEE", "value": "1.00"}],
"autoUpdateNote" : "TCC|102",
"customResponse": "{}",
"gatewayPayerResponseCode": "00",
"gatewayPayeeResponseCode": "00",
"gatewayPayerReversalResponseCode": "00",
"gatewayPayeeReversalResponseCode": "00",
"gatewayReferenceId": "806115044725",
"gatewayResponseCode": "00",
"gatewayResponseMessage": "Transaction is approved",
"gatewayResponseStatus": "SUCCESS",
"gatewayTransactionId": "XYZd0c077f39c454979...",
"gstAmount": "0.54",
"mdrAmount": "3.00",
"merchantChannelId": "DEMOUATAPP",
"merchantId": "DEMOUAT01",
"merchantRequestId": "TXN1234567",
"netSettlementAmount": "96.46",
"payeeMcc": "4121",
"payeeVpa" : "merchant@abc",
"payerAccBin" : "6071530000",
"payerActype" : "CREDIT""payerIfsc" : "BankIFSC",
"payerMerchantCustomerId": "DEMO-CUST-5678",
"payerName": "Customer Name",
"payerVpa": "customer@xyz",
"refUrl": "https://www.abcxyz.com/",
"riskScore": "00979",
"transactionTimestamp": "2016-11-25T00:00:00+05:30",
"type": "MERCHANT_CREDITED_VIA_PAY",
"subMerchantId": "SUBMERCHANT01",
"subMerchantChannelId": "SUBMERCHANTAPP",
"udfParameters": "{}"}
This callback is given to merchant when a customer pays for his order on merchant app using the sdk pay api.
Parameter
Description
amount
Amount for the transaction.
splitDetails optional
Supplementary Expenses involved in the transaction
autoUpdateNote optional
adjFlag and adjCode separated by "|"
customResponse
Stringified JSON parameter for future use.
gatewayPayerResponseCode optional
Response code returned by gateway
gatewayPayeeResponseCode optional
Response code returned by gateway
gatewayPayerReversalResponseCode optional
Response code returned by gateway
gatewayPayeeReversalResponseCode optional
Response code returned by gateway
gatewayReferenceId
Customer reference number (rrn) for the transaction.
gatewayResponseCode
Response code returned by gateway for the transaction. Refer below.
gatewayResponseMessage
Verbose response message returned by gateway for the transaction.
gatewayResponseStatus
Response status returned by gateway
gatewayTransactionId
UPI request id returned by gateway for the transaction.
gstAmount
Gst applied on the MDR charged
mdrAmount
MDR applied on the total transaction amount
merchantChannelId
Unique id for the channel via which request is made.
merchantId
Unique id for merchant.
merchantRequestId
Merchant generated request id as passed in the pay request.
netSettlementAmount
Net amount which needs to be settled (netSettlementAmount = txnAmount - (mdrAmount + gstAmount))
payeeMcc
Merchant Category Code of the payee merchant.
payeeVpa
Vpa of the merchant who received the payment.
payerAccBin optional
Only if payerActype = "CREDIT" , will share 10 digits bin of the credit account .If BIN is 6 digits, then remaining 4 digits shall be zero. If BIN is 8 digits, then remaining 2 digits will be zero.
payerActype optional
Account type of the customer who received the payment.
payerIfsc optional
Account's ifsc of the customer who received the payment.
payerName
Name of the customer who sent the payment.
payerMerchantCustomerId optional
Merchant generated unique id for customer who sent the payment. Only if it is an onus transaction.
payerVpa
Vpa of the customer who sent the payment.
refUrl
Invoice as sent by merchant or reference to the transaction in the form of url.
riskScore optional
RiskScore shared by NPCI or Bank
transactionTimestamp
Timestamp of when the sdk pay was initiated. (YYYY-MM-DDTHH:MM:SS+05:30)
type
Event type of the callback - MERCHANT_CREDITED_VIA_PAY.
subMerchantId optional
Unique id for subMerchant. Only if present as a subMerchant.
subMerchantChannelId optional
Unique id for the channel via which request is made. Only if present as a subMerchant.
udfParameters optional
Udf parameters as passed in the pay request.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Payment Success.
01
PENDING
Payment is in pending state.
Else
FAILURE
Any other reason.
Incoming Money to Customer - Collect Status
# A callback with following POST data will be sent to the endpoint configured for "CUSTOMER_CREDITED_VIA_COLLECT"{"amount": "100.00",
"autoUpdateNote" : "TCC|102",
"bankAccountUniqueId" : "fb96f8b2b...1ab0c070d0d894",
"bankCode" : "123456",
"customResponse": "{}",
"expiry": "2016-11-25T00:10:00+05:30",
"gatewayPayerResponseCode": "00",
"gatewayPayeeResponseCode": "00",
"gatewayPayerReversalResponseCode": "00",
"gatewayPayeeReversalResponseCode": "00",
"gatewayReferenceId": "806115044725",
"gatewayResponseCode": "00",
"gatewayResponseMessage": "Transaction is approved",
"gatewayResponseStatus": "SUCCESS",
"gatewayTransactionId": "XYZd0c077...f39c454979",
"maskedAccountNumber" : "XXXX123456",
"merchantChannelId": "DEMOUATAPP",
"merchantCustomerId": "DEMO-CUST-1234",
"merchantId": "DEMOUAT01",
"merchantRequestId": "TXN1234567",
"payeeMcc": "4121",
"payeeMerchantCustomerId": "DEMO-CUST-1234",
"payeeMobileNumber" : "919812388554",
"payeeVpa" : "customer1@abc",
"payerMerchantCustomerId": "DEMO-CUST-5678""payerName": "Customer Name",
"payerVpa": "customer@xyz",
"refUrl": "https://www.abcxyz.com/",
"remarks" : "Sample remarks",
"riskScore": "00979",
"transactionTimestamp": "2016-11-25T00:00:00+05:30",
"type": "CUSTOMER_CREDITED_VIA_COLLECT",
"udfParameters": "{}"}
This callback is given when the customer sends a collect request to any upi user and when the same gets approved/declined/expired.
Note: Merchant can get multiple callbacks for the same event type till the transaction status reaches a terminal state. Terminal states for a transaction are SUCCESS, FAILURE, EXPIRED, DECLINED.
Parameter
Description
amount
Amount for which customer initiated the collect request.
autoUpdateNote optional
adjFlag and adjCode separated by "|"
bankAccountUniqueId optional
Unique hash for the customer bank account used for transaction. Only if gatewayResponseCode is "00".
bankCode optional
IIN for the customer bank account used for transaction. Only if gatewayResponseCode is "00".
customResponse
Stringified JSON parameter for future use.
expiry
Expiry timestamp for the collect request.
gatewayPayerResponseCode optional
Response code returned by gateway
gatewayPayeeResponseCode optional
Response code returned by gateway
gatewayPayerReversalResponseCode optional
Response code returned by gateway
gatewayPayeeReversalResponseCode optional
Response code returned by gateway
gatewayReferenceId
Customer reference number (rrn) for the transaction.
gatewayResponseCode
Response code returned by gateway for the transaction. Refer below.
gatewayResponseMessage
Verbose response message returned by gateway for the transaction.
gatewayResponseStatus
Response status returned by gateway
gatewayTransactionId
UPI request id returned by gateway for the transaction.
maskedAccountNumber optional
Masked account number for the customer bank account used for transaction. Only if gatewayResponseCode is "00".
merchantChannelId
Unique id for the channel via which request is made.
merchantCustomerId
Merchant generated unique id for customer who initiated the collect request.
merchantId
Unique id for merchant.
merchantRequestId
Merchant generated request id as passed in the collect request.
payeeMcc
Merchant Category Code of the payee merchant.
payeeMerchantCustomerId
Merchant generated unique id for customer who initiated the collect request.
payeeMobileNumber
Mobile number of the customer who initiated the collect request.
payeeVpa
Vpa of the customer who initiated the collect request.
payerMerchantCustomerId optional
Merchant generated unique id for customer who received the collect request. Only if it is an onus transaction.
payerName
Name of the upi user who received the collect request.
payerVpa
Vpa of the upi user who received the collect request.
refUrl
Invoice as sent by merchant or reference to the transaction in the form of url.
remarks
Remarks passed when intiating the collect request.
riskScore optional
RiskScore shared by NPCI or Bank
transactionTimestamp
Timestamp of when the collect was initiated. (YYYY-MM-DDTHH:MM:SS+05:30)
type
Event type of the callback - CUSTOMER_CREDITED_VIA_COLLECT.
udfParameters optional
Udf parameters as passed in the collect request.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Payment Success.
01
PENDING
Payment is in pending state.
ZA
DECLINED
Decline Success.
U69
EXPIRED
Collect request expired.
Z9
FAILURE
Insufficient funds in customer (remitter) account.
Z8
FAILURE
Per transaction limit exceeded as set by remitting member.
Z7
FAILURE
Transaction frequency limit exceeded as set by remitting member.
Z6
FAILURE
Number of pin tries exceeded.
ZM
FAILURE
Invalid mpin.
RB
DEEMED
Transaction went into deemed state.
96
DEEMED
Transaction went into deemed state.
96
FAILURE
Transaction failed.
Else
FAILURE
Any other reason.
Incoming Money to Customer - Pay
# A callback with following POST data will be sent to the endpoint configured for "CUSTOMER_CREDITED_VIA_PAY"{"amount": "100.00",
"autoUpdateNote" : "TCC|102",
"bankAccountUniqueId" : "fb96f8b2b1ab0c070d0d894......",
"bankCode" : "123456",
"customResponse": "{}",
"gatewayPayerResponseCode": "00",
"gatewayPayeeResponseCode": "00",
"gatewayPayerReversalResponseCode": "00",
"gatewayPayeeReversalResponseCode": "00",
"gatewayReferenceId": "806115044725",
"gatewayResponseCode": "00",
"gatewayResponseMessage": "Transaction is approved",
"gatewayResponseStatus": "SUCCESS",
"gatewayTransactionId": "XYZd0c077f39c454979...",
"maskedAccountNumber" : "XXXX123456",
"merchantCustomerId": "DEMO-CUST-1234",
"merchantId": "DEMOUAT01",
"payeeMcc": "4121",
"payeeMerchantCustomerId": "DEMO-CUST-1234",
"payeeMobileNumber" : "919812388554",
"payeeVpa" : "customer1@abc",
"payerMerchantCustomerId": "DEMO-CUST-5678",
"payerName": "Customer Name",
"payerVpa": "customer@xyz",
"refUrl": "https://www.abcxyz.com/",
"riskScore": "00979",
"transactionTimestamp": "2016-11-25T00:00:00+05:30",
"type": "CUSTOMER_CREDITED_VIA_PAY",
"udfParameters": "{}"}
This callback is given when the customer receives money from any upi user.
Note: Merchant can get multiple callbacks for the same event type till the transaction status reaches a terminal state. Terminal states for a transaction are SUCCESS, FAILURE, EXPIRED, DECLINED.
Parameter
Description
amount
Amount for which customer received the payment.
autoUpdateNote optional
adjFlag and adjCode separated by "|"
bankAccountUniqueId optional
Unique hash for the customer bank account used for transaction. Only if gatewayResponseCode is "00".
bankCode optional
IIN for the customer bank account used for transaction. Only if gatewayResponseCode is "00".
customResponse
Stringified JSON parameter for future use.
gatewayPayerResponseCode optional
Response code returned by gateway
gatewayPayeeResponseCode optional
Response code returned by gateway
gatewayPayerReversalResponseCode optional
Response code returned by gateway
gatewayPayeeReversalResponseCode optional
Response code returned by gateway
gatewayReferenceId
Customer reference number (rrn) for the transaction.
gatewayResponseCode
Response code returned by gateway for the transaction. Refer below.
gatewayResponseMessage
Verbose response message returned by gateway for the transaction.
gatewayResponseStatus
Response status returned by gateway
gatewayTransactionId
UPI request id returned by gateway for the transaction.
maskedAccountNumber optional
Masked account number for the customer bank account used for transaction. Only if gatewayResponseCode is "00".
merchantCustomerId
Merchant generated unique id for customer who received the payment.
merchantId
Unique id for merchant.
payeeMcc
Merchant Category Code of the payee merchant.
payeeMerchantCustomerId
Merchant generated unique id for customer who received the payment.
payeeMobileNumber
Mobile number of the customer who received the payment.
payeeVpa
Vpa of the customer who received the payment.
payerMerchantCustomerId optional
Merchant generated unique id for customer who sent the payment. Only if it is an onus transaction.
payerName
Name of the upi user who sent the payment.
payerVpa
Vpa of the upi user who sent the payment.
refUrl
Invoice as sent by merchant or reference to the transaction in the form of url.
riskScore optional
RiskScore shared by NPCI or Bank
transactionTimestamp
Timestamp of when the payment was received. (YYYY-MM-DDTHH:MM:SS+05:30)
type
Event type of the callback - CUSTOMER_CREDITED_VIA_PAY.
udfParameters optional
Udf parameters as passed in the pay request.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Payment Success.
01
PENDING
Payment is in pending state.
RB
DEEMED
Transaction went into deemed state.
96
DEEMED
Transaction went into deemed state.
96
FAILURE
Transaction failed.
Else
FAILURE
Any other reason.
Outgoing Money from a Customer
# A callback with following POST data will be sent to the endpoint configured for the event{"amount": "10.00",
"splitDetails": [{"name": "TIPS", "value": "1.00"}, {"name": "CCONFEE", "value": "1.00"}, {"name": "PCONFEE", "value": "1.00"}],
"autoUpdateNote" : "TCC|102",
"bankAccountUniqueId": "4536baef...32cdba67",
"bankCode" : "123456",
"customResponse": "{}",
"gatewayPayerResponseCode": "00",
"gatewayPayeeResponseCode": "00",
"gatewayPayerReversalResponseCode": "00",
"gatewayPayeeReversalResponseCode": "00",
"gatewayReferenceId": "806115044725",
"gatewayResponseCode": "00",
"gatewayResponseMessage": "Transaction is approved",
"gatewayResponseStatus": "SUCCESS",
"gatewayTransactionId": "DEMOUATAPP01TXNfo897fHVTiYq51739",
"maskedAccountNumber" : "XXXXXXX9988",
"merchantChannelId": "DEMOUATAPP",
"merchantCustomerId": "DEMO-CUST-1234",
"merchantId": "MERCHANT",
"merchantRequestId": "TXN1234567",
"orgMandateId": "APL71f7d43bdf64d72d187317de123",
"payeeMcc": "4121",
"payeeMerchantCustomerId": "DEMO-CUST-5678",
"payeeName": "Customer Name",
"payeeVpa": "customer@xyz",
"payerMerchantCustomerId": "DEMO-CUST-1234",
"payerMobileNumber" : "919812388554",
"payerVpa": "customer1@abc",
"requestType": "APPROVE",
"collectType" : "MANDATE",
"seqNumber" : "1",
"refUrl": "https://www.abcxyz.com/",
"riskScore": "00979",
"transactionTimestamp": "2016-11-25T00:00:00+05:30",
"type": "<SEE TABLE BELOW>",
"udfParameters": "{}",
"umn": "ABZv1f7daa3bf64729af61b0f6d95b8dd@bankbiz"}
This callback is given when the customer pays
for his merchant order using Collect Approve
for his merchant order using the SDK Pay
to another UPI user by using Collect Approve
to another UPI user using vpa, A/C+IFSC, Scan&Pay, Intent
Note: Merchant can get multiple callbacks for the same event type till the transaction status reaches a terminal state. Terminal states for a transaction are SUCCESS, FAILURE, EXPIRED, DECLINED.
Parameter
Description
amount
Amount for which customer made the payment.
splitDetails optional
Supplementary Expenses involved in the transaction
autoUpdateNote optional
adjFlag and adjCode separated by "|"
bankAccountUniqueId optional
Unique hash for the customer bank account used for transaction. Only if gatewayResponseCode is non "U69".
bankCode optional
IIN for the customer bank account used for transaction. Only if gatewayResponseCode is non "U69".
customResponse
Stringified JSON parameter for future use.
gatewayPayerResponseCode optional
Response code returned by gateway
gatewayPayeeResponseCode optional
Response code returned by gateway
gatewayPayerReversalResponseCode optional
Response code returned by gateway
gatewayPayeeReversalResponseCode optional
Response code returned by gateway
gatewayReferenceId
Customer reference number (rrn) for the transaction.
gatewayResponseCode
Response code returned by gateway for the transaction. Refer below.
gatewayResponseMessage
Verbose response message returned by gateway for the transaction.
gatewayResponseStatus
Response status returned by gateway
gatewayTransactionId
UPI request id returned by gateway for the transaction.
maskedAccountNumber optional
Masked account number for the customer bank account used for transaction. Only if gatewayResponseCode is non "U69".
merchantChannelId
Unique id for the channel via which request is made.
merchantCustomerId
Merchant generated unique id for customer who sent the payment.
merchantId
Unique id for merchant.
merchantRequestId optional
Merchant generated request id as passed in the collect request. Only if gatewayResponseCode is not "U69". Only given to the party which initiates the transaction
orgMandateId optional applicable only for collect mandate
Refers to upiRequestId used during creation of mandate.
payeeMcc
Merchant Category Code of the payee merchant.
payeeMerchantCustomerId optional
Merchant generated unique id for customer who received the payment. Only if it is an onus P2P transaction.
payeeName optional
Name of the upi user who received the payment. Only if payment is done to a non A/C+IFSC vpa.
payeeVpa
Vpa of the upi user who received the payment.
payerMerchantCustomerId
Merchant generated unique id for customer who sent the payment.
payerMobileNumber
Mobile number of the customer who made the payment.
payerVpa
If collectType is null or TRANSACTION, Vpa of the customer who received the collect request and if collectType is MANDATE, umn of the mandate.
requestType optional
Action which was taken on the collect request. Will not be present in case of EXPIRED callback.
collectType optional
Differentiates between a transaction collect request (TRANSACTION) or a mandate execution collect request (MANDATE). It will only be present in case of mandate request.
seqNumber optional applicable only for collect mandate
Denotes the recurring cycle of mandate execution. Will be received only during mandate executions. It will only be present in case of mandate request.
refUrl
Invoice as sent by merchant or reference to the transaction in the form of url.
riskScore optional
RiskScore shared by NPCI or Bank
transactionTimestamp
Timestamp of when the payment was received. (YYYY-MM-DDTHH:MM:SS+05:30)
type
Event type of the callback. Refer below.
udfParameters optional
Udf parameters as passed in the original payment request.
umn optional applicable only for collect mandate
Vpa used for execution of mandate.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Payment Success.
01
PENDING
Payment is in pending state.
ZA
DECLINED
Decline Success.
U69
EXPIRED
Collect request expired.
Z9
FAILURE
Insufficient funds in customer (remitter) account.
Z8
FAILURE
Per transaction limit exceeded as set by remitting member.
Z7
FAILURE
Transaction frequency limit exceeded as set by remitting member.
Z6
FAILURE
Number of pin tries exceeded.
ZM
FAILURE
Invalid mpin.
RB
DEEMED
Transaction went into deemed state.
96
DEEMED
Transaction went into deemed state.
96
FAILURE
Transaction failed.
Else
FAILURE
Any other reason.
type
Description
CUSTOMER_DEBITED_FOR_MERCHANT_VIA_COLLECT
Outgoing money from a customer to merchant via collect
CUSTOMER_DEBITED_FOR_MERCHANT_VIA_PAY
Outgoing money from a customer to merchant via pay
CUSTOMER_DEBITED_VIA_COLLECT
Outgoing money from a customer to a UPI user via collect
CUSTOMER_DEBITED_VIA_PAY
Outgoing money from a customer to a UPI user via pay
Incoming Collect Request to Customer
# A callback with following POST data will be sent to the endpoint configured for COLLECT_REQUEST_RECEIVED{"amount": "100.00",
"customResponse": "{}",
"expiry": "2016-11-25T00:30:00+05:30",
"gatewayReferenceId": "806115044725",
"gatewayTransactionId": "XYZd0c077f39c454979...",
"isVerifiedPayee": "true",
"isMarkedSpam": "true",
"merchantCustomerId": "DEMO-CUST-1234",
"merchantId": "DEMOUAT01",
"payeeMcc": "4121",
"payeeMerchantCustomerId": "DEMO-CUST-5678",
"payeeName": "Customer Name",
"payeeVpa": "customer@xyz",
"payerMerchantCustomerId": "DEMO-CUST-1234",
"payerVpa": "customer1@abc",
"collectType" : "MANDATE",
"seqNumber" : "1",
"refUrl": "https://www.abcxyz.com/",
"remarks": "This is remarks",
"riskScore": "00979",
"transactionTimestamp": "2016-11-25T00:00:00+05:30",
"type": "COLLECT_REQUEST_RECEIVED"}
This callback is given when a customer receives a collect request from any UPI user.
This enables merchant server to notify the customer, so that she can take action on the request.
Parameter
Description
amount
Amount for which customer received the collect request.
customResponse
Stringified JSON parameter for future use.
expiry
Expiry timestamp for the collect request.
gatewayReferenceId
Customer reference number (rrn) for the transaction.
gatewayTransactionId
UPI request id returned by gateway for the transaction.
isVerifiedPayee
Stringified boolean flag if the payee is a verified vpa.
isMarkedSpam
Stringified boolean flag if the payee is marked as spam.
merchantCustomerId
Merchant generated unique id for customer who received the collect request.
merchantId
Unique id for merchant.
payeeMcc
Merchant Category Code of the payee merchant.
payeeMerchantCustomerId
Merchant generated unique id for customer who initiated the collect request.
payeeName
Name of the upi user who sent the collect request.
payeeVpa
Vpa of the upi user who sent the collect request.
payerMerchantCustomerId
Merchant generated unique id for customer who received the collect request.
payerVpa
If collectType is null or TRANSACTION, Vpa of the customer who received the collect request and if collectType is MANDATE, umn of the mandate.
collectType optional
Differentiates between a transaction collect request (TRANSACTION) or a mandate execution collect request (MANDATE).
seqNumber optional
Denotes the recurring cycle of mandate execution. Will be received only during mandate executions.
refUrl
Invoice as sent by merchant or reference to the transaction in the form of url.
remarks
Remarks sent by upi user for the collect request.
riskScore optional
RiskScore shared by NPCI or Bank
transactionTimestamp
Timestamp of when the collect request was received. (YYYY-MM-DDTHH:MM:SS+05:30)
type
Event type of the callback - COLLECT_REQUEST_RECEIVED.
Outgoing Collect Request from Customer
# A callback with following POST data will be sent to the endpoint configured for COLLECT_REQUEST_SENT{"amount": "100.00",
"bankAccountUniqueId": "4536baef...32cdba67",
"bankCode" : "123456",
"customResponse": "{}",
"expiry": "2016-11-25T00:30:00+05:30",
"gatewayReferenceId": "806115044725",
"gatewayResponseCode": "00",
"gatewayResponseMessage": "Collect request sent successfully",
"gatewayResponseStatus": "SUCCESS",
"gatewayTransactionId": "XYZd0c077f39c454979...",
"maskedAccountNumber" : "XXXXXXX9988",
"merchantChannelId": "DEMOUAT01",
"merchantCustomerId": "DEMO-CUST-1234",
"merchantId": "DEMOUAT01",
"merchantRequestId": "TXN1234567",
"payeeMcc": "4121",
"payeeMerchantCustomerId": "DEMO-CUST-1234",
"payeeMobileNumber": "919876543210",
"payeeVpa": "customer@xyz",
"payerName": "Customer Name",
"payerVpa": "customer1@abc",
"refUrl": "https://www.abcxyz.com/",
"remarks": "This is remarks",
"riskScore": "00979",
"transactionTimestamp": "2016-11-25T00:00:00+05:30",
"type": "COLLECT_REQUEST_SENT",
"udfParameters": "{}"}
This callback is given when a customer sends a collect request to any UPI user.
This enables merchant server to notify the customer, that his collect request is send successfully.
Parameter
Description
amount
Amount for which customer sent the collect request.
bankAccountUniqueId optional
Unique hash for the customer bank account used for transaction. Only if gatewayResponseCode is "00".
bankCode optional
IIN for the customer bank account used for transaction. Only if gatewayResponseCode is "00".
customResponse
Stringified JSON parameter for future use.
expiry
Expiry timestamp for the collect request.
gatewayReferenceId
Customer reference number (rrn) for the transaction.
gatewayResponseCode
Response code returned by gateway for the transaction. Refer below.
gatewayResponseMessage
Verbose response message returned by gateway for the transaction.
gatewayResponseStatus
Response status returned by gateway
gatewayTransactionId
UPI request id returned by gateway for the transaction.
maskedAccountNumber optional
Masked account number for the customer bank account used for transaction. Only if gatewayResponseCode is "00".
merchantChannelId
Unique channel id for merchant.
merchantCustomerId
Merchant generated unique id for customer who sent the collect request.
merchantId
Unique id for merchant.
merchantRequestId
Merchant generated request id as passed in the collect request.
payeeMcc
Merchant Category Code of the payee merchant.
payeeMerchantCustomerId
Merchant generated unique id for customer who sent the collect request.
payeeMobileNumber
Mobile number of the customer who sent the collect request.
payeeVpa
Vpa of the customer who sent the collect request.
payerName
Name of the payer to whom collect request was sent.
payerVpa
Vpa of the UPI user who received the collect request.
refUrl
Invoice as sent by merchant or reference to the transaction in the form of url.
remarks
Remarks sent by customer for the collect request.
riskScore optional
RiskScore shared by NPCI or Bank
transactionTimestamp
Timestamp of when the collect request was sent. (YYYY-MM-DDTHH:MM:SS+05:30)
type
Event type of the callback - COLLECT_REQUEST_SENT.
udfParameters optional
Udf parameters as passed in the request money api call.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Collect request sent successfully.
01
PENDING
Sending collect request timed out.
Else
FAILURE
Sending collect request failed.
Query Closing
# A callback with following POST data will be sent to the configured url :{"merchantChannelId": "MERCHANTAPP",
"merchantId": "MERCHANT",
"queries": [{"gatewayReferenceId" : "809323430413",
"gatewayResponseCode": "105",
"gatewayResponseMessage": "Beneficiary account has already been credited.",
"gatewayTransactionId": "BankNameSDKV3d0c077f39c454979a010ff7ada",
"merchantCustomerId": "MERCHANTCUST123",
"queryClosingTimestamp": "2016-11-25T00:00:00+05:30",
"queryComment": "Amount not credited",
"queryReferenceId": "QUERY123",
"udfParameters": "{}"},
...
]}
Server sends a callback to the url configured when queries are closed. In case of more than 100 queries closed in a given day, multiple callbacks will be sent in batches of 100 queries per callback.
Parameter
Description
merchantId
Unique id for merchant.
merchantChannelId
Unique id for the channel via which request is made.
merchantCustomerId
Merchant generated unique id for customer on whose transaction the query was raised.
queryReferenceId
PSP generated unique id for the query
queryComment optional
The query description as was sent in the request while raising the query. Will only come if it was passed while raising the query.
queryClosingTimestamp
Timestamp of when the query was closed.
gatewayTransactionId
UPI request id that was passed in the request while raising the query
gatewayResponseCode
Response code returned by the gateway about the query status
gatewayResponseMessage
Response message returned by the gateway about the query status
gatewayReferenceId
RRN of the transaction whose query is being closed
udfParameters optional
Stringified json for udf parameters.
gatewayResponseCode
gatewayResponseMessage
Original Transaction Status
102
Your account has already been credited with Rs {amount}. Please check your balance.
Failure
103
Your account has already been credited with Rs {amount}. Please check your balance.
Failure
104
The transaction has failed, please try again after some time.
Failure
105
Beneficiary account has already been credited.
Success
106
Funds have been reversed to your bank account. Your bank shall credit in 5 working days.
Failure
107
Beneficiary account has already been credited.
Success
108
Beneficiary account has already been credited.
Success
109
Funds have been reversed to your bank account. Your bank shall credit in 5 working days.
Failure
144
Your account was not debited.
Failure
Else
Incase any other gatewayResponseCode is returned by TSP. Consider the transaction status as Failure.
Failure
Refund Status
# A callback with following POST data will be sent to the endpoint configured for "MERCHANT_DEBITED_VIA_REFUND"{"customResponse": "{}",
"gatewayRefundReferenceId": "809323430413",
"gatewayResponseCode": "00",
"gatewayResponseMessage": "Your refund is successful",
"gatewayResponseStatus": "SUCCESS",
"gatewayTransactionId": "AUTcb313014204649ad8818933d8623abd7",
"merchantChannelId": "TESTAPP",
"merchantId": "TEST",
"refundAmount": "19.00",
"refundRequestId": "refund4543843",
"refundTimestamp": "2019-06-09T17:57:49+05:30",
"refundType": "ONLINE",
"transactionAmount": "200.00",
"type": "MERCHANT_DEBITED_VIA_REFUND",
"udfParameters": "{}"}
This callback is given when the merchant initiates a refund and when the same gets success/failure.
Note: Merchant can get multiple callbacks for the same event type till the refund status reaches a terminal state. Terminal states for a refund are SUCCESS and FAILURE.
Parameter
Description
customResponse
Stringified JSON parameter for future use.
gatewayRefundReferenceId
Reference id returned by the gateway for the refund
gatewayResponseCode
Response code returned by gateway for the refund
gatewayResponseMessage
Response message for code returned by gateway for the refund
gatewayResponseStatus
Response status returned by gateway for the refund
gatewayTransactionId
UPI request id returned by gateway for the transaction
merchantChannelId
Unique id for the merchant channel as passed in request headers
merchantId
Unique id for the merchant as passed in request headers
refundAmount
The amount to be refunded as passed in the request body
refundRequestId
Merchant generated unique id for the refund as passed in the request body
refundTimestamp
Timestamp of when refund request was initiated
refundType
Type of refund being initiated as passed in the request body
transactionAmount
The total amount for which original transaction was performed
type
Event type of the callback - MERCHANT_DEBITED_VIA_REFUND
udfParameters optional
Udf parameters as passed in the request
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Refund accepted successfully
01
PENDING
Refund is in pending state
91
PENDING
Refund is in pending state
09
PENDING
Refund is in pending state
060
PENDING
Refund is in pending state
070
PENDING
Refund is in pending state
080
PENDING
Refund is in pending state
RB
DEEMED
Refund is in deemed state
96
DEEMED
Refund is in deemed state
Else
FAILURE
Refund failed
Mandate Merchant API Callbacks
Outgoing Create Mandate From Merchant
# A callback with following POST data will be sent to the configured url :{"amount": "100.00",
"amountRule": "EXACT",
"blockFund": "true",
"expiry": "2020-07-25T00:30:00+05:30",
"gatewayMandateId": "APL71f7d43bdf64d72d9saddfded",
"gatewayReferenceId": "809323430413""gatewayResponseCode": "00",
"gatewayResponseMessage": "Mandate is successfully created",
"gatewayResponseStatus": "SUCCESS",
"initiatedBy": "PAYEE",
"mandateApprovalTimestamp" : "2017-06-09T17:58:49+05:30",
"mandateName": "merchant mandate",
"mandateTimestamp": "2020-06-01T15:40:42+05:30",
"merchantChannelId": "AMAZON",
"merchantId": "AMAZON",
"merchantRequestId": "6138ne3wswbsssddc4dddc",
"orgMandateId": "APLMsleiuryufhuhsoisdjfadb48003sdaa0",
"payeeMcc": "4121",
"payeeVpa": "test@apl",
"payerName": "ABC",
"payerRevocable": "true",
"payerVpa": "9962463212@apl",
"recurrencePattern": "MONTHLY",
"recurrenceRule": "ON",
"recurrenceValue": "5",
"refUrl": "https://www.abcxyz.com/",
"remarks": "Sample Remarks",
"role": "PAYEE",
"shareToPayee": "true",
"transactionType": "UPI_MANDATE",
"type": "MERCHANT_OUTGOING_CREATE_MANDATE",
"udfParameters" : "{}""umn": "uniqueMandateNumber@apl",
"validityEnd": "2020/06/05",
"validityStart": "2020/06/04"}
Server sends a callback to Merchant to the url configured when mandate is created.
Parameter
Description
amount
Amount of Mandate. Numeric string with two decimals.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
blockFund
Denotes whether customer's fund should be blocked or not. For Onetime mandate, value can be true or false and for recurring mandate it is always false.
expiry
Timestamp until which create mandate request is valid. It will be present only when payee has initiated the mandate.
gatewayMandateId
upiRequestId passed in the request.
gatewayReferenceId
Customer reference number (rrn).
gatewayResponseCode
Response code returned by gateway for the mandate.
gatewayResponseMessage
Response message returned by gateway for the mandate.
gatewayResponseStatus
Response status returned by gateway.
initiatedBy
Describes whether PAYER or PAYEE has initiated the mandate.
mandateApprovalTimestamp
Time instant at which create mandate request was approved. Only present if mandate was initiatedBy Payee. Timestamp in YYYY-MM-DDTHH:MM:SS+05:30 format.
mandateName
Name of the mandate.
mandateTimestamp
Timestamp of when the mandate request was attempted. Timestamp in YYYY-MM-DDTHH:MM:SS+05:30 format.
merchantChannelId
Unique id for the channel via which request is made.
merchantId
Unique id for merchant.
merchantRequestId
Request id used for the mandate. It is merchantRequestId that is passed during initiation of mandate.
orgMandateId
Refers to upiRequestId used during creation of mandate.
payeeMcc
Merchant Category Code of the payee merchant. If Payee is a customer it will be "0000" else it will be a 4 digit numeric string.
payeeVpa
Vpa of the payee.
payerName
Name of the Payer involved in mandate.
payerRevocable
Denotes whether mandate can be revoke by payer or not. If while requesting mandate Payee passes this flag is true, mandate can be revoked by Payer else it cannot be revoked by Payer. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
payerVpa
Vpa of the payer.
recurrencePattern
Recurrence Pattern for Mandate. Possible values are ONETIME, DAILY, WEEKLY, FORTNIGHTLY,MONTHLY, BIMONTHLY, QUARTERLY, HALFYEARLY, YEARLY, ASPRESENTED
recurrenceRule conditional
Recurrence Rule for Mandate. Possible values are ON, BEFORE, AFTER. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
recurrencValue conditional
Recurrence Value for Mandate. Possible values are 1-31 and depends on the recurrencePattern. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url. This is a field which is majorly for future purpose and is send by the Payee.
remarks
Any mandate summary
role
Role of the customer for this mandate. PAYER,PAYEE
shareToPayee
Denotes whether mandate should be shared with payee or not. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
transactionType
Type of Mandate Creation
type
Event type of the callback
udfParameters optional
Stringified json for udf parameters. It will be present only if passed during web mandate API request.
umn optional
Vpa used for execution of mandate. It will not be present if gatewayResponseStatus is EXPIRED or if it is not received from NPCI due to validation failure at Payer PSP during approve mandate.
validityEnd
Date until which mandate can be executed.
validityStart
Date after which mandate can be executed.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Mandate Created Successfully.
UM3
EXPIRED
Mandate request expired.
ZA
DECLINED
Mandate request Declined by Payer.
Else
FAILURE
Any other reason.
Outgoing Update Mandate From Merchant
# A callback with following POST data will be sent to the configured url :{"amount": "100.00",
"amountRule": "EXACT",
"blockFund": "true",
"expiry": "2020-07-25T00:30:00+05:30",
"gatewayMandateId": "APL71f7d43bdf64d72d9saddfded",
"gatewayReferenceId": "809323430413""gatewayResponseCode": "00",
"gatewayResponseMessage": "Mandate is successfully updated",
"gatewayResponseStatus": "SUCCESS",
"initiatedBy": "PAYER",
"mandateName": "merchant mandate",
"mandateTimestamp": "2020-06-01T15:40:42+05:30",
"mandateType" : "UPDATE",
"merchantChannelId": "AMAZON",
"merchantId": "AMAZON",
"merchantRequestId": "6138ne3wswbsssddc4dddc",
"orgMandateId": "APLMsleiuryufhuhsoisdjfadb48003sdaa0",
"payeeMcc": "4121",
"payeeVpa": "test@apl",
"payerName": "ABC",
"payerRevocable": "true",
"payerVpa": "9962463212@apl",
"recurrencePattern": "MONTHLY",
"recurrenceRule": "ON",
"recurrenceValue": "5",
"refUrl": "https://www.abcxyz.com/",
"remarks": "Sample Remarks",
"role": "PAYER",
"shareToPayee": "true",
"transactionType": "UPI_MANDATE",
"type": "MERCHANT_OUTGOING_UPDATE_MANDATE",
"udfParameters" : "{}""umn": "uniqueMandateNumber@apl",
"validityEnd": "2020/06/05",
"validityStart": "2020/06/04"}
Server sends a callback to Merchant to the url configured when mandate is updated.
Parameter
Description
amount
Amount of Mandate. Numeric string with two decimals.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
blockFund
Denotes whether customer's fund should be blocked or not. For Onetime mandate, value can be true or false and for recurring mandate it is always false.
expiry
Timestamp until which create mandate request is valid. It will be present only when payee has initiated the mandate.
gatewayMandateId
upiRequestId passed in the request.
gatewayReferenceId
Customer reference number (rrn).
gatewayResponseCode
Response code returned by gateway for the mandate.
gatewayResponseMessage
Response message returned by gateway for the mandate.
gatewayResponseStatus
Response status returned by gateway.
initiatedBy
Describes whether PAYER or PAYEE has initiated the mandate.
mandateName
Name of the mandate.
mandateTimestamp
Timestamp of when the mandate request was attempted.
mandateType
Denotes the type of mandate operation. Values can be UPDATE/REVOKE.
merchantChannelId
Unique id for the channel via which request is made.
merchantId
Unique id for merchant.
merchantRequestId
Request id used for the mandate. It is merchantRequestId that is passed during initiation of mandate request.
orgMandateId
Refers to upiRequestId used during creation of mandate.
payeeMcc
Merchant Category Code of the payee merchant. If Payee is a customer it will be "0000" else it will be a 4 digit numeric string.
payeeVpa
Vpa of the payee.
payerName
Name of the Payer involved in mandate.
payerRevocable
Denotes whether mandate can be revoke by payer or not. If while requesting mandate Payee passes this flag is true, mandate can be revoked by Payer else it cannot be revoked by Payer. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
payerVpa
Vpa of the payer.
recurrencePattern
Recurrence Pattern for Mandate. Possible values are ONETIME, DAILY, WEEKLY, FORTNIGHTLY,MONTHLY, BIMONTHLY, QUARTERLY, HALFYEARLY, YEARLY, ASPRESENTED
recurrenceRule conditional
Recurrence Rule for Mandate. Possible values are ON, BEFORE, AFTER. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
recurrencValue conditional
Recurrence Value for Mandate. Possible values are 1-31 and depends on the recurrencePattern. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url. This is a field which is majorly for future purpose and is send by the Payee.
remarks
Any mandate summary
role
Role of the customer for this mandate. PAYER,PAYEE
shareToPayee
Denotes whether mandate should be shared with payee or not. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
transactionType
Type of Mandate Creation
type
Event type of the callback
udfParameters optional
Stringified json for udf parameters. It will be present only if passed during web update API request.
umn
Vpa used for execution of mandate.
validityEnd
Date until which mandate can be executed.
validityStart
Date after which mandate can be executed.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Mandate updated successfully.
UM3
EXPIRED
Mandate request expired.
QT
DECLINED
Mandate request Declined by Payer.
Else
FAILURE
Any other reason.
Incoming Pause Mandate For Merchant
# A callback with following POST data will be sent to the configured url :{"amount": "100.00",
"amountRule": "EXACT",
"blockFund": "true",
"gatewayMandateId": "APL71f7d43bdf64d72d9saddfded",
"gatewayReferenceId": "809323430413""gatewayResponseCode": "00",
"gatewayResponseMessage": "Mandate is successfully paused",
"gatewayResponseStatus": "SUCCESS",
"initiatedBy" : "PAYER",
"mandateName": "merchant mandate",
"mandateTimestamp": "2020-06-01T15:40:42+05:30",
"mandateType" : "PAUSE",
"merchantChannelId": "AMAZON",
"merchantId": "AMAZON",
"merchantRequestId": "6138ne3wswbsssddc4dddc",
"orgMandateId": "APLMsleiuryufhuhsoisdjfadb48003sdaa0",
"pauseEnd": "2019/09/19",
"pauseStart": "2019/09/17",
"payeeMcc": "4121",
"payeeVpa": "test@apl",
"payerName": "ABC",
"payerRevocable": "true",
"payerVpa": "9962463212@apl",
"recurrencePattern": "MONTHLY",
"recurrenceRule": "ON",
"recurrenceValue": "5",
"refUrl": "https://www.abcxyz.com/",
"remarks": "Sample Remarks",
"role": "PAYER",
"shareToPayee": "true",
"transactionType": "UPI_MANDATE",
"type": "MERCHANT_INCOMING_PAUSE_MANDATE",
"umn": "uniqueMandateNumber@apl",
"validityEnd": "2020/06/05",
"validityStart": "2020/06/04"}
Server sends a callback to Merchant to the url configured when mandate is paused.
Parameter
Description
amount
Amount of Mandate. Numeric string with two decimals.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
blockFund
Denotes whether customer's fund should be blocked or not. For Onetime mandate, value can be true or false and for recurring mandate it is always false.
gatewayMandateId
upiRequestId passed in the request.
gatewayReferenceId
Customer reference number (rrn).
gatewayResponseCode
Response code returned by gateway for the mandate.
gatewayResponseMessage
Response message returned by gateway for the mandate.
gatewayResponseStatus
Response status returned by gateway.
initiatedBy
Describes whether PAYER or PAYEE has initiated the mandate.
mandateName
Name of the mandate.
mandateTimestamp
Timestamp of when the mandate request was attempted.
mandateType
Denotes the type of mandate operation. Values can be PAUSE/UNPAUSE.
merchantChannelId
Unique id for the channel via which request is made.
merchantId
Unique id for merchant.
merchantRequestId
Request id used for the mandate operation. It is merchantRequestId that is passed during initiation of mandate request.
orgMandateId
Refers to upiRequestId used during creation of mandate.
pauseEnd
Date until which mandate is paused
pauseStart
Date from which mandate is paused
payeeMcc
Merchant Category Code of the payee merchant. If Payee is a customer it will be "0000" else it will be a 4 digit numeric string.
payeeVpa
Vpa of the payee.
payerName
Name of the Payer involved in mandate. It will be present if role is PAYEE
payerRevocable
Denotes whether mandate can be revoke by payer or not. If while requesting mandate Payee passes this flag is true, mandate can be revoked by Payer else it cannot be revoked by Payer. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
payerVpa
Vpa of the payer.
recurrencePattern
Recurrence Pattern for Mandate. Possible values are ONETIME, DAILY, WEEKLY, FORTNIGHTLY,MONTHLY, BIMONTHLY, QUARTERLY, HALFYEARLY, YEARLY, ASPRESENTED
recurrenceRule conditional
Recurrence Rule for Mandate. Possible values are ON, BEFORE, AFTER. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
recurrencValue conditional
Recurrence Value for Mandate. Possible values are 1-31 and depends on the recurrencePattern. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url. This is a field which is majorly for future purpose and is send by the Payee.
remarks
Any mandate summary
role
Role of the customer for this mandate. PAYER,PAYEE
shareToPayee
Denotes whether mandate should be shared with payee or not. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
transactionType
Type of Mandate Creation
type
Event type of the callback
umn
Vpa used for execution of mandate.
validityEnd
Date until which mandate can be executed.
validityStart
Date after which mandate can be executed.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Payment Success.
Else
FAILURE
Any other reason.
Incoming Create Mandate For Merchant
# A callback with following POST data will be sent to the configured url :{"amount": "100.00",
"amountRule": "EXACT",
"blockFund": "true",
"gatewayMandateId": "APL71f7d43bdf64d72d9saddfded",
"gatewayReferenceId": "809323430413""gatewayResponseCode": "00",
"gatewayResponseMessage": "Mandate is successfully created",
"gatewayResponseStatus": "SUCCESS",
"initiatedBy": "PAYER",
"mandateName": "merchant mandate",
"mandateTimestamp": "2020-06-01T15:40:42+05:30",
"merchantChannelId": "APL",
"merchantId": "APL",
"merchantRequestId": "6138ne3wswbsssddc4dddc",
"orgMandateId": "APLMsleiuryufhuhsoisdjfadb48003sdaa0",
"payeeMcc": "4121",
"payeeVpa": "test@apl",
"payerName": "ABC",
"payerRevocable": "true",
"payerVpa": "9962463212@apl",
"recurrencePattern": "MONTHLY",
"recurrenceRule": "ON",
"recurrenceValue": "5",
"refUrl": "https://www.abcxyz.com/",
"remarks": "Sample Remarks",
"role": "PAYER",
"shareToPayee": "true",
"transactionType": "UPI_MANDATE",
"type": "MERCHANT_INCOMING_CREATE_MANDATE",
"umn": "uniqueMandateNumber@apl",
"validityEnd": "2020/06/05",
"validityStart": "2020/06/04"}
Server sends a callback to Merchant to the url configured when an mandate creation request is received.
As mandate is initiated by PAYER the mandateTimestamp should be considered as mandateApprovalTimestamp.
Parameter
Description
amount
Amount of Mandate. Numeric string with two decimals.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
blockFund
Denotes whether customer's fund should be blocked or not. For Onetime mandate, value can be true or false and for recurring mandate it is always false.
gatewayMandateId
upiRequestId passed in the request.
gatewayReferenceId
Customer reference number (rrn).
gatewayResponseCode
Response code returned by gateway for the mandate.
gatewayResponseMessage
Response message returned by gateway for the mandate.
gatewayResponseStatus
Response status returned by gateway.
initiatedBy
Describes whether PAYER or PAYEE has initiated the mandate.
mandateName
Name of the mandate.
mandateTimestamp
Timestamp of when the mandate request was attempted. Timestamp in YYYY-MM-DDTHH:MM:SS+05:30 format.
merchantChannelId
Unique id for the channel via which request is made.
merchantId
Unique id for merchant.
merchantRequestId
Request id used for the mandate. It will be merchantRequestId that is passed during approve mandate if mandate is initiated by Payee else it will be refId that is received from NPCI for Payer initiated mandate.
orgMandateId
Refers to upiRequestId used during creation of mandate.
payeeMcc
Merchant Category Code of the payee merchant. If Payee is a customer it will be "0000" else it will be a 4 digit numeric string.
payeeVpa
Vpa of the payee.
payerName
Name of the Payer involved in mandate. It will be present if role is PAYEE
payerRevocable
Denotes whether mandate can be revoke by payer or not. If while requesting mandate Payee passes this flag is true, mandate can be revoked by Payer else it cannot be revoked by Payer. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
payerVpa
Vpa of the payer.
recurrencePattern
Recurrence Pattern for Mandate. Possible values are ONETIME, DAILY, WEEKLY, FORTNIGHTLY,MONTHLY, BIMONTHLY, QUARTERLY, HALFYEARLY, YEARLY, ASPRESENTED
recurrenceRule conditional
Recurrence Rule for Mandate. Possible values are ON, BEFORE, AFTER. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
recurrencValue conditional
Recurrence Value for Mandate. Possible values are 1-31 and depends on the recurrencePattern. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url. This is a field which is majorly for future purpose and is send by the Payee.
remarks
Any mandate summary
role
Role of the customer for this mandate. PAYER,PAYEE
shareToPayee
Denotes whether mandate should be shared with payee or not. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
transactionType
Type of Mandate Creation
type
Event type of the callback
umn
Vpa used for execution of mandate.
validityEnd
Date until which mandate can be executed.
validityStart
Date after which mandate can be executed.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Mandate Created Successfully.
UM3
EXPIRED
Mandate request expired.
ZA
DECLINED
Mandate request Declined by Payer.
Else
FAILURE
Any other reason.
Incoming Update Mandate For Merchant
# A callback with following POST data will be sent to the configured url :{"amount": "100.00",
"amountRule": "EXACT",
"blockFund": "true",
"gatewayMandateId": "APL71f7d43bdf64d72d9saddfded",
"gatewayReferenceId": "809323430413""gatewayResponseCode": "00",
"gatewayResponseMessage": "Mandate is successfully updated",
"gatewayResponseStatus": "SUCCESS",
"initiatedBy": "PAYER",
"mandateName": "merchant mandate",
"mandateTimestamp": "2020-06-01T15:40:42+05:30",
"mandateType" : "UPDATE",
"merchantChannelId": "APL",
"merchantId": "APL",
"merchantRequestId": "6138ne3wswbsssddc4dddc",
"orgMandateId": "APLMsleiuryufhuhsoisdjfadb48003sdaa0",
"payeeMcc": "4121",
"payeeVpa": "test@apl",
"payerName": "ABC",
"payerRevocable": "true",
"payerVpa": "9962463212@apl",
"recurrencePattern": "MONTHLY",
"recurrenceRule": "ON",
"recurrenceValue": "5",
"refUrl": "https://www.abcxyz.com/",
"remarks": "Sample Remarks",
"role": "PAYEE",
"shareToPayee": "true",
"transactionType": "UPI_MANDATE",
"type": "MERCHANT_INCOMING_UPDATE_MANDATE",
"umn": "uniqueMandateNumber@apl",
"validityEnd": "2020/06/05",
"validityStart": "2020/06/04"}
Server sends a callback to Merchant to the url configured when an mandate update/revoke request is received.
Parameter
Description
amount
Amount of Mandate. Numeric string with two decimals.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
blockFund
Denotes whether customer's fund should be blocked or not. For Onetime mandate, value can be true or false and for recurring mandate it is always false.
gatewayMandateId
upiRequestId passed in the request.
gatewayReferenceId
Customer reference number (rrn).
gatewayResponseCode
Response code returned by gateway for the mandate.
gatewayResponseMessage
Response message returned by gateway for the mandate.
gatewayResponseStatus
Response status returned by gateway.
initiatedBy
Describes whether PAYER or PAYEE has initiated the mandate.
mandateName
Name of the mandate.
mandateTimestamp
Timestamp of when the mandate request was attempted.
mandateType
Denotes the type of mandate operation. Values can be UPDATE/REVOKE.
merchantChannelId
Unique id for the channel via which request is made.
merchantId
Unique id for merchant.
merchantRequestId
Request id used for the mandate. It will be merchantRequestId that is passed during approve mandate if mandate update request is initiated by Payee else it will be refId that is received from NPCI for Payer initiated update mandate.
orgMandateId
Refers to upiRequestId used during creation of mandate.
payeeMcc
Merchant Category Code of the payee merchant. If Payee is a customer it will be "0000" else it will be a 4 digit numeric string.
payeeVpa
Vpa of the payee.
payerName
Name of the Payer involved in mandate.
payerRevocable
Denotes whether mandate can be revoke by payer or not. If while requesting mandate Payee passes this flag is true, mandate can be revoked by Payer else it cannot be revoked by Payer. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
payerVpa
Vpa of the payer.
recurrencePattern
Recurrence Pattern for Mandate. Possible values are ONETIME, DAILY, WEEKLY, FORTNIGHTLY,MONTHLY, BIMONTHLY, QUARTERLY, HALFYEARLY, YEARLY, ASPRESENTED
recurrenceRule conditional
Recurrence Rule for Mandate. Possible values are ON, BEFORE, AFTER. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
recurrencValue conditional
Recurrence Value for Mandate. Possible values are 1-31 and depends on the recurrencePattern. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url. This is a field which is majorly for future purpose and is send by the Payee.
remarks
Any mandate summary
role
Role of the customer for this mandate. PAYER,PAYEE
shareToPayee
Denotes whether mandate should be shared with payee or not. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
transactionType
Type of Mandate Creation
type
Event type of the callback
umn
Vpa used for execution of mandate.
validityEnd
Date until which mandate can be executed.
validityStart
Date after which mandate can be executed.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Mandate Updated Successfully.
UM3
EXPIRED
Mandate request expired.
ZA
DECLINED
Mandate request Declined by Payer.
Else
FAILURE
Any other reason.
Outgoing Execute Mandate From Merchant
# A callback with following POST data will be sent to the configured url :{"amount" : "9.00",
"expiry": "2016-11-25T00:10:00+05:30",
"gatewayReferenceId" : "809323430413",
"gatewayResponseCode" : "00",
"gatewayResponseMessage" : "Mandate is successfully executed",
"gatewayTransactionId" : "ABZ0f018ee5bc8b428fb979cb4a53ea9bde",
"gstAmount": "0.05",
"mdrAmount": ".27",
"merchantChannelId": "DEMOUATAPP",
"merchantId": "DEMOUAT01",
"merchantRequestId": "TXN1234567",
"netSettlementAmount": "8.68",
"orgMandateId": "ABZ0f018ee5bc8b428fb9jgdfjwhg392",
"payeeMcc" : "0000",
"payeeVpa" : "abcd@bankbiz",
"payerName": "ABC",
"payerVpa" : "xyz@bankbiz",
"refUrl" : "https://www.abcxyz.com/",
"riskScore": "00979",
"seqNumber": "1",
"transactionTimestamp" : "2017-06-09T17:57:49+05:30",
"type" : "MERCHANT_OUTGOING_EXECUTE_MANDATE",
"udfParameters" : "{}""umn" : "customervpa@bank",
}
Server sends a callback to the Merchant to the url configured when mandate is executed.
Note:
If the merchantFlag merchantCreditedViaCollectForMandateExecute is set to true, the MERCHANT_CREDITED_VIA_COLLECT callback is sent instead.
Parameter
Description
amount
Amount of Mandate.
expiry
Expiry timestamp for the collect request.
gatewayReferenceId
Customer reference number (rrn).
gatewayResponseCode
Response code returned by gateway for the transaction.
gatewayResponseMessage
Response message returned by gateway for the transaction.
gatewayResponseStatus
Response status returned by gateway.
gatewayTransactionId
UPI request id returned by gateway for the transaction.
gstAmount
Gst applied on the MDR charged
mdrAmount
MDR applied on the total transaction amount
merchantChannelId
Unique id for the channel via which request is made.
merchantId
Unique id for merchant.
merchantRequestId
Request id used for the mandate transaction.
netSettlementAmount
Net amount which needs to be settled (netSettlementAmount = txnAmount - (mdrAmount + gstAmount))
orgMandateId
Refers to upiRequestId used during creation of mandate.
payeeMcc
Merchant Category Code of the payee merchant.
payeeVpa
Vpa of the Merchant
payerVpa
Vpa of the customer
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url.
seqNumber optional applicable only for collect mandate
Denotes the recurring cycle of mandate execution. Will be received only during mandate executions. It will only be present in case of mandate request.
riskScore optional
RiskScore shared by NPCI or Bank
transactionTimestamp
Timestamp of when the transaction was attempted.
type
Event type of the callback
udfParameters optional
Stringified json for udf parameters.
umn
Vpa used for execution of mandate.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Mandate Executed Successfully
QA
FAILURE
MANDATE IS PAUSED
QB
FAILURE
MANDATE IS ALREADY HONOURED
QC
FAILURE
MANDATE IS REVOKED
QD
FAILURE
MANDATE HAS EXPIRED
Z6
FAILURE
Number of pin tries exceeded.
ZM
FAILURE
Invalid mpin.
01
PENDING
Comes when the NPCI API call times out, use status check API to update the transaction status.
U69
EXPIRED
execute request expired
Else
FAILURE
Any other reason.
Outgoing Notification Mandate From Merchant
# A callback with following POST data will be sent to the configured url :{"amount" : "9.00",
"gatewayReferenceId" : "809323430413",
"gatewayResponseCode" : "00",
"gatewayResponseMessage" : "Notification is successful",
"gatewayResponseStatus": "SUCCESS",
"gatewayTransactionId": "AUTef1a2908395239df56663244f8c7deaa",
"merchantChannelId" : "MERCHANTAPP",
"merchantId" : "MERCHANT",
"merchantRequestId": "TXN1234567",
"nextExecution" : "2017-06-09T17:57:49+05:30",
"orgMandateId" : "ABZ0f018ee5bc8b428fb979cb4a53ea9bde",
"type": "MERCHANT_NOTIFICATION_MANDATE""udfParameters" : "{}""umn" : "customervpa@bank",
}
Server sends a callback to the Merchant to the url configured when mandate is notified prior to execution.
Parameter
Description
amount
Amount of Mandate.
gatewayReferenceId
Customer reference number (rrn)
gatewayResponseCode
Response code returned by gateway for the mandate.
gatewayResponseMessage
Response message returned by gateway for the transaction.
gatewayResponseStatus
Response status returned by gateway.
gatewayTransactionId
upiRequestId as passed on request
merchantChannelId
Unique id for the channel via which request is made.
merchantId
Unique id for merchant.
merchantRequestId
Request id used for the mandate notification.
nextExecution
Time at which the corresponding execution of mandate will take place
orgMandateId
gatewayMandateId passed in the response of webMandate.
type
Event type of the callback
udfParameters
Stringified json for udf parameters.
umn
Vpa used for execution of mandate.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Mandate successfully notified.
Else
FAILURE
Any other reason.
Mandate Status Update
# A callback with following POST data will be sent to the configured url :{"amount": "100.00",
"amountRule": "EXACT",
"blockFund": "true",
"gatewayMandateId": "APL71f7d43bdf64d72d9saddfded",
"gatewayReferenceId": "809323430413""gatewayResponseCode": "00",
"gatewayResponseMessage": "Mandate Validity End is Over""gatewayResponseStatus": "SUCCESS",
"initiatedBy" : "PAYER",
"mandateName": "merchant mandate",
"mandateTimestamp": "2020-06-01T15:40:42+05:30",
"merchantChannelId": "APL",
"merchantId": "APL",
"orgMandateId": "APLMsleiuryufhuhsoisdjfadb48003sdaa0",
"pauseEnd": "2019/09/19",
"pauseStart": "2019/09/17",
"payeeMcc": "4121",
"payeeName": "APLTEST",
"payeeVpa": "test@apl",
"payerName": "ABC",
"payerRevocable": "true",
"payerVpa": "9962463212@apl",
"recurrencePattern": "MONTHLY",
"recurrenceRule": "ON",
"recurrenceValue": "5",
"refUrl": "https://www.abcxyz.com/",
"remarks": "Mandate Validity Over",
"role": "PAYER",
"shareToPayee": "true",
"status": "COMPLETED",
"transactionType": "UPI_MANDATE",
"type": "MANDATE_STATUS_UPDATE""umn": "uniqueMandateNumber@apl",
"validityEnd": "2020/06/05",
"validityStart": "2020/06/04"}
Server sends a callback to the Merchant to the url configured when mandate status gets updated. This status update is internal and does not depends on NPCI. It will be sent in the following scenarios :
When ONETIME mandate gets executed successfully or three attempts to execute ONETIME mandate gets over, then this callback will be sent with the value of status field as COMPLETED.
When validityEnd of a mandate passes the specified date, then this callback will be sent with the value of status field as COMPLETED.
When a mandate is in PAUSE state and the pauseEnd date passes the specified date, then this callback will be sent with the value of status field as SUCCESS. So, this callback denotes that mandate was UNPAUSED after pauseEnd got over. The status SUCCESS denotes that mandate is resumed and can be excecuted.
When a future pauseStart date is given during the Pause request, then this callback will be sent with the value of status field as PAUSE when the current date matches with the specified pauseStartDate. The status PAUSE denotes that mandate is currently Paused and cannot be excecuted.
Parameter
Description
amount
Amount of Mandate. Numeric string with two decimals.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
blockFund
Denotes whether customer's fund should be blocked or not. For Onetime mandate, value can be true or false and for recurring mandate it is always false.
gatewayMandateId
UPI request id returned by gateway for the mandate request. It will be same gatewayMandateId returned during create mandate.
gatewayReferenceId
Customer reference number (rrn) for the mandate operation. It will be same gatewayReferenceId returned during create mandate.
gatewayResponseCode
Response code returned by gateway for the mandate. Refer the table below for all possible values.
gatewayResponseMessage
Response message returned by gateway for the mandate.
gatewayResponseStatus
Denotes the current status of the mandate. Refer the table below for all possible values.
initiatedBy
Describes whether PAYER or PAYEE has initiated the mandate request. Its value will be PAYER or PAYEE depending to whom this callback is being send. If it is send to PAYER, value will PAYER and same for PAYEE. It will have same value as role.
mandateName
Name of the mandate.
mandateTimestamp
Timestamp of when the mandate request was attempted.
merchantChannelId
Unique id for the channel via which request is made.
merchantId
Unique id for merchant.
orgMandateId
gatewayMandateId passed in the response of webMandate or create mandate.
pauseEnd conditional
Date until which mandate is paused. It will only be present if status is "SUCCESS" or "PAUSE"
pauseStart conditional
Date from which mandate is paused. It will only be present if status is "SUCCESS" or "PAUSE"
payeeMcc
Merchant Category Code of the payee merchant. If Payee is a customer it will be "0000" else it will be a 4 digit numeric string.
payeeName optioanl
Name of the Payee involved in mandate. It will be present if role is PAYER
payeeVpa
Vpa of the payee.
payerName optional
Name of the Payer involved in mandate. It will be present if role is PAYEE
payerRevocable
Denotes whether mandate can be revoke by payer or not. If while requesting mandate Payee passes this flag is true, mandate can be revoked by Payer else it cannot be revoked by Payer. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
payerVpa
Vpa of the payer.
recurrencePattern
Recurrence Pattern for Mandate. Possible values are ONETIME, DAILY, WEEKLY, FORTNIGHTLY,MONTHLY, BIMONTHLY, QUARTERLY, HALFYEARLY, YEARLY, ASPRESENTED
recurrenceRule conditional
Recurrence Rule for Mandate. Possible values are ON, BEFORE, AFTER. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
recurrencValue conditional
Recurrence Value for Mandate. Possible values are 1-31 and depends on the recurrencePattern. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url. This is a field which is majorly for future purpose and is send by the Payee.
remarks
Any mandate summary
role
Role of the customer for this mandate.
shareToPayee
Denotes whether mandate should be shared with payee or not. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
status
Updated Status of the mandate. It will be COMPLETED if mandate validity end gets over or if Onetime mandate gets executed. It will be PAUSE if mandate is paused because of future date passed during Pause Mandate API and it will be SUCCESS if mandate is Unpaused because of PauseEnd date getting passed. Various fields in this callback like gatewayMandateId, gatewayReferenceId, merchantRequest depends on the value of status.
transactionType
Type of Mandate Creation.
type
Event type of the callback.
umn
Vpa used for execution of mandate.
validityEnd
Date until which mandate can be executed.
validityStart
Date after which mandate can be executed.
gatewayResponseCode
gatewayResponseStatus
Description
JPMUP
UNPAUSE
Mandate is Unpaused.
JPMP
PAUSED
Mandate is paused.
JPMC
COMPLETED
Mandate is completed.
Else
FAILURE
Any other reason.
Mandate Payer API Callbacks
Incoming Create Mandate Request For Customer
# A callback with following POST data will be sent to the configured url :{"amount": "100.00",
"amountRule": "EXACT",
"blockFund": "true",
"expiry": "2020-07-25T00:30:00+05:30",
"gatewayMandateId": "APL71f7d43bdf64d72d9saddfded",
"gatewayReferenceId": "809323430413",
"initiatedBy": "PAYER",
"isMarkedSpam": "true",
"isVerifiedPayee": "true",
"mandateName": "merchant mandate",
"mandateTimestamp": "2020-06-01T15:40:42+05:30",
"merchantChannelId": "APL",
"merchantCustomerId": "DEMO-CUST-1234",
"merchantId": "APL",
"orgMandateId": "APLMsleiuryufhuhsoisdjfadb48003sdaa0",
"payeeMcc": "4121",
"payeeName": "APLTEST",
"payeeVpa": "test@apl",
"payerRevocable": "true",
"payerVpa": "9962463212@apl",
"recurrencePattern": "MONTHLY",
"recurrenceRule": "ON",
"recurrenceValue": "5",
"refUrl": "https://www.abcxyz.com/",
"remarks": "Sample Remarks",
"role": "PAYER",
"shareToPayee": "true",
"transactionType": "UPI_MANDATE",
"type": "CUSTOMER_INCOMING_MANDATE_CREATE_REQUEST_RECEIVED",
"umn": "uniqueMandateNumber@apl",
"validityEnd": "2020/06/05",
"validityStart": "2020/06/04"}
Server sends a callback to the PAYER to the url configured when mandate creation request is received. This callback is only received when a mandate is requested by Payee and it has to be either approved or declined by Payer.
Parameter
Description
amount
Amount of Mandate. Numeric string with two decimals.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
blockFund
Denotes whether customer's fund should be blocked or not. For Onetime mandate, value can be true or false and for recurring mandate it is always false.
expiry
Timestamp until which create mandate request is valid.
gatewayMandateId
upiRequestId passed in the request.
gatewayReferenceId
Customer reference number (rrn)
initiatedBy
Describes whether PAYER or PAYEE has initiated the mandate.
isMarkedSpam
Flag if the payeeVpa is marked as spam. true, false
isVerifiedPayee
Flag if the payeeVpa is a verified vpa. true, false
mandateName
Name of the mandate.
mandateTimestamp
Timestamp of when the mandate request was attempted.
merchantChannelId
Unique id for the channel via which request is made.
merchantCustomerId
Merchant generated unique id for customer
merchantId
Unique id for merchant.
orgMandateId
Refers to upiRequestId used during creation of mandate.
payeeMcc
Merchant Category Code of the payee merchant. If Payee is a customer it will be "0000" else it will be a 4 digit numeric string.
payeeName optional
Name of the Payee involved in mandate. It will be present if role is PAYER
payeeVpa
Vpa of the payee.
payerRevocable
Denotes whether mandate can be revoke by payer or not. If while requesting mandate Payee passes this flag is true, mandate can be revoked by Payer else it cannot be revoked by Payer. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
payerVpa
Vpa of the payer.
recurrencePattern
Recurrence Pattern for Mandate. Possible values are ONETIME, DAILY, WEEKLY, FORTNIGHTLY,MONTHLY, BIMONTHLY, QUARTERLY, HALFYEARLY, YEARLY, ASPRESENTED
recurrenceRule conditional
Recurrence Rule for Mandate. Possible values are ON, BEFORE, AFTER. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
recurrencValue conditional
Recurrence Value for Mandate. Possible values are 1-31 and depends on the recurrencePattern. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url. This is a field which is majorly for future purpose and is send by the Payee.
remarks
Any mandate summary
role
Role of the customer for this mandate. PAYER,PAYEE
shareToPayee
Denotes whether mandate should be shared with payee or not. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
transactionType
Type of Mandate Creation
type
Event type of the callback
umn optional
Vpa used for execution of mandate. It will be not present, if the merchantGeneratedUmn flag is set to true.
validityEnd
Date until which mandate can be executed.
validityStart
Date after which mandate can be executed.
Incoming Create Mandate For Customer
# A callback with following POST data will be sent to the configured url :{"amount": "100.00",
"amountRule": "EXACT",
"bankAccountUniqueId": "fb96f8b2b1ab0c070d0d894fd2e577a3d6129882c874e3700505eebfb8070""blockFund": "true",
"expiry": "2020-07-25T00:30:00+05:30",
"gatewayMandateId": "APL71f7d43bdf64d72d9saddfded",
"gatewayReferenceId": "809323430413""gatewayResponseCode": "00",
"gatewayResponseMessage": "Mandate is successfully created""gatewayResponseStatus": "SUCCESS",
"initiatedBy": "PAYER",
"mandateApprovalTimestamp" : "2017-06-09T17:58:49+05:30",
"mandateName": "merchant mandate",
"mandateTimestamp": "2020-06-01T15:40:42+05:30",
"merchantChannelId": "APL",
"merchantCustomerId": "DEMO-CUST-1234",
"merchantId": "APL",
"merchantRequestId": "6138ne3wswbsssddc4dddc",
"orgMandateId": "APLMsleiuryufhuhsoisdjfadb48003sdaa0",
"payeeMcc": "4121",
"payeeName": "APLTEST",
"payeeVpa": "test@apl",
"payerName": "ABC",
"payerRevocable": "true",
"payerVpa": "9962463212@apl",
"recurrencePattern": "MONTHLY",
"recurrenceRule": "ON",
"recurrenceValue": "5",
"refUrl": "https://www.abcxyz.com/",
"remarks": "Sample Remarks",
"role": "PAYER",
"shareToPayee": "true",
"transactionType": "UPI_MANDATE",
"type": "CUSTOMER_INCOMING_MANDATE_CREATED",
"udfParameters" : "{}""umn": "uniqueMandateNumber@apl",
"validityEnd": "2020/06/05",
"validityStart": "2020/06/04"}
Server sends a callback to the customer (PAYER/PAYEE) to the url configured when mandate is created. This callback is sent in the following two cases.
It is sent to Payer when a Payer approves the mandate request from Payee and the final response of mandate creation is received from NPCI. It is sent when Payer approves the mandate and not when Payer Declines the mandate.
It is sent to Payee when a Payer creates a mandate and final status of mandate creation is received from NPCI.
Parameter
Description
amount
Amount of Mandate. Numeric string with two decimals.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
bankAccountUniqueId
Unique id for the bank account to be linked
blockFund
Denotes whether customer's fund should be blocked or not. For Onetime mandate, value can be true or false and for recurring mandate it is always false.
expiry optional
Timestamp until which create mandate request is valid. It will be present only when payee has initiated the mandate.
gatewayMandateId
upiRequestId passed in the request.
gatewayReferenceId
Customer reference number (rrn).
gatewayResponseCode
Response code returned by gateway for the mandate.
gatewayResponseMessage
Response message returned by gateway for the mandate.
gatewayResponseStatus
Response status returned by gateway.
initiatedBy
Describes whether PAYER or PAYEE has initiated the mandate.
mandateApprovalTimestamp Optional
Time instant at which create mandate request was approved. Only present if mandate was initiatedBy Payee. Timestamp in YYYY-MM-DDTHH:MM:SS+05:30 format.
mandateName
Name of the mandate.
mandateTimestamp
Timestamp of when the mandate request was attempted. Timestamp in YYYY-MM-DDTHH:MM:SS+05:30 format.
merchantChannelId
Unique id for the channel via which request is made.
merchantCustomerId
Merchant generated unique id for customer.
merchantId
Unique id for merchant.
merchantRequestId optional
Request id used for the mandate. It will be merchantRequestId that is passed during approve mandate if mandate is initiated by Payee else it will be refId that is received from NPCI for Payer initiated mandate. It will not be present if gatewayResponseStatus is expired.
orgMandateId
Refers to upiRequestId used during creation of mandate.
payeeMcc
Merchant Category Code of the payee merchant. If Payee is a customer it will be "0000" else it will be a 4 digit numeric string.
payeeName optioanl
Name of the Payee involved in mandate. It will be present if role is PAYER
payeeVpa
Vpa of the payee.
payerName optional
Name of the Payer involved in mandate. It will be present if role is PAYEE
payerRevocable
Denotes whether mandate can be revoke by payer or not. If while requesting mandate Payee passes this flag is true, mandate can be revoked by Payer else it cannot be revoked by Payer. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
payerVpa
Vpa of the payer.
recurrencePattern
Recurrence Pattern for Mandate. Possible values are ONETIME, DAILY, WEEKLY, FORTNIGHTLY,MONTHLY, BIMONTHLY, QUARTERLY, HALFYEARLY, YEARLY, ASPRESENTED
recurrenceRule conditional
Recurrence Rule for Mandate. Possible values are ON, BEFORE, AFTER. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
recurrencValue conditional
Recurrence Value for Mandate. Possible values are 1-31 and depends on the recurrencePattern. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url. This is a field which is majorly for future purpose and is send by the Payee.
remarks
Any mandate summary
role
Role of the customer for this mandate. PAYER,PAYEE
shareToPayee
Denotes whether mandate should be shared with payee or not. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
transactionType
Type of Mandate Creation
type
Event type of the callback
udfParameters optional
Stringified json for udf parameters. It will be present only if passed during Approve mandate API request.
umn
Vpa used for execution of mandate.
validityEnd
Date until which mandate can be executed.
validityStart
Date after which mandate can be executed.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Payment Success.
UM3
EXPIRED
Mandate request expired.
Else
FAILURE
Any other reason.
Outgoing Create Mandate From Customer
# A callback with following POST data will be sent to the configured url :{"amount": "100.00",
"amountRule": "EXACT",
"bankAccountUniqueId": "fb96f8b2b1ab0c070d0d894fd2e577a3d6129882c874e3700505eebfb8070""blockFund": "true",
"expiry": "2020-07-25T00:30:00+05:30",
"gatewayMandateId": "APL71f7d43bdf64d72d9saddfded",
"gatewayReferenceId": "809323430413""gatewayResponseCode": "00",
"gatewayResponseMessage": "Mandate is successfully created""gatewayResponseStatus": "SUCCESS",
"initiatedBy": "PAYER",
"mandateApprovalTimestamp" : "2017-06-09T17:58:49+05:30",
"mandateName": "merchant mandate",
"mandateTimestamp": "2020-06-01T15:40:42+05:30",
"merchantChannelId": "APL",
"merchantCustomerId": "DEMO-CUST-1234",
"merchantId": "APL",
"merchantRequestId": "6138ne3wswbsssddc4dddc",
"orgMandateId": "APLMsleiuryufhuhsoisdjfadb48003sdaa0",
"payeeMcc": "4121",
"payeeName": "APLTEST",
"payeeVpa": "test@apl",
"payerName": "ABC",
"payerRevocable": "true",
"payerVpa": "9962463212@apl",
"recurrencePattern": "MONTHLY",
"recurrenceRule": "ON",
"recurrenceValue": "5",
"refUrl": "https://www.abcxyz.com/",
"remarks": "Sample Remarks",
"role": "PAYEE",
"shareToPayee": "true",
"transactionType": "UPI_MANDATE",
"type": "CUSTOMER_OUTGOING_MANDATE_CREATED",
"udfParameters" : "{}""umn": "uniqueMandateNumber@apl",
"validityEnd": "2020/06/05",
"validityStart": "2020/06/04"}
Server sends a callback to the customer (PAYER/PAYEE) to the url configured when the final status of mandate creation is received from NPCI. It is sent to the same entity whoever has initiated the mandate.
Parameter
Description
amount
Amount of Mandate. Numeric string with two decimals.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
bankAccountUniqueId
Unique id for the bank account to be linked
blockFund
Denotes whether customer's fund should be blocked or not. For Onetime mandate, value can be true or false and for recurring mandate it is always false.
expiry optional
Timestamp until which create mandate request is valid. It will be present only when payee has initiated the mandate.
gatewayMandateId
upiRequestId passed in the request.
gatewayReferenceId
Customer reference number (rrn).
gatewayResponseCode
Response code returned by gateway for the mandate.
gatewayResponseMessage
Response message returned by gateway for the mandate.
gatewayResponseStatus
Response status returned by gateway.
initiatedBy
Describes whether PAYER or PAYEE has initiated the mandate.
mandateApprovalTimestamp Optional
Time instant at which create mandate request was approved. Only present if mandate was initiatedBy Payee. Timestamp in YYYY-MM-DDTHH:MM:SS+05:30 format.
mandateName
Name of the mandate.
mandateTimestamp
Timestamp of when the mandate request was attempted. Timestamp in YYYY-MM-DDTHH:MM:SS+05:30 format.
merchantChannelId
Unique id for the channel via which request is made.
merchantCustomerId
Merchant generated unique id for customer.
merchantId
Unique id for merchant.
merchantRequestId
Request id used for the mandate. It is merchantRequestId that is passed during initiation of mandate.
orgMandateId
Refers to upiRequestId used during creation of mandate.
payeeMcc
Merchant Category Code of the payee merchant. If Payee is a customer it will be "0000" else it will be a 4 digit numeric string.
payeeName optioanl
Name of the Payee involved in mandate. It will be present if role is PAYER
payeeVpa
Vpa of the payee.
payerName optional
Name of the Payer involved in mandate. It will be present if role is PAYEE
payerRevocable
Denotes whether mandate can be revoke by payer or not. If while requesting mandate Payee passes this flag is true, mandate can be revoked by Payer else it cannot be revoked by Payer. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
payerVpa
Vpa of the payer.
recurrencePattern
Recurrence Pattern for Mandate. Possible values are ONETIME, DAILY, WEEKLY, FORTNIGHTLY,MONTHLY, BIMONTHLY, QUARTERLY, HALFYEARLY, YEARLY, ASPRESENTED
recurrenceRule conditional
Recurrence Rule for Mandate. Possible values are ON, BEFORE, AFTER. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
recurrencValue conditional
Recurrence Value for Mandate. Possible values are 1-31 and depends on the recurrencePattern. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url. This is a field which is majorly for future purpose and is send by the Payee.
remarks
Any mandate summary
role
Role of the customer for this mandate. PAYER,PAYEE
shareToPayee
Denotes whether mandate should be shared with payee or not. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
transactionType
Type of Mandate Creation
type
Event type of the callback
udfParameters optional
Stringified json for udf parameters. It will be present only if passed during create mandate API request.
umn optional
Vpa used for execution of mandate. It will not be present if gatewayResponseStatus is EXPIRED or if it is not received from NPCI due to validation failure at Payer PSP during approve mandate.
validityEnd
Date until which mandate can be executed.
validityStart
Date after which mandate can be executed.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Payment Success.
UM3
EXPIRED
Mandate request expired.
ZA
DECLINED
Mandate request Declined by Payer.
Else
FAILURE
Any other reason.
Incoming Update Mandate Request For Customer
# A callback with following POST data will be sent to the configured url :{"amount": "100.00",
"amountRule": "EXACT",
"bankAccountUniqueId": "fb96f8b2b1ab0c070d0d894fd2e577a3d6129882c874e3700505eebfb8070""blockFund": "true",
"expiry": "2020-07-25T00:30:00+05:30",
"gatewayMandateId": "APL71f7d43bdf64d72d9saddfded",
"gatewayReferenceId": "809323430413""initiatedBy": "PAYER",
"mandateName": "merchant mandate",
"mandateTimestamp": "2020-06-01T15:40:42+05:30",
"mandateType" : "UPDATE",
"merchantChannelId": "APL",
"merchantCustomerId": "DEMO-CUST-1234",
"merchantId": "APL",
"orgMandateId": "APLMsleiuryufhuhsoisdjfadb48003sdaa0",
"payeeMcc": "4121",
"payeeName": "APLTEST",
"payeeVpa": "test@apl",
"payerName": "ABC",
"payerRevocable": "true",
"payerVpa": "9962463212@apl",
"recurrencePattern": "MONTHLY",
"recurrenceRule": "ON",
"recurrenceValue": "5",
"refUrl": "https://www.abcxyz.com/",
"remarks": "Sample Remarks",
"role": "PAYER",
"shareToPayee": "true",
"transactionType": "UPI_MANDATE",
"type": "CUSTOMER_INCOMING_MANDATE_UPDATE_REQUEST_RECEIVED",
"umn": "uniqueMandateNumber@apl",
"validityEnd": "2020/06/05",
"validityStart": "2020/06/04"}
Server sends a callback to the PAYER to the url configured when mandate updation request is received. This callback is only received when a update mandate is requested by Payee and it has to be either approved or declined by Payer.
Parameter
Description
amount
Amount of Mandate. Numeric string with two decimals.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
bankAccountUniqueId
Unique id for the bank account to be linked
blockFund
Denotes whether customer's fund should be blocked or not. For Onetime mandate, value can be true or false and for recurring mandate it is always false.
expiry
Timestamp until which create mandate request is valid.
mandateName
Name of the mandate.
mandateTimestamp
Timestamp of when the mandate request was attempted.
gatewayMandateId
upiRequestId passed in the request.
gatewayReferenceId
Customer reference number (rrn)
initiatedBy
Describes whether PAYER or PAYEE has initiated the mandate.
mandateTimestamp
Timestamp of when the mandate request was attempted.
mandateType
Denotes the type of mandate operation. Values can be UPDATE/REVOKE.
merchantChannelId
Unique id for the channel via which request is made.
merchantCustomerId
Merchant generated unique id for customer
merchantId
Unique id for merchant.
orgMandateId
Refers to upiRequestId used during creation of mandate.
payeeMcc
Merchant Category Code of the payee merchant. If Payee is a customer it will be "0000" else it will be a 4 digit numeric string.
payeeName optioanl
Name of the Payee involved in mandate. It will be present if role is PAYER
payeeVpa
Vpa of the payee.
payerName optional
Name of the Payer involved in mandate. It will be present if role is PAYEE
payerRevocable
Denotes whether mandate can be revoke by payer or not. If while requesting mandate Payee passes this flag is true, mandate can be revoked by Payer else it cannot be revoked by Payer. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
payerVpa
Vpa of the payer.
recurrencePattern
Recurrence Pattern for Mandate. Possible values are ONETIME, DAILY, WEEKLY, FORTNIGHTLY,MONTHLY, BIMONTHLY, QUARTERLY, HALFYEARLY, YEARLY, ASPRESENTED
recurrenceRule conditional
Recurrence Rule for Mandate. Possible values are ON, BEFORE, AFTER. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
recurrencValue conditional
Recurrence Value for Mandate. Possible values are 1-31 and depends on the recurrencePattern. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url. This is a field which is majorly for future purpose and is send by the Payee.
remarks
Any mandate summary
role
Role of the customer for this mandate. PAYER,PAYEE
shareToPayee
Denotes whether mandate should be shared with payee or not. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
transactionType
Type of Mandate Creation
type
Event type of the callback
umn
Vpa used for execution of mandate.
validityEnd
Date until which mandate can be executed.
validityStart
Date after which mandate can be executed.
Incoming Update Mandate For Customer
# A callback with following POST data will be sent to the configured url :{"amount": "100.00",
"amountRule": "EXACT",
"bankAccountUniqueId": "fb96f8b2b1ab0c070d0d894fd2e577a3d6129882c874e3700505eebfb8070""blockFund": "true",
"expiry": "2020-07-25T00:30:00+05:30",
"gatewayMandateId": "APL71f7d43bdf64d72d9saddfded",
"gatewayReferenceId": "809323430413""gatewayResponseCode": "00",
"gatewayResponseMessage": "Mandate is successfully updated""gatewayResponseStatus": "SUCCESS",
"initiatedBy": "PAYER",
"mandateName": "merchant mandate",
"mandateTimestamp": "2020-06-01T15:40:42+05:30",
"mandateType" : "UPDATE",
"merchantChannelId": "APL",
"merchantCustomerId": "DEMO-CUST-1234",
"merchantId": "APL",
"merchantRequestId": "6138ne3wswbsssddc4dddc",
"orgMandateId": "APLMsleiuryufhuhsoisdjfadb48003sdaa0",
"payeeMcc": "4121",
"payeeName": "APLTEST",
"payeeVpa": "test@apl",
"payerName": "ABC",
"payerRevocable": "true",
"payerVpa": "9962463212@apl",
"recurrencePattern": "MONTHLY",
"recurrenceRule": "ON",
"recurrenceValue": "5",
"refUrl": "https://www.abcxyz.com/",
"remarks": "Sample Remarks",
"role": "PAYEE",
"shareToPayee": "true",
"transactionType": "UPI_MANDATE",
"type": "CUSTOMER_INCOMING_MANDATE_UPDATED",
"udfParameters" : "{}""umn": "uniqueMandateNumber@apl",
"validityEnd": "2020/06/05",
"validityStart": "2020/06/04"}
Server sends a callback to the customer (PAYER/PAYEE) to the url configured when mandate is created. This callback is sent in the following two cases.
It is sent to Payer when a Payer approves the mandate update request from Payee and the final response of mandate updation is received from NPCI. It is sent when Payer approves the mandate request and not when Payer Declines the mandate request.
It is sent to Payee when a Payer update a mandate and final status of mandate updation is received from NPCI.
Parameter
Description
amount
Amount of Mandate. Numeric string with two decimals.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
bankAccountUniqueId
Unique id for the bank account to be linked
blockFund
Denotes whether customer's fund should be blocked or not. For Onetime mandate, value can be true or false and for recurring mandate it is always false.
expiry optional
Timestamp until which update mandate request is valid. It will be present only when payee has initiated the update mandate.
gatewayMandateId
upiRequestId passed in the request.
gatewayReferenceId
Customer reference number (rrn).
gatewayResponseCode
Response code returned by gateway for the mandate.
gatewayResponseMessage
Response message returned by gateway for the mandate.
gatewayResponseStatus
Response status returned by gateway.
initiatedBy
Describes whether PAYER or PAYEE has initiated the mandate.
mandateName
Name of the mandate.
mandateTimestamp
Timestamp of when the mandate request was attempted.
mandateType
Denotes the type of mandate operation. Values can be UPDATE/REVOKE.
merchantChannelId
Unique id for the channel via which request is made.
merchantCustomerId
Merchant generated unique id for customer.
merchantId
Unique id for merchant.
merchantRequestId optional
Request id used for the mandate. It will be merchantRequestId that is passed during approve mandate if mandate update request is initiated by Payee else it will be refId that is received from NPCI for Payer initiated update mandate. It will not be present if gatewayResponseStatus is expired.
orgMandateId
Refers to upiRequestId used during creation of mandate.
payeeMcc
Merchant Category Code of the payee merchant. If Payee is a customer it will be "0000" else it will be a 4 digit numeric string.
payeeName optioanl
Name of the Payee involved in mandate. It will be present if role is PAYER
payeeVpa
Vpa of the payee.
payerName optional
Name of the Payer involved in mandate. It will be present if role is PAYEE
payerRevocable
Denotes whether mandate can be revoke by payer or not. If while requesting mandate Payee passes this flag is true, mandate can be revoked by Payer else it cannot be revoked by Payer. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
payerVpa
Vpa of the payer.
recurrencePattern
Recurrence Pattern for Mandate. Possible values are ONETIME, DAILY, WEEKLY, FORTNIGHTLY,MONTHLY, BIMONTHLY, QUARTERLY, HALFYEARLY, YEARLY, ASPRESENTED
recurrenceRule conditional
Recurrence Rule for Mandate. Possible values are ON, BEFORE, AFTER. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
recurrencValue conditional
Recurrence Value for Mandate. Possible values are 1-31 and depends on the recurrencePattern. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url. This is a field which is majorly for future purpose and is send by the Payee.
remarks
Any mandate summary
role
Role of the customer for this mandate. PAYER,PAYEE
shareToPayee
Denotes whether mandate should be shared with payee or not. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
transactionType
Type of Mandate Creation
type
Event type of the callback
udfParameters optional
Stringified json for udf parameters. It will be present only if passed during Approve mandate for update request.
umn
Vpa used for execution of mandate.
validityEnd
Date until which mandate can be executed.
validityStart
Date after which mandate can be executed.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Payment Success.
UM3
EXPIRED
Mandate request expired.
Else
FAILURE
Any other reason.
Outgoing Update Mandate From Customer
# A callback with following POST data will be sent to the configured url :{"amount": "100.00",
"amountRule": "EXACT",
"bankAccountUniqueId": "fb96f8b2b1ab0c070d0d894fd2e577a3d6129882c874e3700505eebfb8070""blockFund": "true",
"expiry": "2020-07-25T00:30:00+05:30",
"gatewayMandateId": "APL71f7d43bdf64d72d9saddfded",
"gatewayReferenceId": "809323430413""gatewayResponseCode": "00",
"gatewayResponseMessage": "Mandate is successfully updated""gatewayResponseStatus": "SUCCESS",
"initiatedBy": "PAYER",
"mandateName": "merchant mandate",
"mandateTimestamp": "2020-06-01T15:40:42+05:30",
"mandateType" : "UPDATE",
"merchantChannelId": "APL",
"merchantCustomerId": "DEMO-CUST-1234",
"merchantId": "APL",
"merchantRequestId": "6138ne3wswbsssddc4dddc",
"orgMandateId": "APLMsleiuryufhuhsoisdjfadb48003sdaa0",
"payeeMcc": "4121",
"payeeName": "APLTEST",
"payeeVpa": "test@apl",
"payerName": "ABC",
"payerRevocable": "true",
"payerVpa": "9962463212@apl",
"recurrencePattern": "MONTHLY",
"recurrenceRule": "ON",
"recurrenceValue": "5",
"refUrl": "https://www.abcxyz.com/",
"remarks": "Sample Remarks",
"role": "PAYER",
"shareToPayee": "true",
"transactionType": "UPI_MANDATE",
"type": "CUSTOMER_OUTGOING_MANDATE_UPDATED",
"udfParameters" : "{}""umn": "uniqueMandateNumber@apl",
"validityEnd": "2020/06/05",
"validityStart": "2020/06/04"}
Server sends a callback to the customer (PAYER/PAYEE) to the url configured when the final status of mandate updation is received from NPCI. It is sent to the same entity whoever has initiated the mandate request.
Parameter
Description
amount
Amount of Mandate. Numeric string with two decimals.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
bankAccountUniqueId
Unique id for the bank account to be linked
blockFund
Denotes whether customer's fund should be blocked or not. For Onetime mandate, value can be true or false and for recurring mandate it is always false.
expiry optional
Timestamp until which create mandate request is valid. It will be present only when payee has initiated the mandate.
gatewayMandateId
upiRequestId passed in the request.
gatewayReferenceId
Customer reference number (rrn).
gatewayResponseCode
Response code returned by gateway for the mandate.
gatewayResponseMessage
Response message returned by gateway for the mandate.
gatewayResponseStatus
Response status returned by gateway.
initiatedBy
Describes whether PAYER or PAYEE has initiated the mandate.
mandateName
Name of the mandate.
mandateTimestamp
Timestamp of when the mandate request was attempted.
mandateType
Denotes the type of mandate operation. Values can be UPDATE/REVOKE.
merchantChannelId
Unique id for the channel via which request is made.
merchantCustomerId
Merchant generated unique id for customer.
merchantId
Unique id for merchant.
merchantRequestId
Request id used for the mandate. It is merchantRequestId that is passed during initiation of mandate request.
orgMandateId
Refers to upiRequestId used during creation of mandate.
payeeMcc
Merchant Category Code of the payee merchant. If Payee is a customer it will be "0000" else it will be a 4 digit numeric string.
payeeName optioanl
Name of the Payee involved in mandate. It will be present if role is PAYER
payeeVpa
Vpa of the payee.
payerName optional
Name of the Payer involved in mandate. It will be present if role is PAYEE
payerRevocable
Denotes whether mandate can be revoke by payer or not. If while requesting mandate Payee passes this flag is true, mandate can be revoked by Payer else it cannot be revoked by Payer. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
payerVpa
Vpa of the payer.
recurrencePattern
Recurrence Pattern for Mandate. Possible values are ONETIME, DAILY, WEEKLY, FORTNIGHTLY,MONTHLY, BIMONTHLY, QUARTERLY, HALFYEARLY, YEARLY, ASPRESENTED
recurrenceRule conditional
Recurrence Rule for Mandate. Possible values are ON, BEFORE, AFTER. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
recurrencValue conditional
Recurrence Value for Mandate. Possible values are 1-31 and depends on the recurrencePattern. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url. This is a field which is majorly for future purpose and is send by the Payee.
remarks
Any mandate summary
role
Role of the customer for this mandate. PAYER,PAYEE
shareToPayee
Denotes whether mandate should be shared with payee or not. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
transactionType
Type of Mandate Creation
type
Event type of the callback
udfParameters optional
Stringified json for udf parameters. It will be present only if passed during update mandate API request.
umn
Vpa used for execution of mandate.
validityEnd
Date until which mandate can be executed.
validityStart
Date after which mandate can be executed.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Payment Success.
UM3
EXPIRED
Mandate request expired.
QT
DECLINED
Mandate request Declined by Payer.
Else
FAILURE
Any other reason.
Outgoing Pause Mandate From Customer
# A callback with following POST data will be sent to the configured url :{"amount": "100.00",
"amountRule": "EXACT",
"bankAccountUniqueId": "fb96f8b2b1ab0c070d0d894fd2e577a3d6129882c874e3700505eebfb8070""blockFund": "true",
"gatewayMandateId": "APL71f7d43bdf64d72d9saddfded",
"gatewayReferenceId": "809323430413""gatewayResponseCode": "00",
"gatewayResponseMessage": "Mandate is successfully paused""gatewayResponseStatus": "SUCCESS",
"initiatedBy" : "PAYER",
"mandateName": "merchant mandate",
"mandateTimestamp": "2020-06-01T15:40:42+05:30",
"mandateType" : "PAUSE",
"merchantChannelId": "APL",
"merchantCustomerId": "DEMO-CUST-1234",
"merchantId": "APL",
"merchantRequestId": "6138ne3wswbsssddc4dddc",
"orgMandateId": "APLMsleiuryufhuhsoisdjfadb48003sdaa0",
"pauseEnd": "2019/09/19",
"pauseStart": "2019/09/17",
"payeeMcc": "4121",
"payeeName": "APLTEST",
"payeeVpa": "test@apl",
"payerName": "ABC",
"payerRevocable": "true",
"payerVpa": "9962463212@apl",
"recurrencePattern": "MONTHLY",
"recurrenceRule": "ON",
"recurrenceValue": "5",
"refUrl": "https://www.abcxyz.com/",
"remarks": "Sample Remarks",
"role": "PAYER",
"shareToPayee": "true",
"transactionType": "UPI_MANDATE",
"type": "CUSTOMER_OUTGOING_MANDATE_PAUSED",
"udfParameters" : "{}""umn": "uniqueMandateNumber@apl",
"validityEnd": "2020/06/05",
"validityStart": "2020/06/04"}
Server sends a callback to the Payer to the url configured when the final status of mandate PAUSE/UNPAUSE request is received from NPCI. It is always sent to the Payer as mandate Pause request can be initiated by Payer only.
Parameter
Description
amount
Amount of Mandate. Numeric string with two decimals.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
bankAccountUniqueId
Unique id for the bank account to be linked
blockFund
Denotes whether customer's fund should be blocked or not. For Onetime mandate, value can be true or false and for recurring mandate it is always false.
gatewayMandateId
upiRequestId passed in the request.
gatewayReferenceId
Customer reference number (rrn).
gatewayResponseCode
Response code returned by gateway for the mandate.
gatewayResponseMessage
Response message returned by gateway for the mandate.
gatewayResponseStatus
Response status returned by gateway.
initiatedBy
Describes whether PAYER or PAYEE has initiated the mandate.
mandateName
Name of the mandate.
mandateTimestamp
Timestamp of when the mandate request was attempted.
mandateType
Denotes the type of mandate operation. Values can be PAUSE/UNPAUSE.
merchantChannelId
Unique id for the channel via which request is made.
merchantCustomerId
Merchant generated unique id for customer.
merchantId
Unique id for merchant.
merchantRequestId
Request id used for the mandate operation. It is merchantRequestId that is passed during initiation of mandate request.
orgMandateId
Refers to upiRequestId used during creation of mandate.
pauseEnd
Date until which mandate is paused
pauseStart
Date from which mandate is paused
payeeMcc
Merchant Category Code of the payee merchant. If Payee is a customer it will be "0000" else it will be a 4 digit numeric string.
payeeName optioanl
Name of the Payee involved in mandate. It will be present if role is PAYER
payeeVpa
Vpa of the payee.
payerName optional
Name of the Payer involved in mandate. It will be present if role is PAYEE
payerRevocable
Denotes whether mandate can be revoke by payer or not. If while requesting mandate Payee passes this flag is true, mandate can be revoked by Payer else it cannot be revoked by Payer. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
payerVpa
Vpa of the payer.
recurrencePattern
Recurrence Pattern for Mandate. Possible values are ONETIME, DAILY, WEEKLY, FORTNIGHTLY,MONTHLY, BIMONTHLY, QUARTERLY, HALFYEARLY, YEARLY, ASPRESENTED
recurrenceRule conditional
Recurrence Rule for Mandate. Possible values are ON, BEFORE, AFTER. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
recurrencValue conditional
Recurrence Value for Mandate. Possible values are 1-31 and depends on the recurrencePattern. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url. This is a field which is majorly for future purpose and is send by the Payee.
remarks
Any mandate summary
role
Role of the customer for this mandate. PAYER,PAYEE
shareToPayee
Denotes whether mandate should be shared with payee or not. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
transactionType
Type of Mandate Creation
type
Event type of the callback
udfParameters optional
Stringified json for udf parameters. It will be present only if passed during pause mandate API request.
umn
Vpa used for execution of mandate.
validityEnd
Date until which mandate can be executed.
validityStart
Date after which mandate can be executed.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Payment Success.
Else
FAILURE
Any other reason.
Incoming Pre Payement Notification Mandate For Customer
# A callback with following POST data will be sent to the configured url :{"amount" : "9.00",
"gatewayMandateId" : "APL0f018ee5bc8b428fb979cb4a53ea9bde",
"gatewayReferenceId" : "809323430413",
"gatewayResponseCode": "00",
"gatewayResponseMeassage": "Mandate Notification Received Successfully",
"gatewayResponseStatus": "SUCCESS",
"merchantChannelId" : "MERCHANTAPP",
"merchantCustomerId" : "DEMO_CUST-1234",
"merchantId" : "MERCHANT",
"merchantRequestId" : "TXN1234567",
"nextExecution" : "2017-06-09T17:57:49+05:30",
"orgMandateId" : "APL0f018ee5b832468779cb4a53ea9bde".
"seqNumber" : "1",
"type": "CUSTOMER_INCOMING_PRE_PAYMENT_NOTIFICATION_MANDATE_RECEIVED",
"umn" : "customervpa@bank",
}
Server sends a callback to the Payer to the url configured when pre-payment notification is received prior to mandate execution for the particular recurring cycle denoted by seqNumber.
Parameter
Description
amount
Amount of Mandate.
gatewayMandateId
upiRequestId passed in the request.
gatewayReferenceId
Customer reference number (rrn)
gatewayResponseCode
Response code returned by gateway for the mandate.
gatewayResponseMessage
Response message returned by gateway for the mandate.
gatewayResponseStatus
Response status returned by gateway.
merchantChannelId
Unique id for the channel via which request is made.
merchantCustomerId
Merchant generated unique id for customer
merchantId
Unique id for merchant.
merchantRequestId
Request id used for the notification.
nextExecution
Time at which the corresponding execution of mandate for the given seqNumber will take place.
orgMandateId
Refers to upiRequestId used during creation of mandate.
seqNumber
Denotes the recurring cycle of mandate execution. It generally increments by +1 for every recurring cycle. For example - If it is DAILY Mandate everyday it will be +1 from the previous day. For ONETIME mandate, its value is always 1 as ONETIME mandate can be executed only once.
type
Event type of the callback
umn
Vpa used for execution of mandate.
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Mandate Notification Received Successfully.
Else
FAILURE
Any other reason.
Mandate Status Update
# A callback with following POST data will be sent to the configured url :{"amount": "100.00",
"amountRule": "EXACT",
"bankAccountUniqueId": "fb96f8b2b1ab0c070d0d894fd2e577a3d6129882c874e3700505eebfb8070""blockFund": "true",
"gatewayMandateId": "APL71f7d43bdf64d72d9saddfded",
"gatewayReferenceId": "809323430413""gatewayResponseCode": "00",
"gatewayResponseMessage": "Mandate Validity End is Over""gatewayResponseStatus": "SUCCESS",
"initiatedBy" : "PAYER",
"mandateName": "merchant mandate",
"mandateTimestamp": "2020-06-01T15:40:42+05:30",
"merchantChannelId": "APL",
"merchantCustomerId": "DEMO-CUST-1234",
"merchantId": "APL",
"orgMandateId": "APLMsleiuryufhuhsoisdjfadb48003sdaa0",
"pauseEnd": "2019/09/19",
"pauseStart": "2019/09/17",
"payeeMcc": "4121",
"payeeName": "APLTEST",
"payeeVpa": "test@apl",
"payerName": "ABC",
"payerRevocable": "true",
"payerVpa": "9962463212@apl",
"recurrencePattern": "MONTHLY",
"recurrenceRule": "ON",
"recurrenceValue": "5",
"refUrl": "https://www.abcxyz.com/",
"remarks": "Mandate Validity Over",
"role": "PAYER",
"shareToPayee": "true",
"transactionType": "UPI_MANDATE",
"type": "MANDATE_STATUS_UPDATE""umn": "uniqueMandateNumber@apl",
"validityEnd": "2020/06/05",
"validityStart": "2020/06/04"}
Server sends a callback to the Merchant to the url configured when mandate status gets updated. This status update is internal and does not depends on NPCI. It will be sent in the following scenarios :
When ONETIME mandate gets executed successfully or three attempts to execute ONETIME mandate gets over, then this callback will be sent with the value of status field as COMPLETED.
When validityEnd of a mandate passes the specified date, then this callback will be sent with the value of status field as COMPLETED.
When a mandate is in PAUSE state and the pauseEnd date passes the specified date, then this callback will be sent with the value of status field as UNPAUSED. So, this callback denotes that mandate was UNPAUSED after pauseEnd got over. The status UNPAUSED denotes that mandate is resumed and can be excecuted.
When a future pauseStart date is given during the Pause request, then this callback will be sent with the value of status field as PAUSE when the current date matches with the specified pauseStartDate. The status PAUSE denotes that mandate is currently Paused and cannot be excecuted.
Parameter
Description
amount
Amount of Mandate. Numeric string with two decimals.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
bankAccountUniqueId
Unique id for the bank account to be linked
blockFund
Denotes whether customer's fund should be blocked or not. For Onetime mandate, value can be true or false and for recurring mandate it is always false.
gatewayMandateId
UPI request id returned by gateway for the mandate request. It will be same gatewayMandateId returned during create mandate.
gatewayReferenceId
Customer reference number (rrn) for the mandate operation. It will be same gatewayReferenceId returned during create mandate.
gatewayResponseCode
Response code returned by gateway for the mandate. Refer the table below for all possible values.
gatewayResponseMessage
Response message returned by gateway for the mandate.
gatewayResponseStatus
Denotes the current status of the mandate. Refer the table below for all possible values.
initiatedBy
Describes whether PAYER or PAYEE has initiated the mandate request. Its value will be PAYER or PAYEE depending to whom this callback is being send. If it is send to PAYER, value will PAYER and same for PAYEE. It will have same value as role.
mandateName
Name of the mandate.
mandateTimestamp
Timestamp of when the mandate request was attempted.
merchantChannelId
Unique id for the channel via which request is made.
merchantCustomerId optional
Merchant generated unique id for customer. It will not be present if 'PAYEE' is merchant.
merchantId
Unique id for merchant.
orgMandateId
Refers to upiRequestId used during creation of mandate.
pauseEnd conditional
Date until which mandate is paused. It will only be present if status is "SUCCESS" or "PAUSE"
pauseStart conditional
Date from which mandate is paused. It will only be present if status is "SUCCESS" or "PAUSE"
payeeMcc
Merchant Category Code of the payee merchant. If Payee is a customer it will be "0000" else it will be a 4 digit numeric string.
payeeName optioanl
Name of the Payee involved in mandate. It will be present if role is PAYER
payeeVpa
Vpa of the payee.
payerName optional
Name of the Payer involved in mandate. It will be present if role is PAYEE
payerRevocable
Denotes whether mandate can be revoke by payer or not. If while requesting mandate Payee passes this flag is true, mandate can be revoked by Payer else it cannot be revoked by Payer. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
payerVpa
Vpa of the payer.
recurrencePattern
Recurrence Pattern for Mandate. Possible values are ONETIME, DAILY, WEEKLY, FORTNIGHTLY,MONTHLY, BIMONTHLY, QUARTERLY, HALFYEARLY, YEARLY, ASPRESENTED
recurrenceRule conditional
Recurrence Rule for Mandate. Possible values are ON, BEFORE, AFTER. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
recurrencValue conditional
Recurrence Value for Mandate. Possible values are 1-31 and depends on the recurrencePattern. It is not present if recurrencePattern is ONETIME, DAILY or ASPRESENTED.
refUrl
Invoice as sent by merchant or reference to the mandate in the form of url. This is a field which is majorly for future purpose and is send by the Payee.
remarks
Any mandate summary
role
Role of the customer for this mandate.
shareToPayee
Denotes whether mandate should be shared with payee or not. For Onetime mandate, value can be true or false and for recurring mandate it is always true. Default value is true.
This Api will be used to raise a complaint on any transactions.
Note
Complaints shall be allowed only after '5' mins from the time of transaction and after transaction status check is done by the user.
For the below request type = "COMPLAINT" will correspond to one of the categories of "reqComplaint" api. We currently only use "COMPLAINT" because we don't serve other use cases. We have kept it as a field in request body for future api enhancements.
Provide request parameters "adjCode" and "adjFlag" based on below scenarios.
Transaction Type
Transaction Status
Adj Flag
Adj Code
Description
U2 (P2M)
Success
PBRB
U021
Credit not processed for cancelled or returned goods & services
U2 (P2M)
Success
PBRB
U008
Goods/services are not provided
U2 (P2M)
Success
PBRB
U022
Account debited but transaction confirmation not received by merchantAccount debited but transaction confirmation not received by merchant
U2 (P2M)
Success
PBRB
U023
Paid by alternate means/Duplicate payment
U2 (P2M)
Deemed
PBRB
U008
Goods/services are not provided
U2 (P2M)
Deemed
PBRB
U021
Credit not processed for cancelled or returned goods & services
U2 (P2M)
Deemed
PBRB
U022
Account debited but transaction confirmation not received by merchant
U2 (P2M)
Deemed
PBRB
U023
Paid by alternate means/Duplicate payment
U2 (P2M)
Failure
PBRB
U009
Customer account not credited back for failed merchant transaction
U3/UC (P2P)
Deemed
PBRB
U010
Beneficiary account is not credited for a pending / timeout transaction
U3/UC (P2P)
Failure
PBRB
U005
Customer account not credited back for failed P2P transaction
Request parameters
Parameter
Description
Constraints
merchantRequestId
Merchant generated id for the transaction
35 characters alphanumeric.
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
upiRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with merchant prefix provided.
originalUpiRequestId
Unique id sent to UPI switch for the request of the transaction on which complaint complaint needs to raise
35 character alphanumeric. Should always start with merchant prefix provided.
remarks optional
Remarks or reason for complaint
String.
adjAmount optional
Amount of the transaction sent to NPCI.
Amount in two decimals. Decimals are mandatory.
adjFlag
Reason flag for complaint sent to NPCI
String.
adjCode
Reason Code for complaint sent to NPCI
String.
initiationMode optional
Defines the initiation mode of the transaction
Refer Request Structure section
type
Define the type of request
String COMPLAINT
purpose optional
Defines the purpose code of the transaction
Refer Request Structure section
refUrl optional
Invoice as sent by merchant in the form of url
String
refCategory optional
Details for refUrl, whether it is 01(advertisement), 02(invoice)
String
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
payerVpa
VPA of the customer to be used for payment
something@handle
payeeVpa
Vpa of the payee to whom money is being sent
something@handle
customerMobileNumber
Customer mobile number as per device binding
12 digits mobile number string
merchantRequestId
Merchant generated id for the transaction
35 characters alphanumeric.
transactionAmount
The total amount for which original transaction was performed
This api will be used for checking the status of complaints raised on any transactions.
Note
Transaction and Complaints Status check shall be allowed only after '3' mins from the time of respective txn.
Per day only 3 check status can be done to the NPCI UDIR system, after that PSP will pick the status from the database and that will be shared.
For the below request type = "TXNDISPUTE" will correspond to one of the subTypes of "reqComplaint" api where we specify whether we want the status for txn, dispute or both. Currently we don't serve other use cases. We have kept it as a field in request body for future api enhancements.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
originalUpiRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with merchant prefix provided.
originalTransactionUpiRequestId
Original Transaction Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with merchant prefix provided.
type
Type of Complaint Status
String TXNDISPUTE
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
gatewayResponseStatus
Response status returned by gateway
OPEN,CLOSED, PENDING, FAILURE
merchantId
Unique id for the merchant as passed in request headers
String
gatewayComplaintId
Complaint id returned by gateway
String
reqAdjAmount
Amount of the transaction sent to NPCI when complaint was raised
Amount in two decimals.
gatewayResponseMessage
Response message for code returned by gateway
String
payerVpa
VPA of the customer to be used for payment
something@handle
merchantRequestId
Merchant generated id for the transaction
As passed in the request
gatewayResponseCode
Response code returned by gateway
String
gatewayReferenceId
Reference id returned by the gateway
String
reqAdjCode
Reason Code for complaint sent to NPCI when complaint was raised
String.
crn optional
Complaint reference number returned by NPCI
14 to 16 characters alphanumeric.
customerMobileNumber
Customer mobile number as per device binding
12 digits mobile number string
payeeVpa
Vpa for customer who received the payment
String
reqAdjFlag
Reason flag for complaint sent to NPCI when complaint was raised
String.
transactionAmount
The total amount for which original transaction was performed.
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
This API is used to migrate amazon’s p2p customers to submerchants.
Note: \
You can add --header 'x-api-version: 1' to get idempotent response. Instead of sending DUPLICATE_REQUEST error we share the existing subMerchant details with extra parameter action. It is backward compatible.\
action values :\
FETCHED -> Fetched the existing already created subMerchant\
ADDED -> Created a new subMerchant
Request parameters
Parameter
Description
Constraints
subMerchantId
Merchant generated sub-merchant id value
Alphanumeric string. Maximum length is 256.
subMerchantChannelId
Sub-merchant channel id
Alphanumeric string. Maximum length is 256.
vpa
Vpa which is linked to QR
Special characters allowed(.-@).Maximum length is 25.
accountNumber optional
Account number for the sub-merchant
Numeric string. Maximum length is 30.
ifsc optional
Ifsc code of the sub-merchant bank account
Alphanumeric string. Maximum length is 11.
mcc
Mcc code of the sub-merchant
Numeric String (4).
callbackUrls optional
Callback Urls are configured for each event
Stringified Array of JSON objects.
merchantName
Name of sub-merchant
Alphanumeric string with. Maximum length is 100.
marketingName
Market name of the sub-merchant
Alphanumeric string. Maximum length is 50.
city
City of sub-merchant
Alphanumeric string. Maximum length is 50.
address
Address of sub-merchant
Alphanumeric string. Maximum length is 200.
state
State of sub-merchant
Alphanumeric string . Maximum length is 50.
pincode
Pincode of sub-merchant
Numeric String (6).
owner
Owner of sub-merchant firm
Alphanumeric string. Maximum length is 50.
partner1
Partner name of sub-merchant firm
Alphanumeric string. Maximum length is 50.
partner2
Partner name of sub-merchant firm
Alphanumeric string. Maximum length is 50.
mccDescription
Description of mcc
Alphanumeric string. Maximum length is 256.
gstin optional
GSTIN
Alphanumeric string. Maximum length is 20.
panNumber optional
PAN Number of sub-merchant
Alphanumeric string. Maximum length is 10.
mid
Merchant identifier for sub-merchant
Alphanumeric string. Maximum length is 20.
tid
Terminal identifier for sub-merchant
Alphanumeric string. Maximum length is 20.
sid
Store id for sub-merchant
Alphanumeric string. Maximum length is 20.
merchantType
Merchant type for sub-merchant
SMALL,LARGE.
merchantGenre
Genre of sub-merchant
ONLINE, OFFLINE.
onBoardingType
Onboarding type of sub-merchant
BANK, AGGREGATOR
brand
Brand name of sub-merchant
Alphanumeric string. Maximum length is 99.
legal
Legal name for sub-merchant
Alphanumeric string. Maximum length is 99.
franchise
franchise name for sub-merchant
Alphanumeric string. Maximum length is 99.
type
Ownership type of sub-merchant
PROPRIETARY,PARTNERSHIP,PRIVATE,PUBLIC,OTHERS.
enabled optional
Denotes if the sub-merchant is enabled or not
true, false
isB2BMerchant optional
Denotes if sub-merchant can accept payment as a B2B merchant.
true, false.
replacementVpa optional
Vpa that becomes primary vpa after the primary vpa is migrated.
Special characters allowed(.-@).Maximum length is 25.
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for parent merchant
As passed in request.
merchantChannelId
Unique id for the channel of the parent merchant
As passed in request.
subMerchantId
Merchant generated sub-merchant id value
Merchant generated sub-merchant id value
subMerchantChannelId
Sub-merchant channel id
As passed in request.
vpa
Vpa for sub-merchant
As passed in request.
maskedAccountNumber
Masked account number for the sub-merchant
XXXX123456
ifsc
Ifsc code of the sub-merchant bank account
As passed in request.
mcc
Mcc code of the sub-merchant
As passed in request.
enabled
Tells whether the sub-merchant is enabled or not
As passed in request, true if not passed.
callbackUrls
Callback Urls configured for each event
As passed in request.
action conditional
Tells whether the sub-merchant added newly or fetched if already exists when x-api-version > 0
This api creates a new sub-merchant with the given account number and vpa.
Request parameters
Parameter
Description
Constraints
subMerchantId
Merchant generated sub-merchant id value
Alphanumeric string. Maximum length is 256.
subMerchantChannelId
Sub-merchant channel id
Alphanumeric string. Maximum length is 256.
vpa
VPA for the sub-merchant
Special characters allowed(.-@).Maximum length is 25.
accountNumber optional
Current account number for the sub-merchant
Numeric string. Maximum length is 30. Account number and ifsc both fields should be passed. If not passed, parent aggregator's value will be replicated.
ifsc optional
Ifsc code of the sub-merchant current bank account
Alphanumeric string. Maximum length is 11.If not passed, parent aggregator's value will be replicated.
mcc
Mcc code of the sub-merchant
Numeric String (4).
callbackUrls optional
Callback Urls needs to be configured for each event
Stringified Array of JSON objects. Each Json object has type and url params. Refer Server Callbacks section for allowed value of type. If not passed, parent aggregator's values will be replicated.
merchantName
Name of sub-merchant
Alphanumeric string. Maximum length is 100.
marketingName
Market name of the sub-merchant
Alphanumeric string. Maximum length is 50.
city
City of sub-merchant
Alphanumeric string. Maximum length is 50.
address
Address of sub-merchant
Alphanumeric string. Maximum length is 200.
state
State of sub-merchant
Alphanumeric string. Maximum length is 50.
pinCode
Pincode of sub-merchant
Numeric String (6).
mobileNumber
Mobile number of sub-merchant
Numeric String (12).
ownerName
Owner of sub-merchant firm
Alphanumeric string. Maximum length is 50.
partner1
Partner name of sub-merchant firm
Alphanumeric string. Maximum length is 50.
partner2
Partner name of sub-merchant firm
Alphanumeric string. Maximum length is 50.
mccDescription
Description of mcc
Alphanumeric string. Maximum length is 255.
gstin optional
GSTIN
Alphanumeric string.Maximum length is 20.
panNumber optional
PAN Number of sub-merchant
Alphanumeric string (10).
mid
Merchant identifier for sub-merchant
Alphanumeric string. Maximum length is 20.
sid
Store id for sub-merchant
Alphanumeric string. Maximum length is 20.
tid
Terminal identifier for sub-merchant
Alphanumeric string. Maximum length is 20.
merchantType
Merchant type for sub-merchant
SMALL,LARGE.
merchantGenre
Genre of the sub-merchant
ONLINE, OFFLINE.
onBoardingType
Onboarding type of sub-merchant
BANK, AGGREGATOR
brand
Brand name of sub-merchant
Alphanumeric string. Maximum length is 99.
legal
Legal name for sub-merchant
Alphanumeric string. Maximum length is 99.
franchise
Franchise name of merchant
Alphanumeric string. Maximum length is 99.
type
Ownership type of sub-merchant
PROPRIETARY,PARTNERSHIP,PRIVATE,PUBLIC,OTHERS.
enabled optional
Denotes if the sub-merchant is enabled or not
true, false.
configurations optional
Array of JSON objects to provide custom configurations for every submerchant. Each Json object has name and value params
Only valid flags are allowed. The value associated with the CONFIG_NAME can be text, list or any other value as predefined in the code.
udfParameters optional
Udf parameters
As passed in the request body
iat optional
timestamp to be used in JWS
As passed in the request body
Response parameters
Parameter
Description
Values
status
Status of the API.
SUCCESS, FAILURE.
responseCode
SUCCESS if call succeeded. Otherwise shows the error code.
Refer error code section.
responseMessage
SUCCESS if call succeeded. Otherwise shows verbose error.
Refer error code section.
merchantId
Unique id for merchant.
As passed in request.
merchantChannelId
Unique id for the channel via which request is made.
As passed in request.
subMerchantId
Merchant generated sub-merchant id value
As passed in request.
subMerchantChannelId
Sub-merchant channel id
As passed in request.
vpa
VPA for the sub-merchant
As passed in request.
maskedAccountNumber
Masked account number for the sub-merchant
XXXX123456.
ifsc
Ifsc code of the sub-merchant current bank account
As passed in request.
mcc
Mcc code of the sub-merchant
As passed in request.
enabled
Tells whether the sub-merchant is enabled or not
By default it is false. Initiate Update sub-merchant to enable it.
callbackUrls
Callback Urls needs to be configured for each event
As passed in request.
udfParameters
Stringified json for udf parameters.
String
Response Error
For parameter specific errors, responseCode will be BAD_REQUEST and response message will be Invalid parameter_name.
Error Code
Meaning
INVALID_VPA
The vpa passed in request already exists.
BAD_REQUEST
The request parameters are not proper.
INTERNAL_SERVER_ERROR
Internal Server Error.
DUPLICATE_REQUEST
Duplicate request.
MERCHANT_ALREADY_EXISTS
Merchant already exists.
Configuration Table
Config_Name
Description
Values
BLOCK_DIRECT_PAY
true for Online Submerchants and false for Offline Submerchants
true or false
PAYER_ACC_TYPES_ALLOWED
list of payment methods
possible values for key accType : SAVINGS, CURRENT, DEFAULT, NRE, NRO ,CREDIT ,UOD ,SOD ,CREDITLINE01 ,CREDITLINE02 ,CREDITLINE03, CREDITLINE04, CREDITLINE05, CREDITLINE06 ,CREDITLINE07 ,CREDITLINE08, CREDITLINE09CREDITLINE10, CL01 ,CL011 ,CL012, CL013, CL014, CL015 ,CL02 ,CL03, CL04 ,CL05 ,CL06 ,CL07 ,CL08, CL09, CL10 possible values for key limitType : SMALL
This api updates a sub merchant with the given subMerchantId and subMerchantChannelId.
Atleast one optional field has to be passed along with 2 mandatory fields.
Request parameters
Parameter
Description
Constraints
subMerchantId
Merchant generated sub-merchant id value
Alphanumeric string. Maximum length is 256.
subMerchantChannelId
Sub-merchant channel id
Alphanumeric string. Maximum length is 256.
mcc optional
Mcc code of the sub-merchant
Numeric String.(4)
enabled optional
Tells whether the sub-merchant is enabled or not
True/False
callbackUrls optional
Callback Urls needs to be configured for each event
Stringified Array of JSON objects. Each Json object has type and url params. Refer Server Callbacks section for allowed value of type.
merchantName optional
Name of sub-merchant
Alphanumeric string. Maximum length is 100.
marketingName optional
Market name of the sub-merchant
Alphanumeric string. Maximum length is 50.
city optional
City of sub-merchant
Alphanumeric string. Maximum length is 50.
address optional
Address of sub-merchant
Alphanumeric string. Maximum length is 200.
state optional
State of sub-merchant
Alphanumeric string. Maximum length is 50.
pinCode optional
Pincode of sub-merchant
Numeric String.(6)
mobileNumber optional
Mobile number of sub-merchant
Numeric String.(12)
ownerName optional
Owner of sub-merchant firm
Alphanumeric string. Maximum length is 50.
partner1 optional
Partner name of sub-merchant firm
Alphanumeric string. Maximum length is 50.
partner2 optional
Partner name of sub-merchant firm
Alphanumeric string. Maximum length is 50.
mccDescription optional
Description of mcc
Alphanumeric string.
gstin optional
GSTIN
Alphanumeric string.
panNumber optional
PAN Number of sub-merchant
Alphanumeric string.(10)
mid optional
Merchant identifier for sub-merchant
Alphanumeric string. Maximum length is 20.
sid optional
Store id for sub-merchant
Alphanumeric string. Maximum length is 20.
tid optional
Terminal identifier for sub-merchant
Alphanumeric string. Maximum length is 20.
merchantType optional
Merchant type for sub-merchant
SMALL,LARGE.
merchantGenre optional
Genre of sub-merchant
ONLINE, OFFLINE.
onBoardingType optional
Onboarding type of sub-merchant
BANK, AGGREGATOR
brand optional
Brand name of sub-merchant
Alphanumeric string. Maximum length is 99.
legal optional
Legal name for sub-merchant
Alphanumeric string. Maximum length is 99.
franchise optional
Franchise name of merchant
Alphanumeric string. Maximum length is 99.
type optional
Ownership type of sub-merchant
PROPRIETARY,PARTNERSHIP,PRIVATE,PUBLIC,OTHERS.
configurations optional
Array of JSON objects to provide custom configurations for every submerchant. Each Json object has name and value params
Only valid flags are allowed. The value associated with the CONFIG_NAME can be text, list or any other value as predefined in the code.Action can have only two possible values - ADD or REMOVE.Refer below table for possible values for config.
udfParameters optional
Udf parameters
As passed in the request body
iat optional
timestamp to be used in JWS
As passed in the request body
Response parameters
Parameter
Description
Values
status
Status of the API.
SUCCESS, FAILURE.
responseCode
SUCCESS if call succeeded. Otherwise shows the error code.
Refer error code section.
responseMessage
SUCCESS if call succeeded. Otherwise shows verbose error.
Refer error code section.
merchantId
Unique id for merchant.
As passed in request.
merchantChannelId
Unique id for the channel via which request is made.
As passed in request.
subMerchantId
Merchant generated sub-merchant id value
As passed in request.
subMerchantChannelId
Sub-merchant channel id
As passed in request.
vpa
VPA for the sub-merchant
As passed in request.
maskedAccountNumber
Masked account number for the sub-merchant
XXXX123456.
ifsc
Ifsc code of the sub-merchant current bank account
As passed in request.
mcc
Mcc code of the sub-merchant
As passed in request.
enabled
Tells whether the sub-merchant is enabled or not
By default it is false. Initiate update sub-merchant to enable it.
callbackUrls
Callback Urls needs to be configured for each event
As passed in request.
udfParameters
Stringified json for udf parameters.
String
Response Error
For parameter specific errors, responseCode will be BAD_REQUEST and response message will be Invalid parameter_name.
Error Code
Meaning
BAD_REQUEST
The request parameters are not proper.
INTERNAL_SERVER_ERROR
Internal Server Error.
Configuration Table
Config_Name
Description
Values
BLOCK_DIRECT_PAY
true for Online Submerchants and false for Offline Submerchants
true or false
PAYER_ACC_TYPES_ALLOWED
list of payment methods to add or remove
possible values for key accType : SAVINGS, CURRENT, DEFAULT, NRE, NRO ,CREDIT ,UOD ,SOD ,CREDITLINE01 ,CREDITLINE02 ,CREDITLINE03, CREDITLINE04, CREDITLINE05, CREDITLINE06 ,CREDITLINE07 ,CREDITLINE08, CREDITLINE09CREDITLINE10, CL01 ,CL011 ,CL012, CL013, CL014, CL015 ,CL02 ,CL03, CL04 ,CL05 ,CL06 ,CL07 ,CL08, CL09, CL10 possible values for key limitType : SMALL
This endpoint will be used to check if a UPI Number is available and also to check the current status of a UPI number. In case of mobile UPI number it will also let us know if we can port the UPI number with the action as PORT.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
upiRequestId
Unique id sent to UPI switch
35 character alphanumeric that starts with a unique merchant prefix
upiNumber
Number mapped to a customer's VPA that is unique to the customer across the UPI ecosystem
8 to 10 digit numeric string. 10 digit number must be the mobile number. Last 3 digits must not be same. Must not start with a 0.
vpa
Vpa linked/to be linked with the provided Upi Number
vpa@handle
action
Action to be performed on UPI Number
CHECK or PORT
deviceFingerPrint
Device fingerprint of the customer
String
fallbackDeviceFingerPrint optional
Fallback Device fingerprint of the customer
String
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
Status of the API.
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantId
Unique id for the merchant as passed in request headers
String
customerMobileNumber
Mobile number of the customer.
12 character string
gatewayTimestamp
Gateway timestamp for the Api call.
String(YYYY-MM-DDTHH:MM:SS+05:30)
gatewayTransactionId
Transaction id returned by gateway. Same as upiRequestId passed in request
String
gatewayResponseStatus
Response status returned by gateway.
String(SUCCESS, FAILURE)
gatewayResponseCode
Response code returned by gateway. Refer the table below for all possible values.
String
gatewayResponseMessage
Response message for code returned by gateway.
String
status
Status of the Upi Number.
String(ACTIVE, DISABLED, DELETED, NEW)
upiNumber
Number mapped to a customer's VPA that is unique to the customer across the UPI ecosystem
As passed in request
existingVpa
Vpa linked(/to be linked) with the upiNumber
vpa@handle
udfParameters
Stringified json for udf parameters.
String
responseCode
responseMessage
JP40
Check request not found for the Upi Number
JP41
User's Vpa doesnot match with the CHECK call
JPMM17
Upi Number mapping already exists
gatewayResponseCode
gatewayResponseStatus
Description
MM18
FAILURE
UPI number mapping already exists / UPI Number is mapped to different VPA
MM17
FAILURE
UPI number mapping already exists / UPI Number is mapped to different VPA
This is a clubbed api endpoint for change vpa, disable, delete and reactivate the Upi Number.
Request parameters
Parameter
Description
Constraints
upiNumber
Number mapped to a customer's VPA that is unique to the customer across the UPI ecosystem
8 to 10 digit numeric string. 10 digit number must be the mobile number. Last 3 digits must not be same. Must not start with a 0.
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
upiRequestId
Unique id sent to UPI switch
35 character alphanumeric that starts with a unique merchant prefix
vpa
Vpa to be linked with the provided Upi Number
vpa@handle
existingVpa optional
Previous VPA that was linked with the provided UPI number
Required when action is CHANGE_VPA. existingVpa and vpa should belong to the same customer and be part of the same PSP
action
Update action to be performed on UPI Number
CHANGE_VPA, DISABLE, DELETE, REACTIVATE
deviceFingerPrint
Device fingerprint of the customer
String
fallbackDeviceFingerPrint optional
Fallback Device fingerprint of the customer
String
udfParameters optional
Stringified JSON for udf parameters
JSON string
packageName optional
Package name of the UPI application
String
Response parameters
Parameter
Description
Values
status
Status of the API.
SUCCESS, FAILURE
responseMessage
PSP response message for the API
Refer error code section
responseCode
PSP response code for the API
Refer error code section
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
status
Status of the Upi Number.
ACTIVE, DISABLED, DELETED
gatewayResponseStatus
Response status returned by gateway.
String(SUCCESS, FAILURE)
vpa
Vpa linked to the upiNumber
vpa@handle
merchantId
Unique id for the merchant as passed in request headers
String
gatewayResponseMessage
Response message for code returned by gateway.
String
gatewayResponseCode
Response code returned by gateway. Refer the table below for all possible values.
String
gatewayTransactionId
Transaction id returned by gateway. Same as upiRequestId passed in request
String
customerMobileNumber
Mobile number of the customer.
12 character string
upiNumber
Number mapped to a customer's VPA that is unique to the customer across the UPI ecosystem
As passed in request
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
gatewayTimestamp
Gateway timestamp for the Api call.
String(YYYY-MM-DDTHH:MM:SS+05:30)
udfParameters
Stringified json for udf parameters.
String
responseCode
responseMessage
JP44
Upi number status is pending to be synced
JP45
Action cannot be performed as upi number status is {{status}}
JP46
Status is already {{status}}
gatewayResponseCode
gatewayResponseStatus
Description
MM2
FAILURE
Mapping does not exist
MM7
FAILURE
Mapping activation not allowed
MM9
FAILURE
Cannot activate deregistered mobile
Upi Number Delink/SyncPending Callback
# A callback with following POST data will be sent to the endpoint configured for "PORTED_OUT"{"action": "PORTED_OUT",
"customResponse": "{}",
"customerMobileNumber": "917550277516",
"gatewayTimestamp": "2021-11-08T15:15:08+05:30",
"gatewayTransactionId": "APLVGXVGDV21r521r53MAPPERdbhsbcs372",
"merchantChannelId": "APLTEST",
"merchantCustomerId": "DEMO-CUST-1234",
"merchantId": "APLTEST",
"status": "SUCCESS",
"type": "UPI_NUMBER_MAPPER",
"upiNumber": "755027712",
"vpa": "abcd@xyz"}
This callback is used for two purposes:
Purpose 1) This callback will be sent when a 10 digit UPI Number (Mobile Number) has been delinked from a particular Vpa and moved to a different PSP. In this case, action is PORTED_OUT and upiNumber will be 10 digit always.
Purpose 2) Juspay will asynchronously resolve UPI numbers that go to pending status, which happens when create or update UPI number call times out because of timeout at NPCI's end. When such a resolution to terminal status happens, this callback will be sent to the merchant using which merchant shall update/sync their database. In this case, action will be one of CREATE, REACTIVATE, CHANGE_VPA, DISABLE, DELETE and upiNumber can be 8, 9 or 10 digit.
Important notes about optional parameters and more:
In the first (current) version of UPI number feature, Juspay does not store the action and upiRequestId passed by merchant in create and update UPI number APIs. Hence Juspay will not be able to retrieve these values. So the equivalent action and gatewayTransactionId parameters shall NOT be passed for a bunch of UPI numbers. The status parameter will also be SUCCESS by default for this bunch of UPI numbers. (Applicable in Purpose 2)
upiNumberStatus will NOT be sent whenever action is PORTED_OUT. (Applicable in Purpose 1)
status will be SUCCESS when the action has succeeded and FAILURE if the action has failed.
Parameter
Description
action optional
Purpose of the callback, values possible are PORTED_OUT, CREATE, REACTIVATE, CHANGE_VPA, DISABLE, DELETE.
customResponse
Stringified JSON parameter for future use.
customerMobileNumber
Mobile number of the customer.
gatewayTimestamp
Timestamp of when the callback was initiated. (YYYY-MM-DDTHH:MM:SS+05:30)
gatewayTransactionId optional
UPI request id returned by gateway for the transaction.
merchantChannelId
Unique id for the channel via which request is made.
merchantCustomerId
Merchant generated unique id for customer.
merchantId
Unique id for merchant.
status
Status/Result of the action, values could be SUCCESS, FAILURE.
type
A unique key to identify the Upi Mapper feature, value is UPI_NUMBER_MAPPER.
upiNumber
Numeric 8-9 digits or 10 digits Mobile Number.
upiNumberStatus optional
Current terminal status of the UPI number after resolution. ACTIVE, DISABLED, DELETED.
Lite Reference Number which is reference the number provided for the wallet linked with account number
String
timestamp
This is the timestamp in ISO format which was sent to CL for generating ARQC credblock. This timestamp should be passed as it is which was passed to CL
String
packageName optional
Package name of the UPI application
String
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantRequestId
Merchant generated id for the transaction
As passed in the request
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
customerMobileNumber
Customer mobile number
12 digits mobile number string
payerVpa
Customer vpa used for the payment
As passed in the request
payeeMcc
MCC for the payee
String
payeeMerchantCustomerId optional
Merchant generated unique id for customer who received the payment. Only if it is an onus P2P transaction.
String
payeeName optional
Name of the upi user who received the payment. Only if payment is done to a non A/C+IFSC vpa.
String
payeeVpa
Vpa of the upi user who received the payment
something@handle
refUrl
Reference url for the intent transaction
String
bankAccountUniqueId
Unique id for the selected bank account
As passed in the request
bankCode
Bank code of the account which was used
Valid bank IIN
maskedAccountNumber
Masked account number of the account which was used
XXXX123456
amount
Amount for the payment
As passed in the request
transactionType
Type of payment
As sent in request
transactionTimestamp
Timestamp of when the transaction was attempted
YYYY-MM-DDTHH:MM:SS+05:30
gatewayTransactionId
Transaction id returned by gateway
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
gatewayReferenceId
Reference id returned by the gateway
String
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
gatewayPayerResponseCode optional
Response code returned by gateway
String
gatewayPayeeResponseCode optional
Response code returned by gateway
String
gatewayPayerReversalResponseCode optional
Response code returned by gateway
String
gatewayPayeeReversalResponseCode optional
Response code returned by gateway
String
riskScore optional
RiskScore shared by NPCI or Bank
String
udfParameters optional
Udf parameters as passed in the request
JSON string
arpc
This comes from NPCI for all lite txns and it needs to be passed to CL
Lite Reference Number which is reference the number provided for the wallet linked with account number
String
timestamp
This is the timestamp in ISO format which was sent to CL for generating ARQC credblock. This timestamp should be passed as it is which was passed to CL
String
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantRequestId
Merchant generated id for the transaction
As passed in the request
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
customerMobileNumber
Customer mobile number
12 digits mobile number string
payerVpa
Customer vpa used for the payment
As passed in the request
payeeMcc
MCC for the payee
String
payeeMerchantCustomerId optional
Merchant generated unique id for customer who received the payment. Only if it is an onus P2P transaction.
String
payeeName optional
Name of the upi user who received the payment. Only if payment is done to a non A/C+IFSC vpa.
String
payeeVpa
Vpa of the upi user who received the payment
something@handle
refUrl
Reference url for the intent transaction
String
bankAccountUniqueId
Unique id for the selected bank account
As passed in the request
bankCode
Bank code of the account which was used
Valid bank IIN
maskedAccountNumber
Masked account number of the account which was used
XXXX123456
amount
Amount for the payment
As passed in the request
transactionType
Type of payment
As sent in request
transactionTimestamp
Timestamp of when the transaction was attempted
YYYY-MM-DDTHH:MM:SS+05:30
gatewayTransactionId
Transaction id returned by gateway
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
gatewayReferenceId
Reference id returned by the gateway
String
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
gatewayPayerResponseCode optional
Response code returned by gateway
String
gatewayPayeeResponseCode optional
Response code returned by gateway
String
gatewayPayerReversalResponseCode optional
Response code returned by gateway
String
gatewayPayeeReversalResponseCode optional
Response code returned by gateway
String
riskScore optional
RiskScore shared by NPCI or Bank
String
udfParameters optional
Udf parameters as passed in the request
JSON string
arpc
This comes from NPCI for all lite txns and it needs to be passed to CL
This api will be used for completing all P2P and P2M Payment scenarios. This includes
Incoming Intent Payment
Scan and Pay (UPI QR & Bharat QR)
P2P Pay (Vpa & Account+IFSC)
Payment to PSP merchant
The api can be invoked to process different types of payments. The transactionType key of request is used to identify the type of payment. Possible values are P2M_PAY, P2P_PAY, SELF_PAY, INTENT_PAY and SCAN_PAY. Depending on the payment type, some additional parameters need to be passed.
P2M_PAY is to be used for payment to a PSP merchant only. The payeeVpa should be a valid PSP generated vpa for the merchant.
INTENT_PAY and SCAN_PAY are used for the intent and qr scan transactions. Both UPI QR and Bharat QR codes are supported.
P2P_PAY is to be used for completing all other P2P payment scenarios. For direct to account transfers, payeeVpa should be of format <account-no>@<ifsc-code>.ifsc.npci like 12345@BankIFSC.ifsc.npci.
SELF_PAY is to be used for doing a self transfer between customer accounts having same vpa domain.
Below are some request parameters required to be handled specifically according to the payment scenario.
Parameter
P2M Pay
P2P Pay
Scan & Pay
Incoming Intent
Self Pay
transactionType
P2M_PAY
P2P_PAY
SCAN_PAY
INTENT_PAY
SELF_PAY
payeeVpa
Mandatory
Mandatory
pa in deeplink url
pa in deeplink url
Mandatory
payeeName
Not Required
Not required for account transfers only
pn in deeplink url
pn in deeplink url
Mandatory
amount
Mandatory
Mandatory
am in deeplink url
am in deeplink url
Mandatory
upiRequestId
Mandatory
Mandatory
tid in deeplink url
tid in deeplink url
Mandatory
remarks
Mandatory
Mandatory
tn in deeplink url
tn in deeplink url
Mandatory
refUrl
Not Required
Not Required
url in deeplink url
url in deeplink url
Not Required
refCategory
Not Required
Not Required
category in deeplink url
category in deeplink url
Not Required
currency
INR
INR
cu in deeplink url
cu in deeplink url
INR
mcc
Mandatory
Not Required
mc in deeplink url
mc pin deeplink url
Not Required
transactionReference
Not Required
Not Required
tr in deeplink url
tr in deeplink url
Not Required
payeeBankAccountUniqueId
Not Required
Not Required
Not Required
Not Required
Mandatory
Note
Validity of a payeeVpa can be verified using the Verify VPA API.
SERVICE_UNAVAILABLE_{entity}_{error} will be returned in case of NPCI timeout or deemed transactions.
In case of UPI LITE transactions lrn and timestamp is Mandatory
Timestamp should be passed by merchant which should be same which was given to CL.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
deviceFingerPrint
Device fingerprint of the customer
String
merchantRequestId
Merchant generated id for the transaction
35 characters alphanumeric
payerVpa
VPA of the customer to be used for payment
something@handle
payeeVpa
Vpa of the payee to whom money is being sent
something@handle
payeeName optional
Name of the payee
String as returned in the Verify VPA API
amount
Amount for transaction
Numeric string with two decimals
upiRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with merchant prefix provided.
bankAccountUniqueId
Unique id for the payer selected bank account
bankAccountUniqueId in the response of Fetch Accounts api call
payeeBankAccountUniqueId optional
Unique id for the payee selected bank account for self transfer
bankAccountUniqueId in the response of Fetch Accounts api call
credBlock
Encrypted credblock containing user mpin
As returned by Common Library
remarks
Any transaction summary
50 characters alphanumeric with space and hyphen
currency
Currency code
String - INR
transactionType
Type of payment
P2M_PAY, P2P_PAY, INTENT_PAY or SCAN_PAY
transactionReference optional
Transaction reference id
String
refUrl optional
Reference url for the intent transaction
String
refCategory optional
Details for refUrl, whether it is 01 (Advertisement), 02(Invoice)
Lite Reference Number which is reference the number provided for the wallet linked with account number
String
timestamp
This is the timestamp in ISO format which was sent to CL for generating ARQC credblock. This timestamp should be passed as it is which was passed to CL
String
udfParameters optional
Stringified JSON for udf parameters
JSON string
packageName optional
Package name of the UPI application
String
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantRequestId
Merchant generated id for the transaction
As passed in the request
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
customerMobileNumber
Customer mobile number
12 digits mobile number string
payerVpa
Customer vpa used for the payment
As passed in the request
payeeMcc
MCC for the payee
String
payeeMerchantCustomerId optional
Merchant generated unique id for customer who received the payment. Only if it is an onus P2P transaction.
String
payeeName optional
Name of the upi user who received the payment. Only if payment is done to a non A/C+IFSC vpa.
String
payeeVpa
Vpa of the upi user who received the payment
something@handle
refUrl
Reference url for the intent transaction
String
bankAccountUniqueId
Unique id for the selected bank account
As passed in the request
bankCode
Bank code of the account which was used
Valid bank IIN
maskedAccountNumber
Masked account number of the account which was used
XXXX123456
amount
Amount for the payment
As passed in the request
transactionType
Type of payment
As sent in request
transactionTimestamp
Timestamp of when the transaction was attempted
YYYY-MM-DDTHH:MM:SS+05:30
gatewayTransactionId
Transaction id returned by gateway
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
gatewayReferenceId
Reference id returned by the gateway
String
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
gatewayPayerResponseCode optional
Response code returned by gateway
String
gatewayPayeeResponseCode optional
Response code returned by gateway
String
gatewayPayerReversalResponseCode optional
Response code returned by gateway
String
gatewayPayeeReversalResponseCode optional
Response code returned by gateway
String
riskScore optional
RiskScore shared by NPCI or Bank
String
udfParameters optional
Udf parameters as passed in the request
JSON string
arpc
This comes from NPCI for all lite txns and it needs to be passed to CL
String
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Payment Success.
Z8
FAILURE
Per transaction limit exceeded as set by remitting member.
Z7
FAILURE
Transaction frequency limit exceeded as set by remitting member.
Else
FAILURE
Any other reason.
Additional Error Codes
responseCode
Meaning
DUPLICATE_REQUEST
Duplicate merchantRequestId or upiRequestId used for the transaction
Lite Reference Number which is reference the number provided for the wallet linked with account number
String
timestamp
This is the timestamp in ISO format which was sent to CL for generating ARQC credblock. This timestamp should be passed as it is which was passed to CL
String
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantRequestId
Merchant generated id for the transaction
As passed in the request
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
customerMobileNumber
Customer mobile number
12 digits mobile number string
payerVpa
Customer vpa used for the payment
As passed in the request
payeeMcc
MCC for the payee
String
payeeMerchantCustomerId optional
Merchant generated unique id for customer who received the payment. Only if it is an onus P2P transaction.
String
payeeName optional
Name of the upi user who received the payment. Only if payment is done to a non A/C+IFSC vpa.
String
payeeVpa
Vpa of the upi user who received the payment
something@handle
refUrl
Reference url for the intent transaction
String
bankAccountUniqueId
Unique id for the selected bank account
As passed in the request
bankCode
Bank code of the account which was used
Valid bank IIN
maskedAccountNumber
Masked account number of the account which was used
XXXX123456
amount
Amount for the payment
As passed in the request
transactionType
Type of payment
As sent in request
transactionTimestamp
Timestamp of when the transaction was attempted
YYYY-MM-DDTHH:MM:SS+05:30
gatewayTransactionId
Transaction id returned by gateway
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
gatewayReferenceId
Reference id returned by the gateway
String
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
gatewayPayerResponseCode optional
Response code returned by gateway
String
gatewayPayeeResponseCode optional
Response code returned by gateway
String
gatewayPayerReversalResponseCode optional
Response code returned by gateway
String
gatewayPayeeReversalResponseCode optional
Response code returned by gateway
String
riskScore optional
RiskScore shared by NPCI or Bank
String
udfParameters optional
Udf parameters as passed in the request
JSON string
arpc
This comes from NPCI for all lite txns and it needs to be passed to CL
This api fetches customer accounts from NPCI. accounts will be present in the response only if gatewayResponseCode = "00". In case there are one or more accounts fetched, vpaSuggestions will be sent in response.
Note: In case merchant retires this api, the accounts will be fetched from NPCI again.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
upiRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with merchant prefix provided.
deviceFingerPrint
Device fingerprint of the customer
String
bankCode
Bank code (IIN) of selected bank
String
udfParameters optional
Stringified JSON for udf parameters
JSON string
aadhaarConsent
Aadhaar Consent to fetch Customer Aadhaar Details
Boolean string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
customerMobileNumber
Mobile number of the customer
12 digits mobile number string
gatewayTransactionId
Transaction id returned by gateway
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
accounts optional
Bank accounts as returned by NPCI for the customer mobile number
This api fetches customer accounts from NPCI. accounts will be present in the response only if gatewayResponseCode = "00". In case there are one or more accounts fetched, vpaSuggestions will be sent in response.
IN CASE OF CREDIT CARD pass one extra parameter accountType with value CREDIT in Input.
ATM PIN length for the credit card account used for FORMAT2 usecases.
For credit card account maskedAccountNumber represents Masked Credit Card number with first 6 digits and last 2 digits unmasked.
IN CASE OF CREDIT CARD only the bankCodes of banks which have version no = '2.99' in listBanks api response, supports credit cards in UPI ecosystem.
Note: In case merchant retries this api, the accounts will be fetched from NPCI again.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
upiRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with merchant prefix provided.
deviceFingerPrint
Device fingerprint of the customer
String
bankCode
Bank code (IIN) of selected bank
String
udfParameters optional
Stringified JSON for udf parameters
JSON string
accountType optional
Account Type(In CC TPAP should send accountType as CREDIT, in other cases they can skip sending this field)
String
packageName optional
Package name of the UPI application
String
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
customerMobileNumber
Mobile number of the customer
12 digits mobile number string
gatewayTransactionId
Transaction id returned by gateway
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
accounts optional
Bank accounts as returned by NPCI for the customer mobile number
Note: Only the bankCodes of Issuing banks which have version no = '2.14' in listBanks api response, supports credit card EMI in UPI ecosystem.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
deviceFingerPrint
Device fingerprint of the customer
String
fallbackDeviceFingerPrint optional
Fallback Device fingerprint of the customer
String
upiRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with merchant prefix provided.
bankAccountUniqueId
Unique id for the selected bank account
bankAccountUniqueId in the response of Fetch Accounts api call.
payerVpa
Vpa of the customer/payer to be used for emi conversion payment
something@handle
payeeVpa
Vpa of the payee to whom money is being sent for emi conversion payment
something@handle
emiTxnType
EMI transaction Conversion types
ENUM String [DURING,POST,FORECLOSE]
originalTxnUpiRequestId
In case of POST: upiRequestId of the fin txn which is to be converted to EMI, FORECLOSE: upiRequestId of the SELECT call through which fin txn was converted to EMI
35 character alphanumeric. Required when emiTxnTypein [POST,FORECLOSE]
originalTxnAmt
Amount of the original transaction which is to be converted to EMI
String
originalTxnTs conditional
Timestamp of the original transaction
String (YYYY-MM-DDTHH:MM:SS+05:30). Required when emiTxnType= POST
mcc
Merchant Category Code for the merchant whose VPA is passed in payeeVpa
String
remarks optional
Any transaction summary
Max 50 characters alphanumeric with space and hyphen
forecloseEmiId conditional
emiId of the converted EMI that is to be foreclosed
String . Required when emiTxnType= FORECLOSE
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
gatewayTransactionId
Transaction id returned by gateway
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
termsConditions
The terms and conditions passed by the Issuer for EMI conversion and foreclosure
String
emiLimitAmount optional
The amount above which credit card issuer is allowing the financial transactions to be converted into EMI
String
emiOfferList conditional
List of eligible EMIs for a txn
Array of JSON . emiTxnType in [DURING,POST]
seqNum
Indexing for each EMI offer in the list
Integer String
offerId
The unique identifier for an EMI offer. It is dynamically computed and changes for every txn for every user
35 character alphanumeric.
tenure
Tenure is the validity of an EMI and will contain the number of months
Numeric String
amount
Emi amount for the Month = [(principal-amt + int-rate-amt) / tenure]
Numeric String
intRatePct
Interest rate for the complete EMI
Numeric String
intRateAmt
Total Interest amount to be paid for the complete EMI = [int-rate-pct% of principal-amt]
Numeric String
totalAmt
Total Amount to be paid for the complete EMI = [(amount * tenure) - discount-amt + proc-fee]
Note: Only the bankCodes of Issuing banks which have version no = '2.14' in listBanks api response, supports credit card EMI in UPI ecosystem.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
deviceFingerPrint
Device fingerprint of the customer
String
fallbackDeviceFingerPrint optional
Fallback Device fingerprint of the customer
String
upiRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with merchant prefix provided.
bankAccountUniqueId
Unique id for the selected bank account
bankAccountUniqueId in the response of Fetch Accounts api call.
payerVpa
Vpa of the customer/payer to be used for emi conversion payment
something@handle
payeeVpa
Vpa of the payee to whom money is being sent for emi conversion payment
something@handle
credBlock conditional
Encrypted credblock containing user mpin
As returned by Common Library . Required when emiTxnTypein [POST,FORECLOSE]
emiTxnType
EMI transaction Conversion types
ENUM String [DURING,POST,FORECLOSE]
originalTxnUpiRequestId
In case of DURING/POST: upiRequestId of the fin txn which is to be converted to EMI, FORECLOSE: upiRequestId of the SELECT call through which fin txn was converted to EMI
35 character alphanumeric.
originalTxnAmt
Amount of the original transaction which is to be converted to EMI
String
originalTxnTs conditional
Timestamp of the original transaction
String (YYYY-MM-DDTHH:MM:SS+05:30). Required when emiTxnType= POST
checkEmiUpiRequestId conditional
upiRequestId of EMI CHECK api call
35 character alphanumeric. Required when emiTxnType!= DURING(Brand Funded scenario)
mcc
Merchant Category Code for the merchant whose VPA is passed in payeeVpa
String
userConsent
User consent to convert a fin txn to EMI or foreclose a converted EMI
ENUM String [Y,N]
emiData conditional
Stringified JSON of EMI Details
JSON String. Required when emiTxnType in [DURING,POST]
seqNum
seqNum of the desired EMI offer(as received in the response of corresponding CHECK request)
Integer String
offerId
offerId of the desired EMI offer (as received in the response of corresponding CHECK request)
35 character alphanumeric.
tenure
tenure of the desired EMI offer (as received in the response of corresponding CHECK request)
Integer String
amount
amount of the desired EMI offer (as received in the response of corresponding CHECK request)
Numeric String
intRatePct
intRatePct of the desired EMI offer (as received in the response of corresponding CHECK request)
Numeric String
intRateAmt
intRateAmt of the desired EMI offer (as received in the response of corresponding CHECK request)
Numeric String
totalAmt
totalAmt of the desired EMI offer (as received in the response of corresponding CHECK request)
Numeric String
discountAmt
discountAmt of the desired EMI offer (as received in the response of corresponding CHECK request)
SNumeric tring
procFee
procFee of the desired EMI offer (as received in the response of corresponding CHECK request)
Numeric String
imei conditional
imei of the desired EMI offer
String. Required when emiTxnType= DURING(Brand Funded scenario)
forecloseDetails conditional
Stringified JSON of Foreclose Details
JSON String. Required when emiTxnType= FORECLOSE
emiId
emiId of the converted EMI that is to be foreclosed
String
forecloseAmt
forecloseAmt as received in the response of corresponding CHECK request
Numeric String
penaltyAmt
penaltyAmt as received in the response of corresponding CHECK request
Numeric String
principalAmt
principalAmt as received in the response of corresponding CHECK request
Numeric String
remarks optional
Any transaction summary
Max 50 characters alphanumeric with space and hyphen
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
This api will be used for completing all P2P and P2M Payment scenarios. This includes
Incoming Intent Payment
Scan and Pay (UPI QR & Bharat QR)
P2P Pay (Vpa & Account+IFSC)
Payment to PSP merchant
Self Pay
The api can be invoked to process different types of payments. The transactionType key of request is used to identify the type of payment. Possible values are P2M_PAY, P2P_PAY, SELF_PAY, INTENT_PAY and SCAN_PAY. Depending on the payment type, some additional parameters need to be passed.
P2M_PAY is to be used for payment to a PSP merchant only. The payeeVpa should be a valid PSP generated vpa for the merchant.
INTENT_PAY and SCAN_PAY are used for the intent and qr scan transactions. Both UPI QR and Bharat QR codes are supported.
Note
For DURING type EMI transaction, purposeCode must be 72. Everything else is same as normal send money call.
For Request and Response Body Parameters, refer Send Money
This API can be used to fetch the credit card bill for self and others
Note: Only the bankCodes of Issuing banks which have version no = '2.13' in listBanks api response, supports credit card bill generation and payment in UPI ecosystem.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
deviceFingerPrint
Device fingerprint of the customer
String
fallbackDeviceFingerPrint optional
Fallback Device fingerprint of the customer
String
upiRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with merchant prefix provided.
isCCAccLinked
Flag to denote if the credit account for which the bill is being fetched has an active VPA created with the PSP
Boolean string
crediAccDetails
Credit Card Account details
JSON string .
bankAccountUniqueId conditional
Unique id for the selected bank account with type = CREDIT
bankAccountUniqueId in the response of Fetch Accounts api call. Required when isCCAccLinked = True
bankCode conditional
Bank code (IIN) of selected bank
String. Required when isCCAccLinked = False
cardDigits conditional
Last 4 digits of the credit card
Numeric String . Required when isCCAccLinked = False
linkedMobileNumber
Mobile number linked to the credit card
12 digits mobile number string. Required when isCCAccLinked = False
udfParameters optional
Stringified JSON for udf parameters
JSON string
iat optional
timestamp to be used in JWS
As passed in the request body
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
billDeatils
Credit card bill details
JSON string
regName
Cardholder’s name
String
dueDate
Due date for payment of CC bill
ISO Date format - DDMMYYYY
billDate
Billing date of CC bill as per cycle
ISO Date format - DDMMYYYY
minAmt
Minimum payable amount for CC bill
Numeric string
totalAmt
Total payable amount for CC bill
Numeric string
latePaymentFee
Late payment fee
Numeric string
interestRate
Interest rate
Numeric string
billingPeriod
Billing period
2 Dates in string format separated by / Format - DDMMYYYY/DDMMYYYY
This api will be used for completing all P2P and P2M Payment scenarios. This includes
Incoming Intent Payment
Scan and Pay (UPI QR & Bharat QR)
P2P Pay (Vpa & Account+IFSC)
Payment to PSP merchant
Self Pay
The api can be invoked to process different types of payments. The transactionType key of request is used to identify the type of payment. Possible values are P2M_PAY, P2P_PAY, SELF_PAY, INTENT_PAY and SCAN_PAY. Depending on the payment type, some additional parameters need to be passed.
P2M_PAY is to be used for payment to a PSP merchant only. The payeeVpa should be a valid PSP generated vpa for the merchant.
INTENT_PAY and SCAN_PAY are used for the intent and qr scan transactions. Both UPI QR and Bharat QR codes are supported.
Note
For CC bill payment transaction, initiationMode must be 25(SELF case) or 26(OTHERS case).
If initiationMode is 25, then transactionReference should contain linked credit card bankAccountUniqueId .If initiationMode is 26, then transactionReference should contain last 4 digits of the credit card.
payeeVpa should be in the format of CC.<mobilenumber>@bankhandle.
Everything else is same as normal send money call. For Request and Response Body Parameters, refer Send Money
This API hits TSP Server with a timeout of 60 seconds.
This api will be used for creation of a mandate for cc bill payment . For this scenario payer creates the madate.
Note
For CC bill autopay mandate creation, initiationMode must be 25(SELF case) or 26(OTHERS case).
If initiationMode is 25, then transactionReference should contain linked credit card bankAccountUniqueId .If initiationMode is 26, then transactionReference should contain last 4 digits of the credit card.
payeeVpa should be in the format of CC.<mobilenumber>@bankhandle.
remarks must be MAD or TotalAmount. MAD used to create auto-pay for Minimum Amount Due.TotalAmount used to create auto-pay for full bill amount.
amountRule must be MAX.
Everything else is same as normal create mandate call .For Request and Response Body Parameters, refer Create Mandate
This api fetches customer accounts from NPCI. accounts will be present in the response only if gatewayResponseCode = "00". In case there are one or more accounts fetched, vpaSuggestions will be sent in response.
IN CASE OF CREDIT LINE only the bankCodes of banks which have version no = '2.15' in listBanks api response, supports credit cards in UPI ecosystem.
Note: In case merchant retires this api, the accounts will be fetched from NPCI again.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
upiRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with merchant prefix provided.
deviceFingerPrint
Device fingerprint of the customer
String
bankCode
Bank code (IIN) of selected bank
String
udfParameters optional
Stringified JSON for udf parameters
JSON string
accountType
For Credit line, account-type will be UPICREDIT
String
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
customerMobileNumber
Mobile number of the customer
12 digits mobile number string
gatewayTransactionId
Transaction id returned by gateway
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
type
For the Credit line, accType can be "CREDITLINE"/"CREDITLINE01"/"CL01" etc
String
accSubType optional
Account subtype indicates the sub type/purpose of credit account i.e. Name of the Credit line product defined by Issuing bank Ex: "CD" or "PL"
String
allowedMCC optional
Allowed MCC is the list of MCC against which the UPICREDIT account can be used to make txns. Ex:["5541", "5411", "5311", "5944"]
Array of strings
notallowedMCC optional
Not allowed MCC is the list of MCC against which the UPICREDIT account cant be used to make txns. Ex: ["0000", "5413"]
Array of strings
accounts optional
Bank accounts as returned by NPCI for the customer mobile number
This API is used to activate the international account for international payments for the selected time period.
International activation is a pre-requisite for UPI International transaction. The UPI enabled customer apps shall provide for customer activation flow in their apps. Activation can be done for specific time period e.g. for travel duration or enabled till disabled again. The maximum activation period can be of 90 days.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
deviceFingerPrint
Device fingerprint of the customer
String
bankAccountUniqueId
Unique id for the payer selected bank account
bankAccountUniqueId in the response of Fetch Accounts api call
credBlock
Encrypted credblock containing user mpin
As returned by Common Library
startDate optional
Start date of the International Activation yyyy-MM- ddTHH:mm:ss+05:30
String, Should only be populated in case of action = ACTIVATE
endDate optional
End date of the International Activation yyyy-MM- ddTHH:mm:ss+05:30
String, Should only be populated in case of action = ACTIVATE (if not passed in action = ACTIVATE, by default activation request will be executed with 90 days endDate)
action
Action to be performed like ACTIVATE, QUERY, DEACTIVATE
String
featureName
UPI_INTERNATIONAL has to be passed for UPI_INTERNATIONAL and UPI_INTERNATIONAL_FIR has to be passed for consent for FIR
String
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
status
International Status
ACTIVE, INACTIVE
startDate optional
Start date of the International Activation received from bank
String, Should only be populated in case of status = ACTIVE
endDate optional
End date of the International Activation received from bank
String, Should only be populated in case of status = ACTIVE
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
udfParameters optional
Udf parameters as passed in the request
JSON string
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Payment Success.
ZM
Invalid Mpin
Invalid Mpin entered by customer
B3
Txn not permited to the account ex: Minor account or proprietor account
Banks are not allowing this type of accounts
UG1
Response activation time out
Remitter bank failed to respond in the stipulated time
UB9
Remitter bank doesn’t support International Transactions
Unique ID for each international institution provided by UPI
String
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters with check enabled
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
txnId
This id will be created for every txn by Merchant
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
gatewayReferenceId
Reference id returned by the gateway
String
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
fx
Foreign exchange rate
Decimal String, with 2 decimal places
mkup
Markup rate
String
baseAmount optional
Amount in base currency
Decimal String, with 2 decimal places. Only populated in case of dynamic QR
baseCurr
Base currency
String
convertedAmount optional
converted amount based on the country
Decimal String, with 2 decimal places. Only populated in case of dynamic QR
lastModifiedTs optional
Last modified time of the QR as received from NPCI
String
active optional
Active status for forex as received from NPCI
String
udfParameters optional
Udf parameters as passed in the request
JSON string
payeeName
Payee name is to be used for International Pay txns
String
payeeAddr
Vpa of the payee to whom money is being sent
something@handle
payeeCode
MCC code of payee
String
payeeType
Merchant's type ex:SMALL, LARGE
String
Response parameters with check disabled
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
txnId
This id will be created for every txn by Merchant
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
gatewayReferenceId
Reference id returned by the gateway
String
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
payeeName
Payee name is to be used for International Pay txns
String
payeeAddr
Vpa of the payee to whom money is being sent
something@handle
payeeCode
MCC code of payee
String
payeeType
Merchant's type ex:SMALL, LARGE
String
fx
Foreign exchange rate
Decimal String, with 2 decimal places
mkup
Markup rate
String
baseAmount optional
Amount in base currency
Decimal String, with 2 decimal places. Only populated in case of dynamic QR
baseCurr
Base currency
String
convertedAmount optional
converted amount based on the country
Decimal String, with 2 decimal places. Only populated in case of dynamic QR
lastModifiedTs optional
Last modified time of the QR as received from NPCI
String
active optional
Active status for forex as received from NPCI
String
expireTs
Expired time stamp of international activation
String
networkInstitutionId
Unique ID for each international institution provided by UPI
String
verificationToken
This is a unique token generated by the International partner for every QR validation request response, based on which payment is later approved or decline
String
qrPayload
Deep Link URL
String
medium
This field indicates the Source channel i.e. creation point of the string (like Gallery, App, ATM, etc).
String
version
The QR Version
String
query
This is for future use in JSON format. We can add multiple fields basis requirements
String
countryCode
Represents the country code of the Merchant
String
stan
STAN - System Trace Audit Number. Unique identifier for the transaction used by the merchant
String
timestamp
Timestamp representing the creation time of QR
String
encAccNum
Account Reference Number
String
accType
Account Type
String
ifsc
Account IFSC
String
registrationId
Identifier for this QR scan instance, generated by the merchant/network
String
franchise
Franchise agent name
String
invoiceNum optional
This field is used to capture the bill invoice date. Only mandatory for GST use case
String
merchantType
Merchant's type, Ex: SMALL, LARGE
String
pincode
Zip code or pin code or postal code of the merchant
String
location
Location of the Country
String
ownershipType
Type of Ownership, Ex: PROPRIETARY, PARTNERSHIP, PRIVATE, PUBLIC, OTHERS
String
brand
Brand name of the Merchant
String
invoiceName optional
This field is used to track the unique customer name present in the bill. If this tag is present, app should display the value to the customer
String
tid
Terminal id for merchant
String
tier
Denotes the tier of the city on the basis of the population Ex: TIER1, TIER2, TIER3
String
invoiceDate optional
This field is used to capture the bill/ invoice no. If this tag is present, app should display the value to the customer. Only mandatory for GST use case
String
instCode
This is w.r.t to end Aggregator identification by the International Network
This api will be used for completing all P2P and P2M Payment scenarios. This includes
Incoming Intent Payment
Scan and Pay (UPI QR & Bharat QR)
P2P Pay (Vpa & Account+IFSC)
Payment to PSP merchant
Self Pay
The api can be invoked to process different types of payments. The transactionType key of request is used to identify the type of payment. Possible values are P2M_PAY, P2P_PAY, SELF_PAY, INTENT_PAY and SCAN_PAY. Depending on the payment type, some additional parameters need to be passed.
P2M_PAY is to be used for payment to a PSP merchant only. The payeeVpa should be a valid PSP generated vpa for the merchant.
INTENT_PAY and SCAN_PAY are used for the intent and qr scan transactions. Both UPI QR and Bharat QR codes are supported.
P2P_PAY is to be used for completing all other P2P payment scenarios. For direct to account transfers, payeeVpa should be of format <account-no>@<ifsc-code>.ifsc.npci like 12345@BankIFSC.ifsc.npci.
SELF_PAY is to be used for doing a self transfer between customer accounts having same vpa domain.
SELF_PAY is to be used for doing a self transfer between customer accounts having same vpa domain.
UPI InternationaltransactionType will only be SCAN_PAY.
Below are some request parameters required to be handled specifically according to the payment scenario.
Parameter
P2M Pay
P2P Pay
Scan & Pay
Incoming Intent
Self Pay
transactionType
P2M_PAY
P2P_PAY
SCAN_PAY
INTENT_PAY
SELF_PAY
payeeVpa
Mandatory
Mandatory
pa in deeplink url
pa in deeplink url
Mandatory
payeeName
Not Required
Not required for account transfers only
pn in deeplink url
pn in deeplink url
Mandatory
amount
Mandatory
Mandatory
am in deeplink url
am in deeplink url
Mandatory
upiRequestId
Mandatory
Mandatory
tid in deeplink url
tid in deeplink url
Mandatory
remarks
Mandatory
Mandatory
tn in deeplink url
tn in deeplink url
Mandatory
refUrl
Not Required
Not Required
url in deeplink url
url in deeplink url
Not Required
refCategory
Not Required
Not Required
category in deeplink url
category in deeplink url
Not Required
currency
INR
INR
cu in deeplink url
cu in deeplink url
INR
mcc
Mandatory
Not Required
mc in deeplink url
mc pin deeplink url
Not Required
transactionReference
Not Required
Not Required
tr in deeplink url
tr in deeplink url
Not Required
payeeBankAccountUniqueId
Not Required
Not Required
Not Required
Not Required
Mandatory
Note
Validity of a payeeVpa can be verified using the Verify VPA API.
SERVICE_UNAVAILABLE_{entity}_{error} will be returned in case of NPCI timeout or deemed transactions.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
deviceFingerPrint
Device fingerprint of the customer
String
merchantRequestId
Merchant generated id for the transaction
35 characters alphanumeric
payerVpa
VPA of the customer to be used for payment
something@handle
payeeVpa
Vpa of the payee to whom money is being sent
something@handle
payeeName optional
Name of the payee
String as returned in the Verify VPA API
amount
Amount for transaction
Numeric string with two decimals
upiRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with merchant prefix provided.
bankAccountUniqueId
Unique id for the payer selected bank account
bankAccountUniqueId in the response of Fetch Accounts api call
payeeBankAccountUniqueId optional
Unique id for the payee selected bank account for self transfer
bankAccountUniqueId in the response of Fetch Accounts api call
credBlock
Encrypted credblock containing user mpin
As returned by Common Library
remarks
Any transaction summary
50 characters, alphanumeric, space and hyphen
currency
Currency code
String - INR
transactionType
Type of payment
SCAN_PAY
transactionReference optional
Transaction reference id
String
refUrl optional
Reference url for the intent transaction
String
refCategory optional
Details for refUrl, whether it is 01 (Advertisement), 02(Invoice)
The consent type denotes the purpose for which the customer’s consent is being taken.This is for specific use cases as may be defined in future. This tag is not applicable for GST
String
originalTransactionUpiRequestId
The txnId of QR Validation request
35 character alphanumeric. Should always start with merchant prefix provided.
The consent type denotes the purpose for which the customer’s consent is being taken.This is for specific use cases as may be defined in future. This tag is not applicable for GST
String
originalTransactionUpiRequestId
The txnId of QR Validation request
35 character alphanumeric. Should always start with merchant prefix provided.
fx optional
Foreign exchange rate
String
mkup optional
Markup rate
String
qrVerToken optional
This is a unique token generated by the International partner for every QR validation request/response, based on which payment is later approved or declined
String
qrStan optional
STAN - System Trace Audit Number. Unique identifier for the transaction used by the merchant
String
mSubCode optional
This is the MCC code of the Merchant
String
mType optional
Merchant's type, Ex:SMALL, LARGE
String
mGenre optional
Genre of sub-merchant
ONLINE, OFFLINE.
mOnBoardingType optional
Onboarding type of sub-merchant
BANK, AGGREGATOR
mRegId optional
Identifier for this QR scan instance, generated by the merchant/network
String
mPinCode optional
Zip code or pin code or postal code of the merchant
String
mTier optional
Denotes the tier of the city on the basis of the population Ex: TIER1, TIER2, TIER3
String
mLoc optional
Location of the Country
Stirng
mInstCode optional
This is w.r.t to end Aggregator identification by the International Network
String
mBrand optional
Brand name of the Merchant
String
mLegal optional
Legal name of the merchant
String
mFranchise optional
Franchise agent name
String
mOwnershipType optional
Type of Ownership, Ex: PROPRIETARY, PARTNERSHIP, PRIVATE, PUBLIC, OTHERS
String
iQrPayLoad optional
Deep Link URL
String
iConCode optional
Represents the country code of the Merchant
String
iNetInstId optional
Unique ID for each international institution provided by UPI
String
payeeAccRef optional
Payee Account reference
String
payeeAccType optional
Type of payee account
String
payeeAccIfsc optional
Payee Account IFSC
String
invoiceName optional
This field is used to track the unique customer name present in the bill. If this tag is present, app should display the value to the customer
String
invoiceNum optional
This field is used to capture the bill invoice date. Only mandatory for GST use case
String
invoiceDate optional
This field is used to capture the bill/ invoice no. If this tag is present, app should display the value to the customer. Only mandatory for GST use case
String
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantRequestId
Merchant generated id for the transaction
As passed in the request
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
customerMobileNumber
Customer mobile number
12 digits mobile number string
payerVpa
Customer vpa used for the payment
As passed in the request
payeeMcc
MCC for the payee
String
payeeMerchantCustomerId optional
Merchant generated unique id for customer who received the payment. Only if it is an onus P2P transaction.
String
payeeName optional
Name of the upi user who received the payment. Only if payment is done to a non A/C+IFSC vpa.
String
payeeActype
Account type of the customer who received the payment
String
payerActype
Account type of the customer who sends the payment
String
payeeIfsc
Account ifsc of the customer who received the payment
String
payerIfsc
Account ifsc of the customer who sends the payment
String
payeeVpa
Vpa of the upi user who received the payment
something@handle
refUrl
Reference url for the intent transaction
String
bankAccountUniqueId
Unique id for the selected bank account
As passed in the request
bankCode
Bank code of the account which was used
Valid bank IIN
maskedAccountNumber
Masked account number of the account which was used
XXXX123456
amount
Amount for the payment
As passed in the request
transactionType
Type of payment
As sent in request
transactionTimestamp
Timestamp of when the transaction was attempted
YYYY-MM-DDTHH:MM:SS+05:30
gatewayTransactionId
Transaction id returned by gateway
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
gatewayReferenceId
Reference id returned by the gateway
String
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
gatewayPayerResponseCode optional
Response code returned by gateway
String
gatewayPayeeResponseCode optional
Response code returned by gateway
String
gatewayPayerReversalResponseCode optional
Response code returned by gateway
String
gatewayPayeeReversalResponseCode optional
Response code returned by gateway
String
udfParameters optional
Udf parameters as passed in the request
JSON string
gatewayResponseCode
gatewayResponseStatus
Description
00
SUCCESS
Payment Success.
Z9
FAILURE
Insufficient funds in customer (remitter) account.
Z8
FAILURE
Per transaction limit exceeded as set by remitting member.
Z7
FAILURE
Transaction frequency limit exceeded as set by remitting member.
Z6
FAILURE
Number of pin tries exceeded.
ZM
FAILURE
Invalid mpin.
Else
FAILURE
Any other reason.
UA2
Version/Tags not supported by PSP/Bank
Payer PSP not supported for "FOR" transactions
U16
Risk Threshold exceeded
NPCI FRM sends response with the risk score which has breached the NPCI configured FRM limit
U30
Debit has been failed
Remitter bank validates customer international activation and decline the request
U12
Amount or currency mismatch
FX value incorrect error code
U31
Credit has been Failed
International entity validates the verification token provided in the Validate QR response and decline the transaction with response code "IV" / Merchant fails to send confirmation to international network
U29
Address resolution is failed
International entity validates the QR Expiry provided in the Validate QR response and declines the transaction with response code "PE"
Additional Error Codes
responseCode
Meaning
DUPLICATE_REQUEST
Duplicate merchantRequestId or upiRequestId used for the transaction
Delegate Payments
The below APIs should be called post the Device Binding is completed.
Manage VPA
Incase a user is creating a VPA without a Bank Account, merchant should call the below API to create VPA without a Banking Instrument
Alphanumeric string with dot(.). Maximum length is 256.
action
Action to be performed on vpaAccounts
ADD_VPA, DELETE_VPA
customerVpa
Vpa on which Action is to be perfomed
something@handle
flags optional
flags to make decisions for various vpa
array of flags specified in table below
udfParameters optional
Stringified JSON for udf parameters
JSON string
Flag
Description
DelegateVpa
Specify that vpa being added doesn't have a bank account over it.
If nothing is passed in flags everything will be deleted
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
customerMobileNumber
Customer mobile number
12 digits mobile number string
vpas
List of vpas added
Array
Accounts
List of Accounts assosiated with that vpa
Array
DelegateInfo
List of DelegateLinks and DelegateVpas assosiated with that vpa
Object
DelegateLinks
List of Links Assosiated for that MCID
Array of Objects
DelegateVpas
List of Active DelegateVpas for that MCID
Array of Strings
udfParameters optional
Udf parameters as passed in the request
JSON string
VerifyVPA360
This API will be used to verify mobile number and vpa of delegatee by the delegator before initiating a link Request. It will also validate the mapping between vpa and mobileNumber of the delegatee as passed in request.
Note:
You will need to send x-api-version: 1 in headers.
ifsc ,iin ,isMerchant ,isMerchantVerified ,mcc , featureTags and merchantType will not be applicable in delegate validation
35 character alphanumeric. Should always start with merchant prefix provided.
vpa
VPA to be verified
something@handle
mobileNumber
mobile number of the delegatee
String
purposeCode
purposeCode of api call
87 for PARTIAL Delegation and 59 for FULL Delegation
merchantCustomerId optional
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
gatewayTransactionId
Transaction id returned by gateway
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
vpa
Vpa as passed in the request
String
mobileNumber
mobile number of the delegatee
String
name optional
Name of the customer
String
ifsc optional
IFSC code of the account linked to this VPA
String
iin optional
IIN code of the account linked to this VPA
String
isMerchant
Flag indicating whether the VPA is of merchant or not
Boolean string
isMerchantVerified optional
Flag indicating whether merchant is verified or not
Boolean string
mcc optional
Merchant Category Code for the merchant whose VPA is passed
String
merchantType optional
Merchant Type for the merchant whose VPA is passed
JSON
udfParameters optional
Udf parameters as passed in the request
JSON string
featureTags optional
This will be an array of feature values, each having it's own significance as decided by NPCI
Array of strings
Manage Delegate Links
This API will be there to manage delegate links by both primary and secondary. Linking can only be done by a Delegator but Delinking can be done by both Delegator and Delegatee. Same API will also be used by Delegatee to approve the linking request. In case of action = LINK, the API will be async. In all other cases, it will be sync.
Its is used to initiate the linking by Delegator to a Delegatee
DELINK
It is used to perform Delinking operation either by Delegator or Delegatee.
APPROVE
It is used to approve the delegate link request by Delegatee.
DECLINE
It is used to decline the delegate link request by Delegatee.
CHECK
It is used to check the status of the link either by Delegator or Delegatee.
UPDATE
It used to perform updates on the link between Delegator and Delegatee. Will be application only in case of FULL Delegates. Can only be performed by Delegator.
CHECK_BALANCE
It is used to check the remaining balance (in case of a FULL delegation relation).
CONVERT_TO_FULL
It is used to convert a PARTIAL linking to FULL linking. Can be done by Delegator only
CONVERT_TO_PARTIAL
It is used to convert a FULL linking to PARTIAL linking. Can be done by Delegator only
MARK_LINK_EXPIRED
The Delegator can mark the link as expired if the Delegatee does not respond after the DelegateLink expiry time has passed.Can be done by Delegator only
Alphanumeric string with dot(.). Maximum length is 256.
upiRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with merchant prefix provided.
linkType
type of linking
FULL or PARTIAL
amount optional
Amount in case of FULL Delegates
String
bankAccountUniqueId optional
Unique id for the selected bank account for FULL Delegates
As passed in the request
credBlock optional
Encrypted credblock containing user mpin. (in case of Full Delegates )
As returned by Common Library
currency
Currency code
String - INR
mandateName optional
Name of the Mandate only in case of Full Delegate
String
mcc optional
Merchant category code
String
merchantRequestId
Merchant generated id for the mandate request
35 character alphanumeric unique id.
delegateeName
Name of the delegatee
String
delegateeMobileNumber optional
Only required in link call
Numeric
refUrl optional
It is mainly kept for future purpose for invoice in inbox feature, if nothing is passed then a default value is set for this tag and same will be send back in response.
String
remarks optional
Any linking summary
String
udfParameters optional
Stringified JSON for udf parameters
JSON string
validityEnd optional
Date before which mandate can be execute
String with proper date format YYYY/MM/DD
refCategory optional
Details for refUrl, whether it is 01 (advertisement), 02(Invoice). If nothing is passed, a default value of "00" is set up and same
purpose optional
purposeCode of api call
87 for PARTIAL Delegation and 59 for FULL Delegation
documentType optional
The document type used for linking. Mandatory for FULL Delegation
The corresponding document number for selected documentType. Mandatory for FULL Delegation
String
relation
The relation between Delegator and Delegatee.
Child, Parent, Spouse, Sibling, Domestic Employee, Small Business Employee
Note:
CredBlock is required in FULL Delegate LINK request, DELINK performed by DELEGATOR for FULL Delegates and UPDATE operation perform by Delegator for FULL Delegates
Update for FULL delegation can be done by DELEGATOR only.
Conversion can be done by DELEGATOR only.
Request Parameter table
Parameter
LINK
DELINK
APPROVE
DECLINE
CHECK
UPDATE
CHECK_BALANCE
CONVERT_TO_FULL
CONVERT_TO_PARTIAL
MARK_LINK_EXPIRED
delegatorVpa
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
delegateeVpa
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
deviceFingerPrint
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
expiry
Mandatory
Not Required
Not Required
Not Required
Not Required
Not Required
Not Required
Mandatory
Mandatory
Not Required
initiatedBy
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
merchantCustomerId
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
upiRequestId
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
linkType
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
amount
Mandatory if FULL
Not Required
Not Required
Not Required
Not Required
Mandatory
Not Required
Mandatory
Not Required
Not Required
bankAccountUniqueId
Mandatory if FULL
Not Required
Not Required
Not Required
Not Required
Not Required
Not Required
Mandatory
Not Required
Not Required
credBlock
Mandatory if FULL
Mandatory if FULL
Not Required
Not Required
Not Required
Mandatory if FULL
Not Required
Mandatory
Mandatory
Mandatory
currency
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
mandateName
Mandatory if FULL
Not Required
Not Required
Not Required
Not Required
Optional
Not Required
Mandatory
Not Required
Not Required
merchantRequestId
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
delegateeName
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
delegateeMobileNumber
Mandatory
Not Required
Not Required
Not Required
Not Required
Not Required
Not Required
Mandatory
Mandatory
Mandatory
refUrl
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
validityEnd
Mandatory if FULL
Not Required
Not Required
Not Required
Not Required
Mandatory
Not Required
Mandatory
Not Required
Not Required
refCategory
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
mcc
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
remarks
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Response Body
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
action
Link action to be performed
LINK, DELINK, APPROVE, DECLINE, CHECK, UPDATE and CHECK_BALANCE
amountUsed optional
Amount exhausted in the current cycle of 30 days (applicable in case of Full Delegation)
String
currentCycleEnd optional
End date of the current Full Delegation cycle. Renews every 30 days
String with proper date format YYYY/MM/DD
delegatorVpa
Delegator Vpa
As passed in the request
delegateeVpa
Delegatee Vpa
something@handle
bankAccountUniqueId optional
Unique id for the selected bank account for FULL Delegates
As passed in the request
deviceFingerPrint
Device fingerprint of the customer
String
merchantId
Unique id for merchant.
String
merchantChannelId
Unique id for the channel via which request is made.
Merchant generated unique id for customer. It will not be present if 'PAYEE' is merchant.
umn optional
Umn of Mandate in case of Full Delegation
String
currency
Currency code
String - INR
mandateName optional
Name of the Mandate in case of Full Delegate
String
mcc optional
Merchant category code
String
merchantRequestId
Merchant generated id for the link request
35 character alphanumeric unique id.
delegateeName
Name of the Delegatee
String
refUrl
Reference url for the link. It is mainly kept for future purpose for invoice in inbox feature, if nothing is passed then a default value is set for this tag and same will be send back in response.
String
remarks optional
Any link summary
String
udfParameters optional
Stringified JSON for udf parameters
JSON string
validityEnd optional
Date till which link can be executed
String with proper date format YYYY/MM/DD
refCategory optional
Details for refUrl, whether it is 01 (advertisement), 02(Invoice). If nothing is passed, a default value of "00" is set up and same
LINKING REQUEST CALLBACK
Callback to inform Delegatee in case of any incoming linking request received.
The corresponding document number for selected documentType only in case of FULL Delegation
String
relation optional
The relation between Delegator and Delegatee.
Child, Parent, Spouse, Sibling, Domestic Employee, Small Business Employee
LINK STATUS CALLBACK
Callback to inform both the parties about the LINK status
DELEGATE_LINK_STATUS
Will sent to Delegator to convey the status of LINK request initiated. Will be triggered to both the party of any change is happened on the link like update or delink operation.
It will be done by delegatee to initiate a payment request to delegator.
APPROVE_PAY
It will be used by delegator to approve a delegate payment request.
DECLINE_PAY
It will be used by delegator to decline a delegate payment request.
ACK
It will be used to send a success acknowledgement of delegate payment request.
PAY
It will used to PAY a delegate payment via other PSP.
CHECK
It will be used to check the status of a transaction with a maximum of 3 CHECK calls allowed till expiry of payment request (can only be used in case of PARTIAL Delegation)
Request
Parameter
Description
Values
merchantCustomerId
Merchant generated unique profile id for customer. It will not be present if role passed in request is PAYEE and payeeVpa is of merchant.
Alphanumeric string with dot(.). Maximum length is 256.
deviceFingerPrint
Device fingerprint of the customer. It is required if mandate is initiatedBy Payer.
String
merchantRequestId optional
Merchant generated id for the mandate request
35 character alphanumeric unique id.
delegatorVpa
Vpa of the customer linked to this account
As passed in the request
delegateeVpa
secondary vpa which added as delegatee vpa
something@handle
payeeVpa
Vpa of the UPI user who receives the payment
something@handle
payerVpa optional
Delegator VPA which is to be used to make the payment
As passed in request.
payerName optional
Name of the payer.
String
payeeName optional
Name of the upi user who received the payment. Only if payment is done to a non A/C+IFSC vpa.
String
amount
Amount for the payment
As passed in the request
action
type of request
REQUEST, ACK, APPROVE, DECLINE,
bankAccountUniqueId optional
Unique id for the selected bank account
As passed in the request
accountReferenceId optional
Unique reference ID for the selected Account.
String
ifsc optional
Ifsc for the bank account as returned by NPCI
String
credBlock optional
Encrypted credblock containing user mpin
As returned by Common Library
upiRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with merchant prefix provided.
remarksoptional
Any transaction summary
50 characters, alphanumeric, space and hyphen
expiry optional
Expiry of Linking Request (in minutes)
String (Max value can be 10)
currency optional
Currency code
String - INR
transactionType optional
Type of payment
String
linkType optional
type of linking
FULL or PARTIAL
transactionReference optional
Transaction reference id
String
refUrl optional
Invoice as sent by merchant or reference to the transaction in the form of url.
refCategory optional
Details for refUrl, whether it is 01 (advertisement), 02(Invoice). If nothing is passed, a default value of "00" is set up and same
This api returns the registration and account information maintained at the PSP for the customer along with the Delegate Info which contains the Delegate Vpas and Delegate Links. Merchants can use this api to periodically sync data with the PSP.
Note
You can add --header 'x-api-version: 4' to get UpiNumbers along with the DelegateInfo linked with the merchantCustomer.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
udfParameters optional
Stringified JSON for udf parameters
JSON string
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
customerMobileNumber
Customer mobile number as per device binding
12 digits mobile number string
deviceFingerPrint
Fingerprint of the customer device
String
deviceId
Unique identifier for the customer device
String
manufacturer
Manufacturer of the customer device
String
model
Model of the customer device
String
version
Version of the operating system on the customer device
String
os
Operating system running on the customer device
String
ssid
Identifier of the SIM used to send the SMS
String
packageName
Package name of the UPI application
String
vpaAccounts
Vpa account mapping of the customer
Array of vpa accounts
delegateInfo optional
DelegateInfo of the Customer
array of DelegateLinks and DelegateVpas
DelegateLinks
Contains the link info of that DelegateLink
array of Objects with the DelegateLink info
DelegateVpas
Contains All the Vpas which are active for Delegate Payments
Array of Vpas
udfParameters optional
Udf parameters as passed in the request
JSON string
Primary Vpa optional
Vpa in case of User is a Delegator
String
Upi Numbers
Upi Numbers Active for that merchantCustomerId
array of Strings
Mobile Number Revocation List Deactivation Callbacks
Revoke Active Mandates
Since the merchantCustomer is inactive, any execution or update will fail with QS (PAYER PROFILE DOES NOT EXIST).
Notify merchant with MANDATE_STATUS_UPDATE callback.
Amount of Mandate. Numeric string with two decimals.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount. If amountRule is EXACT, then mandate should always be executed for the same amount.
gatewayMandateId
Refers to the upiRequestId used during creation of the mandate.
gatewayResponseCode
Response code returned by gateway
gatewayResponseMessage
Response message returned by the gateway for the mandate.
gatewayResponseStatus
Response status returned by the gateway for the mandate.
initiatedBy
Describes whether PAYER or PAYEE initiated the mandate.
mandateName
Name of the mandate as provided by the initiator.
merchantChannelId
Unique ID for the channel via which the mandate request is made.
merchantCustomerId
Merchant-generated unique ID for the customer.
merchantId
Unique identifier for the merchant.
orgMandateId
Refers to the original upiRequestId used during creation of the mandate.
payeeVpa
Virtual Payment Address (VPA) of the payee involved in the mandate.
payerRevocable
Indicates whether the mandate can be revoked by the payer. If set to true, the payer can revoke the mandate. Default is true for recurring mandates.
payerVpa
Virtual Payment Address (VPA) of the payer involved in the mandate.
purpose
Purpose code associated with the mandate, indicating the reason for the transaction.
recurrencePattern
Recurrence pattern for the mandate. Possible values include ONETIME, DAILY, WEEKLY, etc.
role
Role of the customer in the mandate. Either PAYER or PAYEE.
shareToPayee
Indicates whether the mandate should be shared with the payee. Default is true.
status
Current status of the mandate. Possible values include DORMANT.
subMerchantChannelId
Unique ID for the channel via which the mandate request is made.
subMerchantId
Unique identifier for the merchant.
transactionType
Type of transaction. For mandate creation and updates, this will be UPI_MANDATE.
type
Callback event type. For status updates, this will be MANDATE_STATUS_UPDATE.
umn
VPA used for execution of the mandate.
validityEnd
Date until which the mandate can be executed.
validityStart
Date after which the mandate can be executed.
Deregister UPI Lite Account
Since merchantCustomer wont be active so any execution and updation will fail with PAYER PROFILE DOES NOT EXIST
Notify the merchant with a UPI_LITE_STATUS_UPDATE callback
Amount of Mandate. Numeric string with two decimals.
amountRule
Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount. If amountRule is EXACT, then mandate should always be executed for the same amount.
gatewayMandateId
Refers to the upiRequestId used during creation of the mandate.
gatewayResponseCode
Response code returned by gateway
gatewayResponseMessage
Response message returned by the gateway for the mandate.
gatewayResponseStatus
Response status returned by the gateway for the mandate.
initiatedBy
Describes whether PAYER or PAYEE initiated the mandate.
mandateName
Name of the mandate as provided by the initiator.
merchantChannelId
Unique ID for the channel via which the mandate request is made.
merchantCustomerId
Merchant-generated unique ID for the customer.
merchantId
Unique identifier for the merchant.
orgMandateId
Refers to the original upiRequestId used during creation of the mandate.
payeeVpa
Virtual Payment Address (VPA) of the payee involved in the mandate.
payerRevocable
Indicates whether the mandate can be revoked by the payer. If set to true, the payer can revoke the mandate. Default is true for recurring mandates.
payerVpa
Virtual Payment Address (VPA) of the payer involved in the mandate.
purpose
Purpose code associated with the mandate, indicating the reason for the transaction.
recurrencePattern
Recurrence pattern for the mandate. Possible values include ONETIME, DAILY, WEEKLY, etc.
role
Role of the customer in the mandate. Either PAYER or PAYEE.
shareToPayee
Indicates whether the mandate should be shared with the payee. Default is true.
status
Current status of the mandate. Possible values include ACTIVE, EXPIRED, etc.
subMerchantChannelId
Unique ID for the channel via which the mandate request is made.
subMerchantId
Unique identifier for the merchant.
transactionType
Type of transaction. For mandate creation and updates, this will be UPI_MANDATE.
type
Callback event type. For status updates, this will be MANDATE_STATUS_UPDATE.
This api fetches customer accounts from NPCI. accounts will be present in the response only if gatewayResponseCode = "00". In case there are one or more accounts fetched, vpaSuggestions will be sent in response.
Note: In case merchant retries this api, the accounts will be fetched from NPCI again.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256.
upiRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric. Should always start with merchant prefix provided.
deviceFingerPrint
Device fingerprint of the customer
String
bankCode
Bank code (IIN) of selected bank
String
purpose
Defines the purpose code of the transaction
AV in this case
initiator
User who initiates the request
MAKER/ CHECKER in this case
udfParameters optional
Stringified JSON for udf parameters
JSON string
accountType optional
Account Type(In CC TPAP should send accountType as CREDIT, in other cases they can skip sending this field)
String
packageName optional
Package name of the UPI application
String
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantCustomerId
Merchant generated unique profile id for customer as passed in the request
String
customerMobileNumber
Mobile number of the customer
12 digits mobile number string
gatewayTransactionId
Transaction id returned by gateway
String
gatewayResponseStatus
Response status returned by gateway
SUCCESS, FAILURE
gatewayResponseCode
Response code returned by gateway
String
gatewayResponseMessage
Response message for code returned by gateway
String
accounts optional
Bank accounts as returned by NPCI for the customer mobile number
This API is used to perform a Checker approval or decline action on a Pay transaction, where the initiator is CHECKER.
The checker either approves (APPROVE) or rejects (DECLINE) the payment request initially created by a maker.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric string with dot(.). Maximum length is 256
deviceFingerPrint
Device fingerprint of the customer
String
merchantRequestId
Unique id sent to UPI switch for the request
35 character alphanumeric
payeeVpa
VPA of the payee
something\@handle
payerVpa
VPA of the checker approving/declining the transaction
something\@handle
payeeName
Name of the payee
String
amount
Amount for transaction
Numeric string with two decimals
action
Action to be taken by the checker
APPROVE, DECLINE
bankAccountUniqueId
Unique id for the bank account
sha256(accountNumber + ifsc.substr(0,4))
accountReferenceId
Reference ID for the selected account
String
ifsc
IFSC for the bank account
String
credBlock
Encrypted credblock containing user mpin
As returned by Common Library
upiRequestId
Original UPI request id from the Maker’s transaction
35 character alphanumeric
initiator
Who initiates the approval/decline
CHECKER
remarks
Any comments or notes added by the checker
50 characters max
expiry
Expiry timestamp for the approval request
YYYY-MM-DDTHH:MM:SS+05:30
currency
Currency code
INR
refUrl
Callback URL or additional info URL provided by the merchant
HTTPS URL
refCategory
Reference category to indicate invoice/bill/ad type
00–02 etc.
mcc
Merchant Category Code for the payee
Numeric string
initiationMode
Mode of initiation
MOBILE, QR, etc.
purpose
Purpose code of the transaction
Refer Purpose code section
udfParameters optional
Stringified JSON for udf parameters
JSON string
iat
Current Epoch Unix timestamp in milliseconds
13 digits
featureTags
Array of feature values as decided by NPCI
Array of strings
location
Location of the checker
String (max 40)
geocode
Geocode of the checker
Numeric string
ip
IP address of the checker device
IPv4/IPv6 string
capability
Hardware capability string representing device features
String (max 99)
Response parameters
Parameter
Description
Values
status
PSP status of the API
SUCCESS, FAILURE
responseCode
PSP response code for the API
Refer error code section
responseMessage
PSP response message for the API
Refer error code section
udfParameters optional
Udf parameters as passed in the request
JSON string or null
merchantId
Unique id for the merchant as passed in request headers
String
merchantChannelId
Unique id for the merchant channel as passed in request headers
String
merchantCustomerId
Merchant generated unique profile id for customer
String
merchantRequestId
Request id associated with the Maker’s transaction
The Multisignatory Pay – Status Check API is used to perform a status check of a Maker–Checker transaction flow.
Depending on the initiator value in the request (MAKER or CHECKER), the corresponding object (maker or checker) is returned inside the payload along with transaction details.
Request parameters
Parameter
Description
Constraints
merchantCustomerId
Merchant generated unique profile id for customer
Alphanumeric, max 256
deviceFingerPrint
Device fingerprint of the customer
String
merchantRequestId
Unique id for the request
35 character alphanumeric
payeeVpa
VPA of the payee
something\@handle
payerVpa
VPA of the other party (maker/checker)
something\@handle
payeeName
Name of the payee
String
amount
Amount for transaction
Numeric string with two decimals
action
Action to be taken
Always CHECK
upiRequestId
Original UPI request id of Maker’s transaction
35 character alphanumeric
initiator
Identifies who is checking status
MAKER or CHECKER
udfParameters optional
Custom UDF parameters as stringified JSON
JSON string
iat
Current Epoch Unix timestamp (ms)
13 digits
featureTags
Array of feature values
Array of strings
location
Location of the initiator
String (max 40)
geocode
Geocode of the initiator
Numeric string
ip
IP address of the initiator’s device
IPv4/IPv6 string
capability
Hardware capability string representing device features
String (max 99)
Response parameters
Parameter
Description
Values/Type
status
API status
SUCCESS, FAILURE
responseCode
PSP response code
String (e.g., 00)
responseMessage
PSP response message
String
udfParameters
Udf parameters as passed in request
JSON or null
merchantId
Unique id for merchant
String
merchantChannelId
Merchant channel id
String
merchantCustomerId
Customer profile id
String
merchantRequestId
Unique request id
String
customerMobileNumber
Customer’s mobile number (if available)
12 digit string
amount
Transaction amount
Decimal string
expiryTimestamp
Expiry time of transaction
YYYY-MM-DDTHH:MM:SS+05:30
payeeVpa
VPA of payee
something\@upi
payerVpa
VPA of payer
something\@upi
mcc
Merchant Category Code
String
payeeName
Name of payee
String
refUrl
Reference URL
HTTPS URL
remarks
Remarks added by initiator
String
purpose
Purpose code of transaction
String
transactionStatus
Current status of transaction
PENDING, APPROVED, DECLINED
transactionTimestamp
Timestamp of transaction
YYYY-MM-DDTHH:MM:SS+05:30
gatewayTransactionId
Transaction id returned by gateway
String
gatewayReferenceId
Reference id from gateway
String
gatewayResponseStatus
Gateway status
SUCCESS, FAILURE
gatewayResponseCode
Gateway code
String
gatewayResponseMessage
Gateway message
String
maker
Maker object (if applicable, when initiator=MAKER)
See Maker object
checker
Checker object (if applicable, when initiator=CHECKER)
The Deregistration Callback is triggered by the Issuer Bank when a customer who is already linked with TPAP A attempts to register the same corporate account with TPAP B.
During the ReqRegMob call from TPAP B, the issuer bank validates if the merchantCustomerId and account details are already linked with another TPAP/PSP.
If so, the issuer fires a DEREGISTERED callback to the previously linked TPAP to remove the old mapping.
This ensures that a customer’s account remains linked to only one TPAP/PSP at a time, avoiding duplicate bindings.
Parameter
Description
gatewayTransactionId
Unique transaction ID generated for the deregistration event.
initiationMode
Mode of initiation (API / MOBILE_APP / etc.).
merchantChannelId
Unique ID for the merchant’s channel.
merchantCustomerId
Unique customer profile ID generated by the merchant.
merchantId
Unique merchant identifier (as passed in request headers).
payerVpa
VPA of the payer whose account is being deregistered.
payerName
Name of the payer (optional).
purpose
Purpose for deregistration (e.g., "Duplicate TPAP linking").
refCategory
Optional reference category, if any.
refUrl
Optional reference URL.
remarks
Additional comments provided by the issuer bank.
transactionTimestamp
Timestamp of deregistration in ISO 8601 format.
action
Always DEREGISTERED for this callback type.
type
Type of object, always MULTI_SIG_PAYMENT.
UDIR Refunds Overview
NPCI has introduced a new category as part of UDIR ReqComplaint API : ReqComplaint - Refund for online refunds. This refund is processed through NPCI via backoffice. TPAPs have to make
necessary changes in order to consume PSP initiated UDIR Refund callbacks. TPAP is also expected to show the mapping of this refund against the original transaction.
Adding below the changes