What is Subscription?
What is Subscription?
What are the payment methods supported by Cashfree Subscriptions?
What are the payment methods supported by Cashfree Subscriptions?
What frequencies are supported for all payment methods?
What frequencies are supported for all payment methods?
What are the different subscription states?
What are the different subscription states?
- INITIALIZED – Subscription created, authorisation pending.
- BANK APPROVAL PENDING – Authorisation 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, authorisation wasn’t attempted before expiry.
- LINK EXPIRED – In non-seamless subscriptions, authorisation wasn’t attempted before expiry.
Can I retry a failed transaction and collect payments for that cycle?
Can I retry a failed transaction and collect payments for that cycle?
Refer to the retry subscription charge API for details.
Can I extend the expiry date of a subscription?
Can I extend the expiry date of a subscription?
Can I test a subscription model before going live?
Can I test a subscription model before going live?
How do I know if I have received payments?
How do I know if I have received payments?
Follow these steps to configure webhooks.
Can I replay or resend a missed subscription webhook?
Can I replay or resend a missed subscription webhook?
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.Why do sandbox and production send different eNACH subscription webhook payload formats?
Why do sandbox and production send different eNACH subscription webhook payload formats?
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.Can I modify an existing subscription?
Can I modify an existing subscription?
Can Subscriptions charge a variable amount each billing cycle instead of a fixed amount?
Can Subscriptions charge a variable amount each billing cycle instead of a fixed amount?
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.What is the difference between 'Net Banking' and 'Debit Card' under the e-Mandate payment mode?
What is the difference between 'Net Banking' and 'Debit Card' under the e-Mandate payment mode?
What is the maximum amount limit for each payment method?
What is the maximum amount limit for each payment method?
Which apps are supported for UPI Subscriptions?
Which apps are supported for UPI Subscriptions?
What is the cut-off time to raise a transaction?
What is the cut-off time to raise a transaction?
What are the common eNACH failure reasons?
What are the common eNACH failure reasons?
Which bank accounts are supported for eNACH mandates?
Which bank accounts are supported for eNACH mandates?
Which intent apps are supported by Subscriptions?
Which intent apps are supported by Subscriptions?
Can my customer pause or cancel a mandate from their end?
Can my customer pause or cancel a mandate from their end?
Can I resume a mandate if my customer has paused it?
Can I resume a mandate if my customer has paused it?
What is the maximum expiry period for eNACH mandates?
What is the maximum expiry period for eNACH mandates?
What happens if the card used for a subscription expires?
What happens if the card used for a subscription expires?
card_expired.Can the merchant receive advance notice of a card expiry?
Can the merchant receive advance notice of a card expiry?
subscription_card_expiry_reminder webhook is triggered 6 days before the card expiry.What happens to an active subscription after the card expires?
What happens to an active subscription after the card expires?
card_expired status. Further charges cannot be processed.What should the merchant do if a subscription is marked as card_expired?
What should the merchant do if a subscription is marked as card_expired?
What are the different ways that I can use Cashfree to collect recurring payments or payments for subscriptions from my customers?
What are the different ways that I can use Cashfree to collect recurring payments or payments for subscriptions from my customers?
- UPI AutoPay
- Cards
- eNach
- Physical Mandate
Is the Cashfree Subscriptions solution compliant with the new Digital Lending Guidelines by RBI?
Is the Cashfree Subscriptions solution compliant with the new Digital Lending Guidelines by RBI?
Who can benefit from using Cashfree Subscriptions?
Who can benefit from using Cashfree Subscriptions?
- NBFCs and digital lending apps
- OTT platforms
- Ed-tech platforms
- E-commerce companies
- Investment firms
-
Insurance providers
How to create a subscriptions plan on Cashfree dashboard?
How to create a subscriptions plan on Cashfree dashboard?
- Go to Subscription Dashboard > All subscriptions > Create Subscriptions
-
Enter details – Add customer info, subscription ID, recurring amount, due date, and max debits.
How to create a UPI AutoPay plan?
How to create a UPI AutoPay plan?
How do I activate UPI AutoPay for Subscriptions, and what does it cost?
How do I activate UPI AutoPay for Subscriptions, and what does it cost?
What is the Bulk Payments tab on the Subscriptions dashboard?
What is the Bulk Payments tab on the Subscriptions dashboard?
Can I migrate my mandate data from another payment aggregator to Cashfree?
Can I migrate my mandate data from another payment aggregator to Cashfree?
- Contact Cashfree support: Initiate the porting process by nominating Cashfree as your payment processing partner for your Utility Code or mandates.
- Partner bank coordination: Share the mandate list with your partner bank to update their systems. Our team will guide you through the process.
- Import mandates: Upload the updated mandate list into Cashfree’s system.
-
Start processing payments: Once imported, you can begin processing payments seamlessly through Cashfree.
Learn more about importing mandates.
What are the various eNACH transaction failure reasons?
What are the various eNACH transaction failure reasons?
What causes a payment_mode_invalid_for_action error on the subscription pay endpoint?
What causes a payment_mode_invalid_for_action error on the subscription pay endpoint?
- UPI AutoPay is not activated on your merchant account.
- An
AUTHaction is being attempted on a subscription that is already authorised. Only oneAUTHis allowed per mandate. - The plan or subscription type does not support the requested action. See subscription payment modes for supported actions per mode.
If a periodic subscription transaction is in the PENDING state and the subscription is then moved to the PAUSED state, will the transaction change to SUCCESS?
If a periodic subscription transaction is in the PENDING state and the subscription is then moved to the PAUSED state, will the transaction change to SUCCESS?
If a periodic subscription transaction is in the INITIALISED state and the subscription is then moved to the PAUSED state, will the transaction change to SUCCESS?
If a periodic subscription transaction is in the INITIALISED state and the subscription is then moved to the PAUSED state, will the transaction change to SUCCESS?
Can I force a PERIODIC subscription from INITIALIZED to PENDING in the sandbox environment?
Can I force a PERIODIC subscription from INITIALIZED to PENDING in the sandbox environment?
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.Are offers supported with Subscriptions?
Are offers supported with Subscriptions?
Are the customer's email address and mobile number both required for a UPI AutoPay mandate?
Are the customer's email address and mobile number both required for a UPI AutoPay mandate?
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.Where does Cashfree use the customer’s phone number (India and International)?
Where does Cashfree use the customer’s phone number (India and International)?
Is it mandatory for the merchant to validate the phone number?
Is it mandatory for the merchant to validate the phone number?
Does Cashfree validate the phone number?
Does Cashfree validate the phone number?
When will a subscription be moved to the EXPIRED state?
When will a subscription be moved to the EXPIRED state?
Can I debit a lower amount than what was sent in the pre-debit notification (PDN)?
Can I debit a lower amount than what was sent in the pre-debit notification (PDN)?
When will a subscription be moved to the COMPLETED state?
When will a subscription be moved to the COMPLETED state?
What is the supported timeframe for the charge date in an On-Demand Subscription request?
What is the supported timeframe for the charge date in an On-Demand Subscription request?
CHARGE_FAILED error for an invalid schedule date. For periodic subscriptions, the first charge date must also be within this 14-day window. See First charge date (FCD) for a subscription.Why does a subscription transaction show as Successful in the Recon API but Failed on the Merchant Dashboard?
Why does a subscription transaction show as Successful in the Recon API but Failed on the Merchant Dashboard?
What does the Maximum Amount field represent in a subscription plan?
What does the Maximum Amount field represent in a subscription plan?
plan_max_amount parameter in the Create Plan API or the Create Subscription API. The customer sees this limit during the authorisation process. If a future charge exceeds this authorised limit, you need a new authorisation or mandate from the customer.Why are the Card and UPI payment options not visible even though both payment modes are enabled at the account level?
Why are the Card and UPI payment options not visible even though both payment modes are enabled at the account level?
-
Plan Maximum Amount:
In both Sandbox and Production, if the
plan_max_amountconfigured for the subscription is greater than ₹15,000, Card and UPI payment modes may not be displayed by default due to the applicable mandate limits. Ensure that theplan_max_amountis within the supported limit. If you need to support amounts above ₹15,000, the AFA (Additional Factor Authentication) configuration must be enabled. Once AFA is enabled, customers must authenticate each recurring charge using UPI PIN for UPI Autopay, or OTP/2FA for Cards. -
Customer Phone Number:
If the
plan_max_amountis less than ₹15,000 and Cards are still not visible, ensure that a valid customer phone number is passed while creating the subscription. Dummy phone numbers are blacklisted for Card payment mode and may result in Cards not being displayed.
What is the Max. No. of Debits field in a subscription plan?
What is the Max. No. of Debits field in a subscription plan?
plan_max_cycles parameter in the Create Plan API or the Create Subscription API. If you leave it blank, the subscription remains active until its configured expiry date or cancellation.What does the On Hold status mean for a subscription and how can it be resolved?
What does the On Hold status mean for a subscription and how can it be resolved?
Can I offer multiple subscription plans on one Payment Form?
Can I offer multiple subscription plans on one Payment Form?
What is the default session ID expiry for the Create Subscription API?
What is the default session ID expiry for the Create Subscription API?
Why am I unable to find an old subscription in the Merchant Dashboard even if it was recently updated?
Why am I unable to find an old subscription in the Merchant Dashboard even if it was recently updated?
Where can I find the API documentation for UPI AutoPay integration?
Where can I find the API documentation for UPI AutoPay integration?
How does the charge flow work for merchant-controlled UPI subscriptions compared to Cashfree-controlled ones?
How does the charge flow work for merchant-controlled UPI subscriptions compared to Cashfree-controlled ones?
payment_type field is not used. Instead, the merchant handles notification and execution separately using specific APIs (notify-mandate and execute-mandate). The payment_type field is only applicable to Cashfree-controlled flows, where a single API call triggers both the pre-debit notification and the charge.What is the minimum gap required between a successful pre-debit notification and execution for UPI mandates?
What is the minimum gap required between a successful pre-debit notification and execution for UPI mandates?
Is there an enablement process or lead time required to start using merchant-controlled UPI mandate APIs in production?
Is there an enablement process or lead time required to start using merchant-controlled UPI mandate APIs in production?
How do I cancel or revoke a mandate if I am integrated with Cashfree through Juspay?
How do I cancel or revoke a mandate if I am integrated with Cashfree through Juspay?
mandateId to Cashfree’s subscription_id and handles the underlying cancellation with Cashfree and the NPCI.Can I pass a customer_id in the Create Subscription API?
Can I pass a customer_id in the Create Subscription API?
customer_id parameter is not supported in the Subscription APIs. It belongs to Payment Gateway order APIs, including the Create Order API. If you pass customer_id in a Create Subscription API request, Cashfree does not capture, store, or display the value in the Merchant Dashboard.What is the maximum transaction limit for UPI AutoPay mandates in On-Demand Subscriptions?
What is the maximum transaction limit for UPI AutoPay mandates in On-Demand Subscriptions?
plan_max_amount on the Create Plan API and the Create Subscription API.To enable AFA for charges of ₹15,000 and above, raise a request through the Support Form. For the full payment-method limits, see Supported Payment Methods.How can I include a Customer Reference ID in the Subscription report?
How can I include a Customer Reference ID in the Subscription report?
subscription_tags when you create the subscription. The value then appears in the Subscription report in the Merchant Dashboard. See subscription_tags on the Create Subscription API.What is the difference between ON_DEMAND and Periodic (monthly) subscription plans?
What is the difference between ON_DEMAND and Periodic (monthly) subscription plans?
plan_type on the Create Plan API or the Create Subscription API. Cashfree supports two types: PERIODIC for a fixed amount on a fixed schedule, and ON_DEMAND for a variable amount that you trigger when you need it. Monthly billing is one PERIODIC interval (MONTH), not a third plan type.The two types differ as follows:- PERIODIC: Cashfree automatically debits a fixed recurring amount (
plan_amount) on the schedule you set withplan_interval_type(DAY,WEEK,MONTH, orYEAR) andplan_intervals. Use this for memberships, retainers, or any charge that repeats on a known cycle. - ON_DEMAND: You trigger each charge yourself, for a variable amount up to
plan_max_amount, at the time you choose. Cashfree does not run a billing schedule, andnext_schedule_dateisnull. Use this for utility bills or usage-based billing. Raise charges from the Merchant Dashboard or the Charge Subscription API.
CHANGE_PLAN and PAUSE are not supported for On-Demand subscriptions. See Subscriptions Overview.How can I initiate a refund for a subscription payment?
How can I initiate a refund for a subscription payment?
subscription_idpayment_idrefund_idrefund_amount
refund_amount to issue a partial refund.Why are customer bank account and IFSC details missing from the Create Subscription API response?
Why are customer bank account and IFSC details missing from the Create Subscription API response?
customer_bank_account_number and at least one of customer_bank_ifsc or customer_bank_code in the request.How can a partner integrate with Cashfree Subscriptions on behalf of a merchant?
How can a partner integrate with Cashfree Subscriptions on behalf of a merchant?
x-client-id and x-client-secret. Include the following headers:x-partner-apikey: your partner API keyx-partner-merchantid: the merchant IDx-api-version: a current Payments API version, such as2025-01-01or2026-01-01
Is the Bank UTR or RRN available in the SUBSCRIPTION_PAYMENT_SUCCESS webhook?
Is the Bank UTR or RRN available in the SUBSCRIPTION_PAYMENT_SUCCESS webhook?
SUBSCRIPTION_PAYMENT_SUCCESS webhook does not include the bank UTR or RRN (bank_reference). Use the cf_payment_id from the webhook to find the transaction in the Merchant Dashboard and read the UTR from the transaction details. See Subscription Webhooks.Why are some of my subscription plans not visible in the Merchant Dashboard dropdown?
Why are some of my subscription plans not visible in the Merchant Dashboard dropdown?
How do I resolve the 'Split creation failed' error when using subscription_payment_splits?
How do I resolve the 'Split creation failed' error when using subscription_payment_splits?
Split creation failed error typically occurs if Easy Split is not enabled for your account or if the vendors are not correctly configured. Ensure that:- Easy Split is enabled at the account level. Contact your account manager, or fill out the Support Form, to enable this for your sandbox and production accounts.
-
The
vendor_idused in the request already exists in your account. -
The vendor is in an
ACTIVEstate before using it in a subscription request.
How do I enable email and SMS notifications when creating a subscription through the Merchant Dashboard?
How do I enable email and SMS notifications when creating a subscription through the Merchant Dashboard?
Are there specific validations for percentage values in subscription payment splits?
Are there specific validations for percentage values in subscription payment splits?
subscription_payment_splits follow Easy Split rules. Keep the following in mind:- Each vendor
percentagemust be greater than0. - The total of all vendor percentages cannot exceed
100. - Any remaining percentage stays with you as the merchant.
12.05.Are there any charges for processing normal refunds for domestic subscription payments?
Are there any charges for processing normal refunds for domestic subscription payments?
How do I refund a subscription payment using the API, and are partial refunds supported?
How do I refund a subscription payment using the API, and are partial refunds supported?
POST https://api.cashfree.com/pg/subscriptions/{subscription_id}/refundsCashfree supports partial refunds. You can specify a refund_amount lower than the original payment amount. The request body must include the subscription_id, payment_id (or cf_payment_id), a unique refund_id, and the refund_amount.What is the maximum time period within which a refund can be initiated for a subscription payment?
What is the maximum time period within which a refund can be initiated for a subscription payment?
Can I use the CHANGE_PLAN action to upgrade a customer to a plan whose charges exceed the original mandate limit?
Can I use the CHANGE_PLAN action to upgrade a customer to a plan whose charges exceed the original mandate limit?
CHANGE_PLAN action does not support charging an amount that exceeds the plan_max_amount defined in the original plan. The plan_max_amount is the maximum mandate amount captured during the initial authorisation. If the new plan’s charges exceed the original plan_max_amount, you can’t use CHANGE_PLAN for the upgrade.To move a customer to a plan where charges exceed their current mandate limit, follow these steps:- Create a new plan with the higher
plan_max_amountor recurring amount. - Create a new subscription (mandate) authorisation for the customer against this higher maximum so they re-authorise the higher cap.
- Start charging on the new subscription and cancel or expire the old one, depending on your business flow.
plan_max_amount to the highest amount you might ever need to charge across tiers during initial setup, while keeping plan_recurring_amount at the current tier’s price.Why can't I activate a paused subscription?
Why can't I activate a paused subscription?
- Subscription expiry: If the
subscription_expiry_timehas passed while the subscription was paused, it moves to EXPIRED status and you can’t reactivate it. You must create a new subscription. - Max cycles reached: If the subscription has already completed the maximum number of cycles defined by the plan’s
plan_max_cycles, you can’t reactivate it. - Mandate revocation: If the customer revoked their UPI AutoPay mandate from their bank or UPI app while the subscription was paused, the underlying mandate is no longer valid.
How do I resume or activate a paused subscription using the API?
How do I resume or activate a paused subscription using the API?
ACTIVATE action. Include the x-api-version header in the request. The ACTIVATE action requires action_details.next_scheduled_time. Cashfree uses only the date component of this value.If the customer paused the mandate from their UPI app, only the customer can resume it. See Can I resume a mandate if my customer has paused it?What are the common reasons for the Subscription Charge API to fail?
What are the common reasons for the Subscription Charge API to fail?
POST /pg/subscriptions/pay) fails include the following:- Subscription status: You can raise charges only on subscriptions in ACTIVE status. If the mandate is pending or in ACTION_REQUIRED, Cashfree rejects the charge.
-
Payment amount: The charge amount must not exceed the
plan_max_amountconfigured for the subscription. -
Payment ID reuse: Each charge attempt must use a unique
payment_id. Reusing an ID from a prior attempt results in a duplicate rejection. -
Timing: The charge can fail if you raise it before the
subscription_first_charge_time. -
Mandate validity: The charge fails if the mandate has expired or the customer has revoked it (CANCELLED).
Is there an API to get a direct web journey link for eNACH mandate authentication after creating a subscription?
Is there an API to get a direct web journey link for eNACH mandate authentication after creating a subscription?
subscription_session_id returned when you create the subscription, the redirect URL is specific to your integration.To get a ready-to-use link instead, use the Create Payment Link API (POST /pg/links) with an inline subscription object to generate a link_url that customers can open directly in any browser to complete the mandate flow (such as UPI or eMandate) without requiring SDK integration. See How do I create a subscription using a Payment Link? for details.How do I create a subscription using a Payment Link?
How do I create a subscription using a Payment Link?
POST /pg/links) with an inline subscription object to generate a link_url for mandate authorisation. Customers can open the link_url in the response directly in any browser to complete the mandate flow (such as UPI or eMandate) without requiring SDK integration. Set link_notify.send_sms and link_notify.send_email to false if you want to handle notifications yourself. Cashfree creates the plan when it creates the link.ON_DEMAND subscription example:subscription object; include the same top-level link_* and customer_details fields as the ON_DEMAND example):How can I restrict the checkout page to show only UPI Autopay for subscriptions?
How can I restrict the checkout page to show only UPI Autopay for subscriptions?
authorization_details object during subscription creation. If no payment method filters are passed, all available modes are displayed by default. Refer to the payment_methods parameter documentation for details.