#Revoking a mandate
PREREQUISITES
🌟 UPI mandates generic operations ↗Revoking a UPI mandate ensures no further actions can be taken on it, including updates to the mandate, pre-debit notifications against mandate, or execution of mandate.
Merchants or aggregators can revoke a mandate by using the collect flow by calling the revoke mandate API, or customers can do so from their UPI app. Jump to the below sections to see how the following scenarios are handled—
#Customer initiated revoking
The process for revoking a mandate initiated from the customer's UPI app is described in the below diagram

Post this, once the customer initiates mandate revoke process on their UPI app, the merchant will receive webhooks for following events
mandate_operation.revoke.initiated
, if mandate revoke is initiated successfullymandate.revoked
, if mandate revoke is successfulmandate_operation.revoke.success
, if mandate revoke is successfulmandate_operation.revoke.failed
, if mandate revoke failsmandate.live
, if mandate revoke fails
Read more about mandate status notifications here and mandate revoke operation notifications here
After receiving mandate_operation.revoke.initiated
notification,, the merchant can also use check mandate operation status API to check if mandate revoke is successful
A single block multi debit mandate can only be revoked via merchant initiated collect flow and not via customer initiated flow
#Merchant initiated revoking
The process for revoking a mandate by the merchant is described in the below diagram

Staging host | https://umap.setu.co/api |
---|---|
Method | PUT |
Path | /v1/merchants/mandates/{mandateId}/revoke |
Header | merchantId Authorization : Bearer <insert_token_here>. Generate this token using OAuth.Content-Type —will be application/json |
Sample request
{"expireAfter": 120,"merchantReferenceId": "ABC1234789"}
Sample response
{"expireAfter": 120,"id": "01ARZ3NDEKTSV4RRFFQ69G5FAV","mandateId": "01ARZ3NDEKTSV4RRFFQ69G5FAV","merchantId": "01ARZ3NDEKTSV4RRFFQ69G5FAV","merchantReferenceId": "ABC1234789","mode": "collect","status": "initiated","txnId": "BTTZrc5gDFkuCr3n3I0ey4aNtzLOLR7K7aR","umn": "c27f5fc30d344e9594fce0afa34f8859@mypsp"}
Post this, once the customer clicks on the revoke mandate notification and enters the mPIN on their UPI app, the merchant will receive webhooks for the following events:
- mandate.revoked (if mandate revoke is successful)
- mandate_operation.revoke.success (if mandate revoke is successful)
- mandate.live (if mandate revoke fails)
- mandate_operation.revoke.failed (if mandate revoke fails)
Read more about mandate status notifications here and mandate revoke operation notifications here
In addition to the notifications, the merchant can also use check mandate operation status API to check if mandate revoke is successful
Please refer to the Document Reference section for checking the API reference and the notifications.
#Check mandate status (optional)
In addition to the notifications sent by UPI Setu, a merchant can use this API to check the status against a mandate revoke.
Staging host | https://umap.setu.co/api |
---|---|
Method | GET |
Path | /v1/merchants/mandate-operations/{id} |
Header | merchantId Authorization : Bearer <insert_token_here>. Generate this token using OAuth.Content-Type —will be application/json |
Sample response
{"amountLimit": 1000,"createdAt": "2023-09-04T12:08:20+0530","endDate": "02012006","expireAfter": 120,"id": "01ARZ3NDEKTSV4RRFFQ69G5FAV","mandateId": "01ARZ3NDEKTSV4RRFFQ69G5FAV","merchantId": "01ARZ3NDEKTSV4RRFFQ69G5FAV","merchantReferenceId": "ABC1234789","mode": "collect","status": "success","txnId": "BTTZrc5gDFkuCr3n3I0ey4aNtzLOLR7K7aR","type": "revoke","umn": "c27f5fc30d344e9594fce0afa34f8859@mypsp"}
id
is a unique ID that is associated with this mandate revoke operation and can be used to track it later.
To know more about all the API params, please refer to the API documentation here.