Notify Redemption
Once the subscription is set up, the next step is to collect the redemption amount based on the selected subscription frequency.
Redemption involves two steps:
- Notify: Inform the user about the upcoming payment.
- Execute: Debits the redemption amount from the user. This step is required only when auto-debit is set to false; if set to true, the debit is processed automatically by PhonePe Payment Gateway.
⚠️ 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.
API Endpoint
| 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": "Tx1234",
"amount":100,
"paymentFlow": {
"type": "SUBSCRIPTION_CHECKOUT_REDEMPTION",
"merchantSubscriptionId": "Sub123",
"redemptionRetryStrategy": "STANDARD",
"autoDebit": false
}
}Request Parameters
| Parameter Name | Data Type | Description | Mandatory | Constraints |
merchantOrderId | String | Unique merchant order id generated by merchant | Yes | Max Length: 63 charactersNo Special characters allowed except underscore “_” and hyphen “-“ |
amount | Long | Transaction amount in paise. | Yes | Min Value: 100 paise (₹ 1) |
paymentFlow | Object | Contains additional configuration required to process the selected payment flow. | Yes | |
paymentFlow.type | String | Specifies the type of payment flow to be executed. | Yes | Possible Value: SUBSCRIPTION_CHECKOUT_REDEMPTION |
paymentFlow.merchantSubscriptionId | String | Unique ID for the subscription associated with the payment flow. | Yes | |
paymentFlow.redemptionRetryStrategy | String | Defines the retry behavior in case a debit attempt fails. | No | |
paymentFlow.autoDebit | boolean | Indicates whether automatic debit is enabled for the subscription. | No |
Response
Sample Response
{
"orderId": "OMO2604141043461445825945V",
"state": "NOTIFICATION_IN_PROGRESS",
"expireAt": 1776489226123,
"nativeOtpEnabled": false
}Response Parameters
| Parameter Name | Description |
| Unique internal orderId generated by PhonePe Payment Gateway. |
| Current status of the order. |
expireAt | Expiry time of the order in epoch format (milliseconds). |