Notify Redemption
Once the subscription is set up, the next step is to collect the redemption amount based on the selected subscription cycle.
Redemption involves two steps:
- Notify: Inform the user about the upcoming payment.
- Execute: Debit the redemption amount from the user.
⚠️ Validate Subscription State Before Notify!
Always verify that the subscription is in the ACTIVE state using the Subscription Status API before calling the Notify API, to prevent avoidable failures.
⚠️ Validate Subscription State Before Notify!
- When
paymentFlow.redemptionRetryStrategyis set to CUSTOM:- Merchants must retry until a terminal status (
COMPLETEDorFAILED) is reached. - You are limited to one initial attempt and three retries over a maximum of 48 hours.
- Retries must be executed only during the non peak periods – 9:31 PM to 9:59 AM and 1:01 PM to 4:59 PM
- Merchants must retry until a terminal status (
- When
paymentFlow.redemptionRetryStrategyis set to STANDARD:- PhonePe will automatically handle all internal redemption retries for you.
- Retries are managed internally by PhonePe, with a maximum time window of 48 hours to achieve a terminal status.
- Retries must be executed only during the non peak periods – 9:31 PM to 9:59 AM and 1:01 PM to 4:59 PM
- No action or changes are required from the merchant.
- Default Value: STANDARD.
Environment
| Environment | HTTP Method | API |
| Sandbox | POST | https://api-preprod.phonepe.com/apis/pg-sandbox/checkout/v2/subscriptions/notify |
| Production | POST | https://api.phonepe.com/apis/pg/checkout/v2/subscriptions/notify |
Request
Request Headers
| Header Name | Header Value |
Content-Type | application/json |
Authorization | O-Bearer <merchant-auth-token> |
Sample Request
{
"merchantOrderId": "<merchantOrderId>",
"amount":47900,
"paymentFlow": {
"type": "SUBSCRIPTION_CHECKOUT_REDEMPTION",
"merchantSubscriptionId": "<merchantSubscriptionId>",
"redemptionRetryStrategy": "STANDARD",
"autoDebit": false
}
}Request Parameters
| Parameter Name | Data Type | Mandatory(Y/N) | Description | Contraints |
| merchantOrderId | String | Y | Unique merchant order id generated by merchant | Max Length = 63 charactersNo Special characters allowed except underscore “_” and hyphen “-“ |
| amount | Long | Y | Order amount in paisa | Min Value = 1 |
| paymentFlow | Object | Y | Additional details required by this flow | |
| paymentFlow.type | String | Y | Type of payment flow. | Valued Allowed = [ SUBSCRIPTION_CHECKOUT_REDEMPTION ] |
| paymentFlow.merchantSubscriptionId | String | Y | merchant subscription Id | |
| paymentFlow.redemptionRetryStrategy | String | N | Redemption Retry Strategy | |
| paymentFlow.autoDebit | boolean | N | autoDebit |
Response
Sample Response
{
"orderId": "OMO2603101528244777924698BW",
"state": "NOTIFICATION_IN_PROGRESS",
"expireAt": 1773309503656
}Response Parameters
| Parameter Name | Description |
| Payment Gateway generated internal order ID |
| Order state |
expireAt | Expiry in Epoch Timestamp(in milliseconds) |
Try it yourself!
headers
body params
In case you want to check the status of the notify redemption, use the Redemption Order Status API. You will call this API at two different points in your Autopay workflow:
- After Notify Redemption : Call this to ensure the system successfully sent the execution notification to the user.
- After Execute Redemption: Call this to confirm the redemption was successfully executed.
What’s Next?
In next section, how the amount is executed and debited from the user’s bank account.