Skip to main content
Cashfree Subscriptions lets you set up and manage recurring payments for your customers.
  • INITIALIZED – Subscription created, authorization pending.
  • BANK APPROVAL PENDING – Authorization successful, pending bank approval.
  • ACTIVE – Subscription registered across NPCI and destination bank.
  • ON HOLD – A charge has failed for the subscription.
  • PAUSED – Subscription is paused by the merchant.
  • COMPLETED – Subscription completed its scheduled duration.
  • CUSTOMER CANCELLED – Subscription cancelled by the customer.
  • CUSTOMER PAUSED – Subscription paused by the customer.
  • EXPIRED – In seamless subscriptions, authorization wasn’t attempted before expiry.
  • LINK EXPIRED – In non-seamless subscriptions, authorization wasn’t attempted before expiry.
Yes. You can retry the last failed charge via the Dashboard or API.
Refer to the retry subscription charge API for details.
No. You can’t extend the expiry date of a subscription. You can cancel the subscription and create a new one.
Yes. You can test any subscription model in the test environment before going live.
You can use webhooks to receive notifications for all transactions.
Follow these steps to configure webhooks.
Subscription webhook events use a separate configuration from the main Payment Gateway webhooks. Log in to the Merchant Dashboard, go to Payment Gateway > Developers > Webhooks, and select the Subscriptions tab. Add your endpoint there and select the subscription events you want to receive. An endpoint configured only under the main webhooks section does not receive subscription-specific events.
No. Cashfree does not currently support replaying or resending subscription webhooks, such as SUBSCRIPTION_PAYMENT_SUCCESS, after they trigger. To check the current status of a subscription payment instead, call the Fetch Single Charge API to poll the latest transaction state. As a fallback, configure webhook retry handling on your own server.
This happens when each environment uses a different webhook version. Select the same webhook version, 2026-01-01 (the current version), in both your sandbox and production subscription webhook settings. Older versions (2022-09-01, 2023-08-01, 2025-01-01) return a different payload structure, so mismatched versions across environments produce mismatched payloads for the same event.
Yes. You can update the recurring amount of an active subscription using the Update Recurring Amount API.
Yes. Use On-Demand Subscriptions. The customer authorises a maximum mandate amount once, at setup. You can then charge any amount up to that maximum for each billing cycle by calling POST /pg/subscriptions/pay with payment_type: CHARGE, without requiring re-authorisation. This approach suits usage-based or milestone billing, where the charge amount varies each cycle.
The customer is authenticated by their bank using either net banking or debit card credentials. Debit card credentials are used only for authentication. Therefore, the mandate remains valid even if the debit card expires.
Mandate creation and transactions may fail due to operational or customer-related issues. View the common failure reasons.
Only savings accounts and individual (proprietor) current accounts are supported. Most destination banks do not support mandates for proprietor current accounts. For unsupported cases, consider using Physical NACH.
Yes. Customers can pause or cancel a mandate from their UPI app (Mandates > Active Mandates > Pause/Cancel > Submit).
No. Only the customer can resume a paused mandate from their UPI app.
The expiry period for an eNACH mandate can be set up to a maximum of 30 years.
If the card expires, the subscription is marked as card_expired.
Yes. The subscription_card_expiry_reminder webhook is triggered 6 days before the card expiry.
Once the card expires, the subscription moves to card_expired status. Further charges cannot be processed.
The merchant must create a new mandate using the updated card details. The customer must then authorise the new mandate.
Cashfree offers four different payment methods, each with specific limits on the allowed subscription amounts, as outlined below.
  • UPI AutoPay
  • Cards
  • eNach
  • Physical Mandate
Learn more about these payment modes.
Yes, it is fully compliant with the new Digital Lending Guidelines by RBI. NBFCs and Fintechs can use Cashfree Payments to collect repayments, disburse credit, and co-lend without a hassle.
Cashfree Subscriptions caters to various industries with diverse use cases. Some of the top ones include:
  • NBFCs and digital lending apps
  • OTT platforms
  • Ed-tech platforms
  • E-commerce companies
  • Investment firms
  • Insurance providers
  1. Go to Subscription Dashboard > All subscriptions > Create Subscriptions
  2. Enter details – Add customer info, subscription ID, recurring amount, due date, and max debits.
