Register Mandate (Intent)
This API can be used to register a merchant intent mandate. 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. Merchant to add mandate details like recurrence, expiry etc in the URL to initiate mandate request from payer app.
|
Response Param
|
Deeplink URL Param
|
Type
|
|---|---|---|
AmountRule
| amrule
| Mandatory
|
Amount
| am
| Mandatory
|
blockFund
| block
| Conditional
|
First Debit Amount
| fam
| Conditional, read note below
|
HeadOrdId
| orgid
| Optional
|
MandateValidityStart
| validitystart
| Mandatory
|
MandateValidityEnd
| validityend
| Mandatory
|
MandateReccurenceRuleType
| recurtype
| Conditional
|
MandateReccurenceValue
| recurvalue
| Conditional
|
MandateReccurence
| recur
| Mandatory
|
MandateName
| mn
| Mandatory
|
OrderId
| tr
| Mandatory
|
PayeeName
| pn
| Mandatory
|
PayeeVPA
| pa
| Mandatory
|
PayeeMcc
| mc
| Mandatory
|
TxnPurpose
| purpose
| Mandatory. purpose 01 for ONETIME mandate
|
TxnInitiationMode
| mode
| Mandatory
|
TxnQRqrMedium
| qrMedium
| Optional
|
TxnQRqVer
| ver
| Optional
|
PayeeAmountCurrency
| cu
| Mandatory
|
TxnType
| txnType
| Mandatory
|
TxnNote
| tn
| Optional
|
TxnId
| tid
| Mandatory
|
TxnQRExpireTs
| QRexpire
| Optional
|
Revocable
| rev
| Conditional
|
For MCC:7322(Loan Repayment/EMI Collection) where mandate revoking is not allowed, rev=N in deeplink url.
For ONETIME mandate, purpose = 01
In the case of a one-time mandate, a revoke action by the merchant should be performed before the validity end date to release the funds if the execution has not been carried out. Otherwise, the amount will remain blocked at the customer’s bank.
fam param conditions:
1. This should not be zero if the purpose code is 14
2. Should be less than the am, i.e. amount.
For mode information, please check “Initiation Mode” sub-module in “Miscellaneous” module.
Sample Deeplink URL
upi://mandate?amrule=MAX&tn=Merchantmandate&validityend=09112026&mode=04&mn=Merchantmandate&cu=INR&pn=MerchantMandate&purpose=14&fam=1.00&tid=YJP20231009dzY4Kb7aBs9dj22&pa=merchant@yespay&am=10.00&validitystart=27102023&recur=ASPRESENTED&tr=KBREMI2023100950O4DUdHugy54&mc=7322&txnType=CREATE&orgid=000000&rev=N
Host URLs for IOS:
ppe://mandate?
tez://upi/mandate?
paytmmp://mandate?
Merchant can then construct the URI and invoke the APP using chrome intent feature. It can also be used for generating the Dynamic UPI QR & display on Merchant App/Website for users to scan & pay from any UPI App.
The URI must be generated dynamically based on the parameters received in the response. Ensure that there are no spaces in the URI; any spaces should be encoded as %20
TPV use case:
For TPV (Third Party Validation) payerAccountHashes needs to be passed in the request body and the same will be passed back in response along with corresponding values. PayerAccountHashes will be taken as an array so that merchants can send multiple account hashes which will be verified against the account details selected by user shared by NPCI.
PSP will reject the request if the customer approved the mandate with a different account details and send a failure callback to the merchant.
SBMD use case:
This feature allows merchants to block the funds in the customer account (like IPO) and debit as and when customer avails the services. Following constraints have to be taken care of to create a successful SBMD Mandate.
Purpose should be 77.
Recurrence Pattern (MandateReccurence) should be ASPRESENTED.
blockFund should be True.
payerRevocable should be False.

