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.

Scroll inside to view more
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

Note

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?link icon
paytmmp://mandate?link icon

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.

Note

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.

API Endpoints
Production Link
POST
{{host}}/api/{{uri}}/merchants/transactions/registerIntent
Headers
Body
200 : Success