Redemption Execute

The Redemption API is used to debit the payment from the user’s bank account as part of a recurring subscription. This process is initiated after the Notify step has been completed and serves as the actual payment transaction. By calling this API, the merchant requests the system to initiate the payment transfer to process the required amount from the user’s account.

📘 Check Subscription Status Before Execution!


Before calling the Execute API, you must first verify that the subscription state is ACTIVE by using the Subscription Status API. This ensures that the transaction proceeds without any issues or failures.

EnvironmentHTTP MethodAPI
SandboxPOSThttps://api-preprod.phonepe.com/apis/pg-sandbox/subscriptions/v2/redeem
ProductionPOSThttps://api.phonepe.com/apis/pg/subscriptions/v2/redeem
Request Headers
Header NameHeader Value
Content-Typeapplication/json
AuthorizationO-Bearer <merchant-auth-token>
Request Parameters
Parameter NameData TypeDescriptionMandatory (Yes/No)Constraints
merchantOrderIdStringPass the same merchantOrderId used in the Notify request.Yes Maximum length is 63 characters.
Only underscore (_) and hyphen (-) are allowed as special characters.
Sample Request
{
    "merchantOrderId": "MO12344"
}

⚠️ Redemption Handling Alert!


  • If paymentFlow.redemptionRetryStrategy is set to CUSTOM, merchants are required to retry the redemption until a terminal status (COMPLETED or FAILED) is achieved. The maximum time window to get a terminal status is 48 hours, and a maximum of 4 tries(1 attempt + 3 retries) are allowed.
  • If paymentFlow.redemptionRetryStrategy is set to STANDARD, PhonePe will handle the internal retries for redemption. The maximum time window to get a terminal status is 48 hours, and retries are managed by PhonePe internally.
  • Default Value: STANDARD.
Sample Response
{
    "state" : "PENDING",
    "transactionId": "OM1234"
}
Response Parameters
Parameter NameDescription
stateIndicates the current status of the order.
Possible values: COMPLETED, FAILED, or PENDING.
transactionIdTransaction ID generated by PhonePe.
headers
body params

You can also test this API request directly in Postman for a quick and easy integration check.

After checking the status of an order, you may need to handle post-payment actions like issuing a refund, especially for failed, cancelled, or customer-returned transactions.

Head over to the next section to learn how to process cancel.

Is this article helpful?