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.redemptionRetryStrategy is set to CUSTOM:
    • Merchants must retry until a terminal status (COMPLETED or FAILED) 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
  • When paymentFlow.redemptionRetryStrategy is 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.
EnvironmentHTTP MethodAPI
SandboxPOSThttps://api-preprod.phonepe.com/apis/pg-sandbox/checkout/v2/subscriptions/notify
ProductionPOSThttps://api.phonepe.com/apis/pg/checkout/v2/subscriptions/notify
Request Headers
Header NameHeader Value
Content-Typeapplication/json
AuthorizationO-Bearer <merchant-auth-token>
Sample Request
{
    "merchantOrderId": "<merchantOrderId>",
    "amount":47900,
    "paymentFlow": {
        "type": "SUBSCRIPTION_CHECKOUT_REDEMPTION",
        "merchantSubscriptionId": "<merchantSubscriptionId>",
        "redemptionRetryStrategy": "STANDARD",
        "autoDebit": false
    }
}
Request Parameters
Parameter NameData TypeMandatory(Y/N)DescriptionContraints
merchantOrderIdStringYUnique merchant order id generated by merchantMax Length = 63 charactersNo Special characters allowed except underscore “_” and hyphen “-“
amountLongYOrder amount in paisaMin Value = 1
paymentFlowObjectYAdditional details required by this flow 
paymentFlow.typeStringYType of payment flow. Valued Allowed = [ SUBSCRIPTION_CHECKOUT_REDEMPTION ]
paymentFlow.merchantSubscriptionIdStringYmerchant subscription Id 
paymentFlow.redemptionRetryStrategyStringNRedemption Retry Strategy
paymentFlow.autoDebitbooleanNautoDebit
Sample Response
{
    "orderId": "OMO2603101528244777924698BW",
    "state": "NOTIFICATION_IN_PROGRESS",
    "expireAt": 1773309503656
}
Response Parameters
Parameter NameDescription
orderIdPayment Gateway generated internal order ID
stateOrder state
expireAtExpiry in Epoch Timestamp(in milliseconds)
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.

In next section, how the amount is executed and debited from the user’s bank account.

Is this article helpful?