2. India Unified Payments Interface-UPI
This chapter contains the following sections
l Section 2.1, "Overview of UPI – Pay Request"
l Section 2.2, "UPI Maintenances"
l Section 2.3, "UPI Pay Request – Remitter Bank – Request for Debit Processing"
l Section 2.4, "UPI Pay Request – Beneficiary Bank – Request for Credit Processing"
l Section 2.5, "UPI Non-Financial API – List of accounts linked to Mobile Number"
l Section 2.6, "UPI Payments Message Browser"
2.1 Overview of UPI – Pay Request
l OBPM on receiving ‘Pay Request to Debit (ReqPay_Debit API)’ on behalf of Remitter Bank in an xml format over HTTPS, it is able to process the debit request by debiting the Payer Account and send back response xml along with success/failure response codes to NPCI UPI.
l OBPM upon receiving ‘Pay Request to Credit (ReqPay_Credit API)’ on behalf of Beneficiary Bank in an xml format over HTTPS, it is able to process the credit request by crediting the Payee Account and send back response xml along with success/failure response codes to NPCI UPI.
l OBPM generates Debit/Credit Notifications to Payer/Payee upon completion of accounting.
l OBPM upon receiving ‘List Accounts API’ request in an xml format on behalf of Remitter bank, it is able to identify account numbers and account branch IFSC Codes that are linked for the given customer mobile number and send back response xml to NPCI UPI.
2.1.3 UPI System Connectivity:
l NPCI UPI system connectivity. For all request messages received from NPCI UPI, OBPM generates an acknowledgment message
Following are Financial APIs:
ReqPay
The API is used by Payment Service Providers (PSPs) to initiate both Direct Pay and Collect Pay transactions and process them through various channels, such as IMPS and AEPS.
RespPay
The API is used to send responses for transactions (Direct Pay and Collect Pay) initiated through the ReqPay API back to the PSPs.
ReqAuthDetails
The API is used to authorize a payment and convert PSP-specific payment addresses into common global addresses (such as Aadhaar number, mobile number, or account and provider ID) that NPCI can recognize. This API is called to translate the PSP address and obtain the necessary authorization details.
RespAuthDetails
The API serves as the callback interface for returning details. After processing the ReqAuthDetails API, the PSP should send the authorization response to NPCI by calling the RespAuthDetails API.
Following are Non-Financial APIs:
List Account
This API allows PSPs to retrieve a list of accounts linked to a mobile number by an account provider.
Validate Address
This API is used by PSPs when their customers want to add a beneficiary within the PSP application for sending and receiving money.
Set Credentials
This API is required to provide a unified channel for setting and changing UPI PINs across various account providers.
Reg Mob
This API allows customers to register for mobile banking.
Check Txn Status
This API allows PSPs to request the transaction status. PSPs should request the status only after the specified timeout period.
OTP-Request
This API allows PSPs to request an OTP for a specific customer from an issuer.
Balance-Enquiry
This API allows PSP to enquire balance of a user.
Reg Mob
This API allows customer to register for mobile banking.
Heart Beat Messages
This API is a mechanism for monitoring the UPI system, including tracking connections with PSPs and sending End-of-Day (EOD) reports to PSPs).
Request Pending Messages
This API allows PSPs to request pending messages for a given mobile number or Aadhaar number.
Request Txn Confirmation
This API provides transaction status confirmation from UPI to PSPs. At the end of each transaction, this API will be initiated to the second PSP for status confirmation.
ReqMandate
This API allows the corporate/customer to create a mandate request via UPI.
RespMandate
The API is used for sending back the response of mandate to the initiated PSPs.
ReqAuthMandate
This API is used to authorize a payment and translate PSP-specific payment addresses into common global addresses (such as Aadhaar number, mobile number, or account number with IFSC) that NPCI can understand. This API translates the PSP address and provides the necessary authorization details.
RespAuthMandate
This API is the callback interface used to return details. After processing the “ReqAuthMandate” API, the Payment Service Provider (PSP) should send a response to NPCI by calling the “RespAuthMandate” API with the authorization details.
ReqMandateConfirmation
This API provides the response for the confirmation message received from UPI.
RespMandateConfirmation
This API provides the confirmation message from the PSP to UPI.
Validate Customer API
This API is used to validate unique identifier [PAN] of customer maintained at the customer bank.
Request Mandate API
This API is used to create / modify / revoke the mandate on a customer account.
Request Mandate Confirmation API
This API provide the response confirmation message from NPCI to Remitter Bank or PSP.
Request Pay Service API
This API is used by PSP to send the Debit or Credit transactions to NPCI.
Check Transaction Service API
This API is used to request the transaction status from NPCI.
AuthDetails Service API
This API is sent from NPCI to PSP to validate the virtual payment address.
ValCust Service API
This API is sent from PSP to NPCI to get the PAN number validated against the customer account.
AuthValCustService API
NPCI UPI switch will trigger this API to Payer PSP UPI switch if the VPA address translation is required.
Bank UPI switch API's -
ReqValCust (Validate Customer) API
This API is used to validate unique customer identifiers maintained by the customer's bank. It verifies the customer's government-issued ID against the KYC (Know Your Customer) details stored by the bank.
ReqMandate (Mandate Maintenance) API
This API is used to add / modify / revoke the mandate functionality wherein a customer authorizes future debit from his/her bank account.
ReqMandateConfirmation (Mandate Confirmation) API
If the RespMandate is not received by the NPCI UPI switch, the NPCI UPI switch sends a ReqMandateConfirmation to the bank's UPI switch. The bank will then remove the mandate (if already created) and unblock the amount (if previously blocked).
PSP UPI switch API's -
ReqPay (Request Pay) API
This API is used to initiate a Pay/Collect transaction from the PSP UPI switch to the NPCI UPI switch. If the Payer PSP and Remitter Bank are the same entity, the request from the Payer PSP UPI switch to the NPCI UPI switch will be pre-approved, meaning the customer's account is debited before the request is sent to the NPCI UPI switch.
ReqChkTxn (Check Transaction) API
This API is used to check the status of a financial transaction by sending request to NPCI.
ReqAuthDetails (AuthDetails) API
This API is used to authorize a payment and translate a VPA (Virtual Payment Address) into a common global address format recognized by NPCI. It is called to translate the PSP address and retrieve the necessary authorization details.
ReqValCust (Validate Customer) API
The Payee PSP UPI switch triggers this API to the NPCI UPI switch. This API includes the PAN number that gets validated against a VPA or an account.
ReqAuthValCust (Auth Validate Customer) API
The NPCI UPI switch triggers this API to the Payer PSP UPI switch when VPA address translation is needed. For the ReqAuthValCust API request from the NPCI UPI switch, the PSP validates the VPA and returns the account details in the RespAuthValCust API to the NPCI UPI switch.