> ## Documentation Index
> Fetch the complete documentation index at: https://www.cashfree.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Subscription FAQs

> Browse Cashfree Subscriptions FAQs covering mandate authorisation, charges, supported methods like UPI mandates, retries, webhooks, and reconciliation.

export const posthog_0 = undefined

<AccordionGroup>
  <Accordion title="What is Subscription?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What are Subscriptions?" })}>
    Cashfree Subscriptions lets you set up and manage recurring payments for your customers.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23what-are-subscriptions" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What are the payment methods supported by Cashfree Subscriptions?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What are the payment methods supported by Cashfree Subscriptions?" })}>
    | Payment methods supported | Banks or card networks or UPI handles | Maximum subscription amount allowed |
    | :- | :- | :- |
    | eNACH | See the [list of NPCI-supported banks](https://www.npci.org.in/product/nach/all-members) | ₹ 1,00,00,000 |
    | UPI autopay | See the [list of banks and PSPs](https://www.npci.org.in/what-we-do/autopay/list-of-banks-and-apps-live-on-autopay) | ₹ 15,000 (without AFA) or ₹ 1,00,000 (with AFA) |
    | Card (Indian) | Visa, Mastercard, RuPay | ₹ 15,000 (without AFA) or ₹ 1,00,00,000  (with AFA) |
    | Card (International) | Visa, Mastercard | ₹ 1,00,00,000 |
    | Physical mandates | See the [list of supported banks](https://gocashassets.s3.ap-south-1.amazonaws.com/subscriptions/List+of+Bank+Supported+for+Physical+NACH+-+Sheet1.pdf.zip) | ₹ 1,00,00,000 |

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23what-are-the-various-payment-methods-supported-by-cashfree-subscriptions" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What frequencies are supported for all payment methods?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What frequencies are supported for all payment methods?" })}>
    | Payment method | Supported frequencies |
    | - | - |
    | eNACH | Daily, weekly, monthly, yearly, ad-hoc |
    | UPI AutoPay | Daily, weekly, monthly, ad-hoc |
    | Card | Weekly, monthly, yearly, ad-hoc |
    | Physical NACH | Daily, weekly, monthly, yearly, ad-hoc |

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23what-are-the-frequencies-supported-for-all-payment-modes-for-subscriptions" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What are the different subscription states?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "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.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23what-are-the-various-subscription-states" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can I retry a failed transaction and collect payments for that cycle?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Can I retry a failed transaction and collect payments for that cycle?" })}>
    Yes. You can retry the last failed charge via the Merchant Dashboard or API.\
    [Refer to the retry subscription charge API](/docs/api-reference/payments/previous/subscriptionsv1/subscription/retry-subscription-charge) for details.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23can-i-retry-a-failed-transaction-and-collect-payments-for-that-cycle" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can I extend the expiry date of a subscription?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Can I extend the expiry date of a subscription?" })}>
    No. You can’t extend the expiry date of a subscription. You can cancel the subscription and create a new one.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23can-i-extend-the-expiry-date-of-a-subscription" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can I test a subscription model before going live?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Can I test a subscription model before going live?" })}>
    Yes. You can test any subscription model in the test environment before going live.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23can-i-test-a-subscription-model-before-going-live" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How do I know if I have received payments?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "How do I know if I have received payments?" })}>
    You can use webhooks to receive notifications for all transactions.\
    [Follow these steps to configure webhooks](/docs/api-reference/payments/latest/subscription/webhooks).

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23how-do-i-know-if-i-have-received-payments" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Why aren't we receiving SUBSCRIPTION_PAYMENT_SUCCESS or SUBSCRIPTION_AUTHORIZED webhooks?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Why aren't we receiving SUBSCRIPTION_PAYMENT_SUCCESS or SUBSCRIPTION_AUTHORIZED webhooks?" })}>
    Subscription webhook events use a separate configuration from the main Payment Gateway webhooks. Log in to the [Merchant Dashboard](https://merchant.cashfree.com/auth/login), 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.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23why-are-we-not-receiving-subscription-webhooks" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can I replay or resend a missed subscription webhook?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Can I replay or resend a missed subscription webhook?" })}>
    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](/docs/api-reference/payments/latest/subscription/payment/fetch) API to poll the latest transaction state. As a fallback, configure webhook retry handling on your own server.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23can-i-replay-or-resend-a-missed-subscription-webhook" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Why do sandbox and production send different eNACH subscription webhook payload formats?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Why do sandbox and production send different eNACH subscription webhook payload formats?" })}>
    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.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23why-do-sandbox-and-production-send-different-webhook-payloads" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can I modify an existing subscription?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Can I modify an existing subscription?" })}>
    Yes. You can update the recurring amount of an active subscription using the [Update Recurring Amount API](/docs/api-reference/payments/previous/subscriptionsv1/subscription/update-recurring-amount).

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23can-i-modify-an-existing-subscription" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can Subscriptions charge a variable amount each billing cycle instead of a fixed amount?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Can Subscriptions charge a variable amount each billing cycle instead of a fixed amount?" })}>
    Yes. Use [On-Demand Subscriptions](/docs/payments/subscription/introduction). 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.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23can-subscriptions-charge-a-variable-amount-each-cycle" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What is the difference between 'Net Banking' and 'Debit Card' under the e-Mandate payment mode?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What is the difference between 'Net Banking' and 'Debit Card' under the e-Mandate payment mode?" })}>
    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.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23what-is-the-difference-between-auth-modes" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What is the maximum amount limit for each payment method?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What is the maximum amount limit for each payment method?" })}>
    | Payment method | Supported networks or banks | Maximum subscription amount |
    | - | - | - |
    | eNACH | See the [list of NPCI-supported banks](https://www.npci.org.in/product/nach/all-members) | ₹1,00,00,000 |
    | UPI AutoPay | [Live UPI apps and banks](https://www.npci.org.in/what-we-do/autopay/list-of-banks-and-apps-live-on-autopay) | ₹15,000 (no AFA), ₹1,00,000 (with AFA) |
    | Card | Visa, Mastercard | ₹15,000 (no AFA), > ₹15,000 (with AFA) |
    | Physical Mandate | [Supported banks](https://gocashassets.s3.ap-south-1.amazonaws.com/subscriptions/List+of+Bank+Supported+for+Physical+NACH+-+Sheet1.pdf.zip) | ₹1,00,00,000 |

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23what-is-the-maximum-amount-limit" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Which apps are supported for UPI Subscriptions?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Which apps are supported for UPI Subscriptions?" })}>
    View the [list of supported UPI apps and banks](https://www.npci.org.in/what-we-do/autopay/list-of-banks-and-apps-live-on-autopay).

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23which-apps-are-supported-for-upi-subscriptions" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What is the cut-off time to raise a transaction?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What is the cut-off time to raise a transaction?" })}>
    | Charge raised on | Scheduled for | NACH | UPI AutoPay | SI on cards |
    | - | - | - | - | - |
    | 00:00–06:59 (T) | null | Raised on T | Not Allowed | Not Allowed |
    | 07:00–11:59 (T) | null | Raised on T+1 | Not Allowed | Not Allowed |
    | 00:00–06:59 (T) | T | **Raised on T** | Not Allowed | Not Allowed |
    | 07:00–11:59 (T) | T | **Not Allowed** | Not Allowed | Not Allowed |
    | 00:00–20:59 (T) | T+1 | Raised on T+1 | **Raised on T+1** | Not Allowed |
    | 21:00–23:59 (T) | T+1 | Raised on T+1 | **Not Allowed** | Not Allowed |
    | 00:00–23:59 (T) | T+n (2–14) | Raised on T+n | Raised on T+n | Raised on T+n |
    | 00:00–23:59 (T) | T+15 | Not Allowed | Not Allowed | Not Allowed |

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23what-is-the-cutoff-time-to-raise-a-transaction" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What are the common eNACH failure reasons?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What are the common eNACH failure reasons?" })}>
    Mandate creation and transactions may fail due to operational or customer-related issues. View the [common failure reasons](https://cashfreelogo.cashfree.com/website/docs/nach-errors.pdf).

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23what-are-the-various-enach-failure-reasons" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Which bank accounts are supported for eNACH mandates?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Which bank accounts are supported for eNACH mandates?" })}>
    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](/docs/api-reference/payments/previous/subscriptionsv1/physical-mandates).

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23what-type-of-bank-accounts-are-supported" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Which intent apps are supported by Subscriptions?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Which intent apps are supported by Subscriptions?" })}>
    | App | Android intent | iOS intent |
    | - | - | - |
    | Paytm | ✔️ | ✔️ |
    | GPay (@okhdfc, @okicici, @oksbi) | ✔️ | ✔️ |
    | PhonePe | ✔️ | ✔️ |
    | AmazonPay | ✔️ | ✔️ |

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23what-are-the-intent-apps-supported" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can my customer pause or cancel a mandate from their end?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Can my customer pause or cancel a mandate from their end?" })}>
    Yes. Customers can pause or cancel a mandate from their UPI app (Mandates > Active Mandates > Pause/Cancel > Submit).

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23can-customer-pause-cancel-mandate" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can I resume a mandate if my customer has paused it?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Can I resume a mandate if my customer has paused it?" })}>
    No. Only the customer can resume a paused mandate from their UPI app.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23can-merchant-resume-customer-paused-mandate" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What is the maximum expiry period for eNACH mandates?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What is the maximum expiry period for eNACH mandates?" })}>
    The expiry period for an eNACH mandate can be set up to a maximum of 30 years.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23what-is-the-longest-expiry-time" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What happens if the card used for a subscription expires?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What happens if the card used for a subscription expires?" })}>
    If the card expires, the subscription is marked as <code>card\_expired</code>.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23what-happens-if-card-expires" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can the merchant receive advance notice of a card expiry?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Can the merchant receive advance notice of a card expiry?" })}>
    Yes. The <code>subscription\_card\_expiry\_reminder</code> webhook is triggered 6 days before the card expiry.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23card-expiry-webhook-reminder" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What happens to an active subscription after the card expires?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What happens to an active subscription after the card expires?" })}>
    Once the card expires, the subscription moves to <code>card\_expired</code> status. Further charges cannot be processed.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23active-subscription-after-card-expires" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What should the merchant do if a subscription is marked as card_expired?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What should the merchant do if a subscription is marked as card_expired?" })}>
    The merchant must create a new mandate using the updated card details. The customer must then authorise the new mandate.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23subscription-marked-as-card-expired" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What are the different ways that I can use Cashfree to collect recurring payments or payments for subscriptions from my customers?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What are the different ways that I can use Cashfree to collect recurring payments or payments for subscriptions from my customers?" })}>
    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](/docs/payments/subscription/payment-modes).

    {" "}

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23what-are-the-different-ways-that-i-can-use-cashfree-to-collect-recurring-payments-or-payments-for-subscriptions-from-my-customers" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Is the Cashfree Subscriptions solution compliant with the new Digital Lending Guidelines by RBI?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Is the Cashfree Subscriptions solution compliant with the new Digital Lending Guidelines by RBI?" })}>
    Yes, it is fully compliant with the new Digital Lending Guidelines by RBI. NBFCs and Fintechs can use Cashfree to collect repayments, disburse credit, and co-lend without a hassle.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23is-the-cashfree-subscriptions-solution-compliant-with-the-new-digital-lending-guidelines-by-rbi" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Who can benefit from using Cashfree Subscriptions?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Who can benefit from using Cashfree Subscriptions?" })}>
    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

          <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23who-can-benefit-from-using-cashfree-subscriptions" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How to create a subscriptions plan on Cashfree dashboard?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "How to create a subscriptions plan on Cashfree dashboard?" })}>
    1. Go to **Subscription Dashboard** > **All subscriptions** > **Create Subscriptions**

    2. Enter details – Add customer info, subscription ID, recurring amount, due date, and max debits.

           <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23how-to-create-a-subscriptions-plan-on-cashfree-payments-dashboard" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How to create a UPI AutoPay plan?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "How to create a UPI AutoPay plan?" })}>
    To create a new subscription from the Merchant Dashboard, go to **Subscriptions Dashboard > All Subscriptions > Create Subscription**.

    You can also create multiple subscriptions at once using the Merchant Dashboard. Go to **Subscriptions Dashboard > Batch Subscriptions > Upload File** to upload a file that contains all the information required for multiple subscriptions.

    [Learn more](/docs/payments/subscription/create)

    {" "}

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23how-to-create-a-upi-autopay-plan" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How do I activate UPI AutoPay for Subscriptions, and what does it cost?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "How do I activate UPI AutoPay for Subscriptions, and what does it cost?" })}>
    Cashfree does not offer UPI AutoPay activation as a self-serve feature. Contact your Cashfree account manager, or fill out the [Support Form](https://merchant.cashfree.com/merchants/landing?env=prod\&raise_issue=1), to request activation on your production and sandbox accounts. Charges depend on your pricing plan, so confirm the applicable rate with your account manager.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23how-do-i-activate-upi-autopay-for-subscriptions" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What is the Bulk Payments tab on the Subscriptions dashboard?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What is the Bulk Payments tab on the Subscriptions dashboard?" })}>
    For On-Demand subscriptions, when you want to initiate a large number of payments for multiple subscriptions, you can use the Bulk Payments feature.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23what-is-the-bulk-payments-tab-on-the-subscriptions-dashboard" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can I migrate my mandate data from another payment aggregator to Cashfree?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Can I migrate my mandate data from another payment aggregator to Cashfree?" })}>
    Cashfree supports importing mandate information for a subscription. You can move any historical mandate data to Cashfree and continue processing transactions in Cashfree. Cashfree 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](/docs/payments/subscription/import).

           <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23can-i-migrate-my-mandate-data-from-another-payment-aggregator-to-cashfree" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What are the various eNACH transaction failure reasons?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What are the various eNACH transaction failure reasons?" })}>
    Once the eMandate is successfully created, the corresponding transactions can get declined due to the reasons listed below:

    | Transaction failure reason | Detailed description | Resolution |
    | - | - | - |
    | Balance Insufficient | This error is displayed when the end-customer does not have sufficient balance in their account. In this case, due to payment failure, the end-customer will be asked to pay a fine of amount equivalent to the cheque bounce charges by the destination bank. | The merchant can present the transaction again. It is recommended to contact the end-customer before retrying the failed transaction. A total of 3 retries are allowed before the start of the next cycle. |
    | Not Arranged For or Exceeds arrangement | This error is displayed when the end-customer does not have sufficient balance in their overdraft account. | The merchant can present the transaction again. It is recommended to contact the end-customer before retrying the failed transaction. A total of 3 retries are allowed before the start of the next cycle. |
    | Customer to refer to the branch | This error is displayed when the reason for the decline is unclear and the destination bank is expecting the end-customer to contact them for further clarification. | Merchant can contact the end-customer and recommend the end-customer to contact the bank and provide further clarification. |
    | Account Closed | This error is displayed when the account has been closed and thus all the associated mandates were deactivated. | Further action cannot be taken in this scenario. The merchant can create another mandate for the end-customer to continue with the debit. |
    | Invalid UMRN or Inactive Mandate | This error is displayed when the mandate has been de-activated by the NPCI's system. Usually when the mandate has not been debited over a prolonged period of time. | Further action cannot be taken in this scenario. The merchant can create another mandate for the end-customer to continue with the debit. |
    | Mandate Cancelled | This error is displayed when the mandate has been cancelled. This can be merchant initiated or end-customer initiated. | Further action cannot be taken in this scenario. The merchant would have to create another mandate for the end-customer to continue with the debit. |
    | No Such Account | This error is displayed when the account has been closed or no longer available. Thus all the associated mandates were deactivated. | Further action cannot be taken in this scenario. The merchant would have to create another mandate for the end-customer to continue with the debit. |
    | A/c Blocked or Frozen | This error is displayed when all the withdrawals, purchases or transfers have been halted for this account. Hence, the presentation is not successful. | The merchant must contact the end-customer to resolve this issue. |
    | Payment Stopped by Drawer | This error is displayed when the presentation has been stopped at the request of the end-customer. | The merchant must contact the end-customer to resolve this issue. |
    | Payment Stopped under Court Order/Account Under Litigation | This error is displayed when the presentation has been stopped at a Court order. | The merchant must contact the end-customer to resolve this issue. |
    | Customer name mismatch | This error is displayed when the account holder's name provided during mandate creation does not match the account holder's name at the time of presentation. | Since the mandate cannot be edited, the merchant must create a new mandate with the end-customer. |
    | Network Failure (CBS) | This error is displayed when the Core Banking System(CBS) of the destination bank has a network failure. Generally, all the presentations for the affected bank would fail for the day. | The merchant can try to present the transaction again. The transaction is expected to go through once the system is up. |
    | Returned as per customer request | This error is displayed when the presentation has been stopped at the request of the customer. | The merchant must contact the end-customer to resolve this issue. |
    | KYC Documents Pending | Typically end-customer is expected to do a KYC for the bank account at least once in 3 years. On such cases, the presentation could be stopped by the bank, and this error message is displayed. | The end-customer must complete the KYC post which the merchant can try to present the transaction. |
    | Documents Pending for Account Holder turning Major | This error is displayed when the documentation is pending. | End customer must complete the documentation process at the bank. |
    | Account Inoperative | This error is displayed when there are no transactions in an account for the last 3 months. All the associated mandates are deactivated. | Further action cannot be taken in this scenario. The merchant would have to create another mandate for the end-customer to continue with the debit. |
    | Dormant Account | This error is displayed when there are no transactions in an account for the last 6 months. Account is dormant and all the associated mandates are deactivated. | Further action cannot be taken in this scenario. The merchant would have to create another mandate for the end-customer to continue with the debit. |
    | Small account, First Transaction to be from Base Branch | For a bank account type - small account, the first transaction must happen at the home branch. | |
    | Account reached maximum Debit limit set on account by Bank | This error is displayed when the end-customer has sufficient balance in their account but the account has already reached the maximum limitation set for security reasons. | The merchant must contact the end-customer to increase the limit and then they try to do another presentation. |
    | Account Holder Expired | This error message is displayed when the account holder has expired. | - |
    | Account under litigation | This error is displayed when an account is currently under legal action. | Further debits are not possible for this bank account. A new mandate must be created with a different bank account to take this forward. |
    | Aadhaar number not mapped to the account number | This error is displayed when the end customer Aadhaar number is not linked to the bank account. | The end-customer must link the Aadhaar number with the bank account post which the merchant can try to do another presentation. |
    | Customer Insolvent / Insane | - | Further action cannot be taken for this error message. The merchant would have to create another mandate with a different bank account. |
    | Item cancelled | This error is displayed when the end-customer has cancelled the presentation. | The merchant must contact the end-customer to get this resolved post which the merchant can try to do another presentation. |

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23what-are-the-various-enach-transaction-failure-reasons" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Multiple authorisations will be present if the customer has attempted the transaction multiple times?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Multiple authorisations will be present if the customer has attempted the transaction multiple times?" })}>
    Multiple auths will appear if the customer attempts the transaction more than once.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23multiple-authorizations-will-be-present-if-the-customer-has-attempted-the-transaction-multiple-times" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What causes a payment_mode_invalid_for_action error on the subscription pay endpoint?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What causes a payment_mode_invalid_for_action error on the subscription pay endpoint?" })}>
    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](/docs/payments/subscription/payment-modes) for supported actions per mode.

    Use the [Fetch Subscription API](/docs/api-reference/payments/latest/subscription/fetch-subscription) 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](https://merchant.cashfree.com/merchants/landing?env=prod\&raise_issue=1). This requires commercial approval.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23what-causes-payment-mode-invalid-for-action-error" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="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?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "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?" })}>
    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.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23multiple-authorizations-will-be-present-if-the-customer-has-attempted-the-transaction-multiple-times" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="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?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "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?" })}>
    No, the subscription will move to SUCCESS.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23multiple-authorizations-will-be-present-if-the-customer-has-attempted-the-transaction-multiple-times" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can I force a PERIODIC subscription from INITIALIZED to PENDING in the sandbox environment?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Can I force a PERIODIC subscription from INITIALIZED to PENDING in the sandbox environment?" })}>
    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.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23can-i-force-a-periodic-subscription-to-pending-in-sandbox" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Are offers supported with Subscriptions?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Are offers supported with Subscriptions?" })}>
    Offers are not currently supported with Subscriptions.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23are-offers-supported-with-subscriptions" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Are the customer's email address and mobile number both required for a UPI AutoPay mandate?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Are the customer's email address and mobile number both required for a UPI AutoPay mandate?" })}>
    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.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23are-email-and-mobile-number-required-for-upi-autopay-mandate" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Where does Cashfree use the customer’s phone number (India and International)?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Where does Cashfree use the customer’s phone number (India and International)?" })}>
    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.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23are-offers-supported-with-subscriptions" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Is it mandatory for the merchant to validate the phone number?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Is it mandatory for the merchant to validate the phone number?" })}>
    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.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23are-offers-supported-with-subscriptions" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Does Cashfree validate the phone number?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Does Cashfree validate the phone number?" })}>
    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.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23are-offers-supported-with-subscriptions" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="When will a subscription be moved to the EXPIRED state?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Does Cashfree validate the phone number?" })}>
    If a subscription remains in the INITIALIZED state and the configured expiry time is reached, and there is no successful authorisation or payment against the subscription (or the authorisation 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.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23are-offers-supported-with-subscriptions" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can I debit a lower amount than what was sent in the pre-debit notification (PDN)?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Can I debit a lower amount than what was sent in the pre-debit notification (PDN)?" })}>
    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.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23lower-debit-amount-vs-pdn-notified-amount" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="When will a subscription be moved to the COMPLETED state?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Does Cashfree validate the phone number?" })}>
    Once the authorisation 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.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23are-offers-supported-with-subscriptions" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What is the supported timeframe for the charge date in an On-Demand Subscription request?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What is the supported timeframe for the charge date in an On-Demand Subscription request?" })}>
    For an On-Demand Subscription, the charge date must be less than 14 days from the request date. If the charge date is outside this 14-day window, the request fails with a `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](/docs/payments/subscription/create#first-charge-date-fcd-for-a-subscription).

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23what-is-the-supported-timeframe-for-the-charge-date-in-an-on-demand-subscription-request" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Why does a subscription transaction show as Successful in the Recon API but Failed on the Merchant Dashboard?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Why does a subscription transaction show as Successful in the Recon API but Failed on the Merchant Dashboard?" })}>
    This discrepancy can occur when Cashfree first marks a transaction as Successful and the transaction then fails internal checks. In that case, the transaction can appear as Successful at the transaction level and in reconciliation reports, while Cashfree marks the payment as Failed. Cashfree then initiates a refund for the affected transactions.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23why-does-a-subscription-transaction-show-as-success-in-the-recon-api-but-failed-on-the-merchant-dashboard" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What does the Maximum Amount field represent in a subscription plan?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What does the Maximum Amount field represent in a subscription plan?" })}>
    The **Maximum Amount** is the upper limit you can charge under a mandate, set through the `plan_max_amount` parameter in the [Create Plan API](/docs/api-reference/payments/latest/subscription/create-a-plan) or the [Create Subscription API](/docs/api-reference/payments/latest/subscription/create-subscription). 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.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23maximum-amount-field" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Why are the Card and UPI payment options not visible even though both payment modes are enabled at the account level?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Why are the Card and UPI payment options not visible even though both payment modes are enabled at the account level?" })}>
    If Cards are enabled at the account level but the Card payment option is not displayed during the subscription flow, check the following:

    1. Plan Maximum Amount:
       In both Sandbox and Production, if the `plan_max_amount` configured 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 the `plan_max_amount` is 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.
    2. Customer Phone Number:
       If the `plan_max_amount` is 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.

           <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23card-and-upi-payment-options-not-visible" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What is the Max. No. of Debits field in a subscription plan?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What is the Max. No. of Debits field in a subscription plan?" })}>
    The Max. No. of Debits defines the maximum number of times you can charge a customer under a specific subscription or mandate, set via the `plan_max_cycles` parameter in the [Create Plan API](/docs/api-reference/payments/latest/subscription/create-a-plan) or the [Create Subscription API](/docs/api-reference/payments/latest/subscription/create-subscription). If you leave it blank, the subscription remains active until its configured expiry date or cancellation.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23max-debits-field" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What does the On Hold status mean for a subscription and how can it be resolved?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What does the On Hold status mean for a subscription and how can it be resolved?" })}>
    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 Merchant Dashboard or the Manage Payment API. Once the payment succeeds, the subscription resumes.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23on-hold-status" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can I offer multiple subscription plans on one Payment Form?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Can I offer multiple subscription plans on one Payment Form?" })}>
    Yes. A Subscription Payment Form can have a single plan or multiple plans. Add more plans to the same form when you want customers to choose an option at checkout. Customers select one plan and complete mandate registration for that plan only. See [Subscription Payment Form](/docs/payments/no-code/payment-forms/subscription-payment-form).

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23can-i-offer-multiple-subscription-plans-on-one-payment-form" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What is the default session ID expiry for the Create Subscription API?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What is the default session ID expiry for the Create Subscription API?" })}>
    The default expiry value for the subscription session ID is 2 hours. If the session ID expires, the subscription remains in INITIALISED status. You must generate a new session ID using the [Fetch Subscription API](/docs/api-reference/payments/latest/subscription/fetch-subscription) to open the checkout page again.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23session-id-expiry" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Why am I unable to find an old subscription in the Merchant Dashboard even if it was recently updated?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Why am I unable to find an old subscription in the Merchant Dashboard even if it was recently updated?" })}>
    When searching for subscriptions in the Merchant Dashboard using date filters, you must use the original creation date of the subscription rather than the last updated date. If a subscription was created in the past but updated recently, set your Merchant Dashboard date range filter to include that original creation period to locate the record.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23why-am-i-unable-to-find-old-subscription" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Where can I find the API documentation for UPI AutoPay integration?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Where can I find the API documentation for UPI AutoPay integration?" })}>
    You can refer to the following API documentation for UPI AutoPay integration:

    * [Create Subscription](/docs/api-reference/payments/latest/subscription/create-subscription)
    * [Get Subscription](/docs/api-reference/payments/latest/subscription/fetch-subscription)
    * [Manage Subscription](/docs/api-reference/payments/latest/subscription/manage-subscription)
    * [Create Plan](/docs/api-reference/payments/latest/subscription/create-a-plan)
    * [Raise a Charge](/docs/api-reference/payments/latest/subscription/raise-a-charge-or-create-an-auth)

          <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23upi-autopay-api-docs" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How does the charge flow work for merchant-controlled UPI subscriptions compared to Cashfree-controlled ones?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "How does the charge flow work for merchant-controlled UPI subscriptions compared to Cashfree-controlled ones?" })}>
    In the Merchant-Controlled flow, the `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.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23merchant-controlled-charge-flow" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What is the minimum gap required between a successful pre-debit notification and execution for UPI mandates?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What is the minimum gap required between a successful pre-debit notification and execution for UPI mandates?" })}>
    A 25-hour window is required between a successful pre-debit notification and the execution of the charge. This logic and restriction apply to both the Sandbox and Production environments.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23pre-debit-notification-window" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Is there an enablement process or lead time required to start using merchant-controlled UPI mandate APIs in production?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Is there an enablement process or lead time required to start using merchant-controlled UPI mandate APIs in production?" })}>
    No separate enablement process or lead time is required. You can start using the merchant-controlled APIs directly in Production and migrate subscriptions gradually.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23merchant-controlled-enablement" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How do I cancel or revoke a mandate if I am integrated with Cashfree through Juspay?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "How do I cancel or revoke a mandate if I am integrated with Cashfree through Juspay?" })}>
    If you are using Juspay as a payment orchestrator for Cashfree subscriptions, you should not call Cashfree's Cancel Subscription API directly. Instead, use [Juspay's Revoke Mandate API](https://juspay.io/in/docs/api-reference/docs/express-checkout/revoke-mandate-api). Juspay internally maps their `mandateId` to Cashfree's `subscription_id` and handles the underlying cancellation with Cashfree and the NPCI.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23how-to-cancel-mandate-via-juspay" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can I pass a customer_id in the Create Subscription API?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Can I pass a customer_id in the Create Subscription API?" })}>
    The `customer_id` parameter is not supported in the Subscription APIs. It belongs to Payment Gateway order APIs, including the [Create Order API](/docs/api-reference/payments/latest/orders/create-order). If you pass `customer_id` in a [Create Subscription API](/docs/api-reference/payments/latest/subscription/create-subscription) request, Cashfree does not capture, store, or display the value in the Merchant Dashboard.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23customer-id-in-create-subscription" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What is the maximum transaction limit for UPI AutoPay mandates in On-Demand Subscriptions?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What is the maximum transaction limit for UPI AutoPay mandates in On-Demand Subscriptions?" })}>
    UPI AutoPay mandate limits follow the payment method caps for subscriptions: ₹15,000 without Additional Factor Authentication (AFA), and ₹1,00,000 with AFA. This cap is set by the payment ecosystem, not by Cashfree, so it cannot be changed at the gateway level. If a charge exceeds the authorised mandate limit, request a new authorisation from the customer. See `plan_max_amount` on the [Create Plan API](/docs/api-reference/payments/latest/subscription/create-a-plan) and the [Create Subscription API](/docs/api-reference/payments/latest/subscription/create-subscription).

    To enable AFA for charges of ₹15,000 and above, raise a request through the [Support Form](https://merchant.cashfree.com/merchants/landing?env=prod\&raise_issue=1). For the full payment-method limits, see [Supported Payment Methods](/docs/payments/subscription/payment-modes).

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23upi-autopay-ondemand-transaction-limit" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How can I include a Customer Reference ID in the Subscription report?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "How can I include a Customer Reference ID in the Subscription report?" })}>
    To include a customer reference ID or other custom identifiers in the Subscription report, pass the value in `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](/docs/api-reference/payments/latest/subscription/create-subscription).

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23customer-reference-id-in-subscription-report" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What is the difference between ON_DEMAND and Periodic (monthly) subscription plans?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What is the difference between ON_DEMAND and Periodic (monthly) subscription plans?" })}>
    A subscription plan is the template that defines how you debit a customer after they authorise a mandate. You set the plan type with `plan_type` on the [Create Plan API](/docs/api-reference/payments/latest/subscription/create-a-plan) or the [Create Subscription API](/docs/api-reference/payments/latest/subscription/create-subscription). 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 with `plan_interval_type` (`DAY`, `WEEK`, `MONTH`, or `YEAR`) and `plan_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, and `next_schedule_date` is `null`. Use this for utility bills or usage-based billing. Raise charges from the Merchant Dashboard or the [Charge Subscription API](/docs/api-reference/payments/latest/subscription/raise-a-charge-or-create-an-auth).

    `CHANGE_PLAN` and `PAUSE` are not supported for On-Demand subscriptions. See [Subscriptions Overview](/docs/payments/subscription/introduction).

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23ondemand-vs-periodic-plans" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How can I initiate a refund for a subscription payment?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "How can I initiate a refund for a subscription payment?" })}>
    To refund a subscription payment, including the initial authorisation payment or a later charge, use the [Create Subscription Refund API](/docs/api-reference/payments/latest/subscription/create-a-refund). The request requires the following parameters:

    * `subscription_id`
    * `payment_id`
    * `refund_id`
    * `refund_amount`

    Pass a partial amount in `refund_amount` to issue a partial refund.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23initiate-subscription-payment-refund" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Why are customer bank account and IFSC details missing from the Create Subscription API response?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Why are customer bank account and IFSC details missing from the Create Subscription API response?" })}>
    The [Create Subscription API](/docs/api-reference/payments/latest/subscription/create-subscription) returns customer bank account details such as account number and IFSC only when the subscription Third Party Validation (TPV) flag is enabled for your merchant ID. This flag is separate from Payment Gateway TPV. If subscription TPV is enabled, pass `customer_bank_account_number` and at least one of `customer_bank_ifsc` or `customer_bank_code` in the request.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23missing-bank-account-ifsc-in-subscription-response" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How can a partner integrate with Cashfree Subscriptions on behalf of a merchant?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "How can a partner integrate with Cashfree Subscriptions on behalf of a merchant?" })}>
    To call Subscription APIs on behalf of a merchant, use the [Subscriptions API](/docs/api-reference/payments/latest/subscription/overview) with partner authentication headers instead of `x-client-id` and `x-client-secret`. Include the following headers:

    * `x-partner-apikey`: your partner API key
    * `x-partner-merchantid`: the merchant ID
    * `x-api-version`: a current Payments API version, such as `2025-01-01` or `2026-01-01`

    See [API authentication](/docs/api-reference/authentication).

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23partner-subscriptions-integration" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Is the Bank UTR or RRN available in the SUBSCRIPTION_PAYMENT_SUCCESS webhook?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Is the Bank UTR or RRN available in the SUBSCRIPTION_PAYMENT_SUCCESS webhook?" })}>
    The `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](/docs/api-reference/payments/latest/subscription/webhooks).

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23bank-utr-rrn-in-subscription-payment-success" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Why are some of my subscription plans not visible in the Merchant Dashboard dropdown?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Why are some of my subscription plans not visible in the Merchant Dashboard dropdown?" })}>
    The Merchant Dashboard displays only subscription plans created within the past two years. Plans older than two years cannot be accessed in the Merchant Dashboard dropdown.

    Older plans are not deleted and remain active. You can still use them through the Cashfree APIs without needing to recreate them.

    To view older plans or subscriptions, use the **Custom Date** filter and specify a date range that includes the period when the plan or subscription was originally created. You can then use the search and filter functions to find specific plan IDs.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23why-are-some-plans-not-visible-in-dashboard" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can I set the authorisation amount to zero for UPI or Card subscriptions?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Can I set the authorisation amount to zero for UPI or Card subscriptions?" })}>
    No. For UPI and Card payment methods, the authorisation amount cannot be set to ₹0. A ₹0 authorisation amount is supported only for eNACH (Netbanking). If you set it to ₹0 for UPI, Cashfree deducts a ₹1 authorisation amount from the customer's account.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23can-i-set-the-authorisation-amount-to-zero-for-upi-or-card-subscriptions" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How do I resolve the 'Split creation failed' error when using subscription_payment_splits?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "How do I resolve the 'Split creation failed' error when using subscription_payment_splits?" })}>
    The `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](https://merchant.cashfree.com/merchants/landing?env=prod\&raise_issue=1), to enable this for your sandbox and production accounts.
    * The `vendor_id` used in the request already exists in your account.
    * The vendor is in an `ACTIVE` state before using it in a subscription request.

          <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23split-creation-failed" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How can I implement a subscription with a trial period and an initial authorisation charge?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "How can I implement a subscription with a trial period and an initial authorisation charge?" })}>
    To set up a subscription with a trial period (for example, 3 days) and an initial authorisation fee, follow these steps:

    1. **Create a Plan**: Use the [Create Plan API](/docs/api-reference/payments/latest/subscription/create-a-plan) with `plan_type: PERIODIC`, `plan_interval_type: MONTH`, and the recurring amount in `plan_recurring_amount`.

    2. **Create the Subscription**: Use the [Create Subscription API](/docs/api-reference/payments/latest/subscription/create-subscription) with the following parameters:

       * `authorization_details.authorization_amount`: Set to `1` to charge ₹1 instantly for mandate setup.
       * `authorization_details.authorization_amount_refund`: Set to `false` to keep the ₹1 as a trial fee, or `true` to refund it after authorisation.
       * `subscription_first_charge_time`: Set this to the date when the trial ends (for example, 3 days from the authorisation date). The first recurring charge will trigger on this date.

           <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23how-can-i-implement-a-subscription-with-a-trial-period-and-an-initial-authorisation-charge" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How do I enable email and SMS notifications when creating a subscription through the Merchant Dashboard?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "How do I enable email and SMS notifications when creating a subscription through the Merchant Dashboard?" })}>
    When you create a subscription in the Merchant Dashboard, select **Email** and **SMS** to enable notifications.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23how-to-enable-email-sms-notifications-for-subscription" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Why am I not receiving webhooks for refunds on subscription authorisation transactions?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Why am I not receiving webhooks for refunds on subscription authorisation transactions?" })}>
    For subscription authorisation transactions, the `authorization_amount_refund` parameter that you set during subscription creation determines the refund behaviour. If you initiate a refund through the Merchant Dashboard, Cashfree triggers the `REFUND_STATUS` webhook event. If this event is not enabled in your webhook configuration, Cashfree does not send a notification. Make sure that you enable `REFUND_STATUS` in your Payment Gateway webhook settings.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23why-am-i-not-receiving-webhooks-for-refunds-on-subscription-authorisation-transactions" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Why am I getting a 405 Method Not Allowed error on my return_url after a subscription authorisation?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Why am I getting a 405 Method Not Allowed error on my return_url after a subscription authorisation?" })}>
    After a subscription authorisation payment is completed, Cashfree sends a POST request to the `return_url`. If your `return_url` points to a frontend page that only handles GET requests, it returns a 405 error.

    To resolve this, use one of the following options:

    * Use a backend endpoint as the `return_url` that accepts POST requests.
    * Configure your frontend route to accept both GET and POST methods.
    * Use the `SUBSCRIPTION_PAYMENT_STATUS` webhook to handle payment status updates, and use the `return_url` only for customer redirection.

          <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23why-am-i-getting-405-error-on-return-url" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Are there specific validations for percentage values in subscription payment splits?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Are there specific validations for percentage values in subscription payment splits?" })}>
    Percentage values in `subscription_payment_splits` follow Easy Split rules. Keep the following in mind:

    * Each vendor `percentage` must be greater than `0`.
    * The total of all vendor percentages cannot exceed `100`.
    * Any remaining percentage stays with you as the merchant.

    You can pass decimal values, for example, `12.05`.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23split-percentage-validations" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Are there any charges for processing normal refunds for domestic subscription payments?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Are there any charges for processing normal refunds for domestic subscription payments?" })}>
    For domestic payments (both one-time and subscription payments), no additional charges apply for processing normal refunds, whether they are partial or full refunds. Normal refunds take 5–10 working days to process.

    <Note>
      Platform fees, transaction discount rate (TDR) charges, and flat subscription fees that Cashfree collects at the time of the transaction are not reversed when you initiate a refund. Cashfree retains these fees.
    </Note>

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23charges-for-domestic-subscription-refunds" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How do I refund a subscription payment using the API, and are partial refunds supported?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "How do I refund a subscription payment using the API, and are partial refunds supported?" })}>
    To refund a subscription payment, use the dedicated [Subscription Refund API](/docs/api-reference/payments/latest/subscription/create-a-refund). You don't need to create a separate payment gateway order.

    **Endpoint (Production):** `POST https://api.cashfree.com/pg/subscriptions/{subscription_id}/refunds`

    Cashfree 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`.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23how-to-refund-subscription-payment-api" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What is the maximum time period within which a refund can be initiated for a subscription payment?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What is the maximum time period within which a refund can be initiated for a subscription payment?" })}>
    Cashfree supports initiating a refund for a subscription payment only up to 6 months (approximately 180 days) from the transaction success time. After this period, refund initiation is not allowed.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23max-time-to-initiate-subscription-refund" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can I use the CHANGE_PLAN action to upgrade a customer to a plan whose charges exceed the original mandate limit?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Can I use the CHANGE_PLAN action to upgrade a customer to a plan whose charges exceed the original mandate limit?" })}>
    No. The `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:

    1. Create a new plan with the higher `plan_max_amount` or recurring amount.
    2. Create a new subscription (mandate) authorisation for the customer against this higher maximum so they re-authorise the higher cap.
    3. Start charging on the new subscription and cancel or expire the old one, depending on your business flow.

    To prevent this scenario in the future, you can set the `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.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23change-plan-exceed-mandate-limit" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Why can't I activate a paused subscription?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Why can't I activate a paused subscription?" })}>
    You can't move a subscription from PAUSED to ACTIVE if any of the following conditions apply:

    * **Subscription expiry**: If the `subscription_expiry_time` has 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.

    To check the current status and expiry, use the [Fetch Subscription API](/docs/api-reference/payments/latest/subscription/fetch-subscription).

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23why-cant-activate-paused-subscription" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How do I resume or activate a paused subscription using the API?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "How do I resume or activate a paused subscription using the API?" })}>
    To resume a paused subscription, use the [Manage Subscription API](/docs/api-reference/payments/latest/subscription/manage-subscription) with the `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?](#can-i-resume-a-mandate-if-my-customer-has-paused-it)

    ```http theme={"dark"}
    POST /pg/subscriptions/{subscription_id}/manage
    x-api-version: 2025-01-01
    Content-Type: application/json

    {
      "subscription_id": "<SUBSCRIPTION_ID>",
      "action": "ACTIVATE",
      "action_details": {
        "next_scheduled_time": "2026-10-01T00:00:00+05:30"
      }
    }
    ```

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23how-to-activate-paused-subscription" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="What are the common reasons for the Subscription Charge API to fail?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "What are the common reasons for the Subscription Charge API to fail?" })}>
    Common reasons the [Subscription Charge API](/docs/api-reference/payments/latest/subscription/raise-a-charge-or-create-an-auth) (`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_amount` configured 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).

          <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23subscription-charge-api-failure-reasons" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Is there an API to get a direct web journey link for eNACH mandate authentication after creating a subscription?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Is there an API to get a direct web journey link for eNACH mandate authentication after creating a subscription?" })}>
    Cashfree does not provide a standalone API that returns a permanent mandate link independent of a session, and there is no generic Cashfree URL for this journey. If you build your own web journey using the `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](/docs/api-reference/payments/latest/payment-links/create-payment-link) (`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?](#how-do-i-create-a-subscription-using-a-payment-link) for details.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23enach-mandate-web-journey-link" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="How do I create a subscription using a Payment Link?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "How do I create a subscription using a Payment Link?" })}>
    You can use the [Create Payment Link API](/docs/api-reference/payments/latest/payment-links/create-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:**

    ```json theme={"dark"}
    {
      "link_id": "<LINK_ID>",
      "link_amount": 0.00,
      "link_currency": "INR",
      "link_purpose": "On-demand subscription mandate",
      "customer_details": {
        "customer_phone": "<CUSTOMER_PHONE>"
      },
      "subscription": {
        "authorization_amount": 2.00,
        "authorization_amount_refund": true,
        "subscription_expiry_time": "2026-12-31T23:59:59+05:30",
        "plan_details": {
          "plan_id": "<PLAN_ID>",
          "plan_name": "On-demand Plan",
          "plan_type": "ON_DEMAND",
          "plan_currency": "INR",
          "plan_max_amount": 5000.00,
          "plan_max_cycles": 0
        }
      }
    }
    ```

    **PERIODIC subscription example** (shows only the `subscription` object; include the same top-level `link_*` and `customer_details` fields as the ON\_DEMAND example):

    ```json theme={"dark"}
    {
      "subscription": {
        "authorization_amount": 2.00,
        "subscription_first_charge_time": "2026-09-10T00:00:00+05:30",
        "plan_details": {
          "plan_id": "<PLAN_ID>",
          "plan_name": "Monthly Plan",
          "plan_type": "PERIODIC",
          "plan_currency": "INR",
          "plan_amount": 199.00,
          "plan_max_amount": 199.00,
          "plan_intervals": 1,
          "plan_interval_type": "MONTH"
        }
      }
    }
    ```

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=subscriptions%2Ffaqs%23create-subscription-via-payment-link" style={{ width: "100%", height: "65px", border: "none" }} title="FAQs feedback component" />
  </Accordion>

  <Accordion title="Can I use a default mobile number in the Create Order API if the customer's number is unavailable?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "Can I use a default mobile number in the Create Order API if the customer's number is unavailable?" })}>
    Yes. If the customer's mobile number is unavailable, you may provide a default number in the Create Order API. You must inform your Account Manager of the specific number you are using as the default. This prevents transactions from being blocked or flagged by risk and velocity checks.
  </Accordion>

  <Accordion title="How can I restrict the checkout page to show only UPI Autopay for subscriptions?" onClick={() => posthog_0.capture('Accordion Clicked', { title: "How can I restrict the checkout page to show only UPI Autopay for subscriptions?" })}>
    To show only UPI Autopay and hide other payment methods such as Bank Account or Credit/Debit Card, pass the specific payment method in the `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](/docs/api-reference/payments/latest/subscription/create-subscription#body-authorization-details-payment-methods) for details.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.