Submit a request to revoke an existing UPI Mandate. Once revoked, the associated schedules and plans are also stopped.
API Details
| Field | Value |
|---|---|
| Method | POST |
| Endpoint | /mandate-modify |
| Base URL | {{BASE_URL}} |
| Content-Type | application/json |
Authentication
Include the following credentials in the JSON request body:
| Parameter / Header | Location | Type | Mandatory | Description |
|---|---|---|---|---|
clientId | JSON body | String | Yes | Merchant client ID from the WowPe Dashboard. |
secretKey | JSON body | String | Yes | Merchant secret key from the WowPe Dashboard. Keep it on your server. |
Content-Type | Header | String | Yes | application/json |
Both credential fields must be included in every request.
Request Parameters
The authentication fields above are required in addition to the following parameters:
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
orderId | String | Yes | Merchant mandate reference. |
requestType | String | Yes | Use REVOKE to submit a mandate revocation request. |
amount | Null | Include as shown | Send null in the request. |
validityEnd | Null | Include as shown | Send null in the request. |
remarks | String | Not specified | Remarks associated with the revocation request. Requiredness is not specified. |
Sample Request
Request Body
{
"clientId": "YOUR_CLIENT_ID",
"secretKey": "YOUR_SECRET_KEY",
"orderId": "ORD10001",
"requestType": "REVOKE",
"amount": null,
"validityEnd": null,
"remarks": "Customer cancelled"
}
cURL Request
curl --request POST '{{BASE_URL}}/mandate-modify' \
--header 'Content-Type: application/json' \
--data-binary '@mandate-modify.json'
Sample Response
Illustrative response from the supplied integration guide; not a verified UAT capture.
{
"statusCode": 2,
"message": "Mandate modification request accepted",
"orderId": "ORD10001",
"requestRef": "MM261110113012345678",
"umn": "722710901d824182a759192d859e8c7e@ptyes",
"requestExpiryTime": "2026-11-10T11:35:12"
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
statusCode | Number | Operation status: 0 = Failed, 1 = Succeeded, 2 = Pending. Interpret the business-status fields separately. |
message | String | Operation or plan message. It is not a substitute for the relevant status field. |
orderId | String | Merchant mandate reference. |
requestRef | String | Modification request reference used for status lookup. |
umn | String | Returned unique mandate identifier. |
requestExpiryTime | String | Request expiry time returned by the API. |
Error Handling
| Condition | Handling |
|---|---|
statusCode: 0 | Operation failed. Inspect the message and any operation-specific status fields. |
statusCode: 2 | Operation is pending. Use the Request Status API to check the outcome. |
| Timeout or unknown outcome | Check the existing operation before submitting another mutation. |
The supplied integration guide does not define endpoint-specific HTTP status mappings or a complete error response structure. Confirm these in UAT before documenting them.
Important Notes
- Use
requestType: "REVOKE"to submit a revocation request. - Preserve
amountandvalidityEndasnullin the request until the API's handling of omitted and null fields is confirmed. - Store the returned
requestRef. It is required to track the revocation request through the Request Status API. - An initial response with
statusCode: 2indicates that the request is pending. Do not treat the mandate as revoked solely because the request was accepted. - After checking the request status, verify that the Mandate Details API returns
mandateStatus: "Revoked". - Customers can also revoke a mandate through their UPI app. The Mandate Details API will then reflect
mandateStatus: "Revoked". - The impact on any debit already in flight requires backend confirmation.
- The supplied integration guide does not support changing the amount or validity end date using
requestType: "UPDATE"for QR/intent mandates. Revoke the existing mandate and create a new one for such changes.
What's Next
Use the Request Status API with the returned requestRef to track the revocation request.
Once processed, use the Mandate Details API to verify that mandateStatus is Revoked.