To create a new subscription from the dashboard, go to Subscriptions Dashboard > All Subscriptions > Create Subscription.You can also create multiple subscriptions at once using the dashboard. Go to Subscriptions Dashboard > Batch Subscriptions > Upload File to upload a file that contains all the information required for multiple subscriptions.Learn more
Cashfree does not offer UPI AutoPay activation as a self-serve feature. Contact your Cashfree account manager, or fill out the Support Form, to request activation on your production and sandbox accounts. Charges depend on your pricing plan, so confirm the applicable rate with your account manager.
For On-Demand subscriptions, when you want to initiate a large number of payments for multiple subscriptions, you can use the Bulk Payments feature.
Cashfree supports importing mandate information for a subscription. You can move any historical mandate data to Cashfree and continue processing transactions in Cashfree. Cashfree Payments ensures a smooth mandate porting experience.To initiate the porting process:
  1. Contact Cashfree support: Initiate the porting process by nominating Cashfree as your payment processing partner for your Utility Code or mandates.
  2. Partner bank coordination: Share the mandate list with your partner bank to update their systems. Our team will guide you through the process.
  3. Import mandates: Upload the updated mandate list into Cashfree’s system.
  4. Start processing payments: Once imported, you can begin processing payments seamlessly through Cashfree. Learn more about importing mandates.
Once the eMandate is successfully created, the corresponding transactions can get declined due to the reasons listed below:
Multiple auths will appear if the customer attempts the transaction more than once.
The API returns this error when the requested payment mode is not valid for the action you are performing. Common causes include:
  • UPI AutoPay is not activated on your merchant account.
  • An AUTH action is being attempted on a subscription that is already authorised. Only one AUTH is allowed per mandate.
  • The plan or subscription type does not support the requested action. See subscription payment modes for supported actions per mode.
Use the Fetch Subscription API to check the subscription’s current status first. If UPI AutoPay activation is the cause, contact your account manager or fill out the Support Form — this requires commercial approval.
Yes, subscription may move to SUCCESS state or it may move to FAILED state based on bank’s confirmation. But the subscription state will move to terminal state.
No, the subscription will move to SUCCESS.
No. A PERIODIC subscription payment moves from INITIALIZED to PENDING only when its scheduled billing date arrives, and the sandbox environment does not support forcing this transition early. For ON_DEMAND subscriptions, trigger an immediate charge by calling POST /pg/subscriptions/pay with subscription_id and payment_type: CHARGE in the request body. Use this as the sandbox-friendly way to test a charge without waiting for a billing cycle.
Offers are not currently supported with Subscriptions.
Yes. The Subscriptions API requires both customer_email and the customer’s mobile number to create a UPI AutoPay mandate, and neither field is optional. The API rejects the subscription creation request if either field is missing. If collecting an email address upfront is difficult, capture a valid address during customer onboarding, before you initiate mandate creation.
The customer’s phone number is primarily used for sending payment links to customers and sending subscription mandate notifications for recurring payments. It may also be used for transaction-related communication where applicable. This applies to both domestic and international transactions wherever relevant.
It is not mandatory for the merchant to perform OTP validation at their end. However, since the customer’s phone number is used to send payment links and important mandate notifications, we expect the number to be accurate. If an incorrect number is provided, the customer may not receive the communication.
Yes, Cashfree performs a basic validation check to ensure the phone number is in the correct format. For Indian transactions, this includes verifying that it is a valid 10-digit mobile number. This is only a format-level validation and does not include OTP-based verification.
If a subscription remains in the INITIALIZED state and the configured expiry time is reached, and there is no successful authorization/payment against the subscription (or the authorization attempt fails), the subscription will continue to remain in the INITIALIZED state. Once the subscription crosses its expiry time, it will be moved to the EXPIRED state.
No. The debit amount cannot change after the PDN is initiated. If the executed debit amount differs from the amount notified in the PDN, the transaction is declined by the issuing bank due to the amount-match logic enforced at the issuing bank.
Once the authorization payment is successfully completed and the subscription moves to the ACTIVE state, the behaviour is different. Even if the merchant has not specified the number of cycles (max_cycles), when the subscription reaches its configured expiry time (expires_on), the subscription will be moved to the COMPLETED state and not the EXPIRED state.
The Maximum Amount is the upper limit that can be charged under a mandate. It is shown to the customer during the authorization process. If a future charge needs to exceed this authorized limit, a new authorization or mandate from the customer is required.
The Max. No. of Debits defines the maximum number of times a customer can be charged under a specific subscription or mandate. If left blank, the subscription remains active until its configured expiry date or until it is cancelled.
The On Hold status occurs for NACH and Card standing instructions when a recurring payment fails. To reactivate it, you can retry the failed charge (up to 3 retries per billing cycle) via the Dashboard or the Manage Payment API. Once the payment succeeds, the subscription resumes.
The default expiry value for the subscription session ID is 2 hours. If the session ID expires, the subscription remains in INITIALISED status. A new session ID must be generated using the Fetch Subscription API to open the checkout page again.