> ## 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.

# UPI AutoPay Interoperability

> Learn how UPI AutoPay interoperability works, how to migrate existing mandates to Cashfree, and what actions are required from you as a merchant.

UPI AutoPay is the recurring payments framework built on the Unified Payments Interface (UPI). It supports subscriptions, loan EMIs, insurance premiums, utility bills, and similar recurring payment types. By default, most payment service providers (PSPs) bind AutoPay mandates to the gateway that originally created them. When you switch your acquiring bank or payment gateway, those mandates become invalid and your customers must set them up again.

UPI AutoPay Interoperability removes this dependency. It allows you to move mandates across payment gateways without interruption, and gives your customers greater visibility and control over their recurring payments.

<Info>
  Cashfree validates merchants using a persistent Merchant Identifier Code (MIC) rather than your Payee UPI ID. The MIC is derived from your corporate PAN and remains consistent regardless of which payment gateway or bank you use.
</Info>

## Key features

UPI AutoPay Interoperability provides the following capabilities that allow you to migrate mandates while keeping recurring payments active.

* **Acquiring-side interoperability**: A different payment aggregator or acquiring bank can execute mandates on behalf of the one that originally created them.
* **Payer-side interoperability**: Users can view active mandates across UPI apps and port mandates without disrupting recurring debits.
* **Gateway migration support**: You can change payment gateways without forcing customers to recreate mandates.

## Use cases

UPI AutoPay Interoperability is suited to the following scenarios.

* Migrate your payment processing from one gateway to another without disrupting recurring mandates.
* Keep subscriptions, loan EMIs and insurance premium collections active when you switch settlement partners.
* Support recurring utility bill payments across multiple UPI apps and remitting banks.
* Maintain recurring payment continuity during merchant migration, acquisitions or platform changes.

## What this means for you

If you have active UPI AutoPay mandates with another payment aggregator, you can migrate your processing to Cashfree without disrupting your customers' mandates. The table below shows the change:

| Aspect                                 | Before interoperability                 | After interoperability        |
| -------------------------------------- | --------------------------------------- | ----------------------------- |
| Switching payment gateways             | Mandates break and users must re-create | Mandates migrate seamlessly   |
| Mandate visibility for users           | Only within the originating UPI app     | Viewable across any UPI app   |
| Dynamic routing for mandate executions | Not allowed                             | Now allowed                   |
| User re-authentication needed?         | Yes, required if gateway changes        | No, existing UPI PIN suffices |

## Eligibility for mandate migration

Because this is new functionality that has not yet been widely adopted, not all banks and UPI apps have implemented the required changes. You can migrate mandates only when all three entities, the payee PSP (the PSP collecting payments on your behalf), the payer PSP (the customer's UPI app), and the remitting bank, have implemented the interoperability framework.

Eligibility depends on both the remitting bank (the customer's bank) and the payer's UPI app (PSP) being certified for UPI AutoPay Interoperability.

### Eligible remitting banks

You can migrate mandates only when the customer's bank account is held at one of these banks:

| Bank name                  | Status                       |
| -------------------------- | ---------------------------- |
| HDFC Bank                  | Live on UPI interoperability |
| Punjab National Bank (PNB) | Live on UPI interoperability |
| IndusInd Bank              | Live on UPI interoperability |
| Yes Bank                   | Live on UPI interoperability |
| IDFC FIRST Bank            | Live on UPI interoperability |
| Cosmos Bank                | Live on UPI interoperability |

Mandates linked to banks not in this list are not yet eligible. Cashfree updates this list as more banks complete certification.

### Eligible payer PSPs (UPI apps)

Your customer's UPI app must also be certified for interoperability. The following payer PSPs are currently eligible:

| UPI app or PSP | UPI handle |
| -------------- | ---------- |
| Paytm          | `@ptyes`   |
| BHIM           | `@upi`     |
| INDmoney       | `@inhdfc`  |

You can migrate a mandate only when both the remitting bank and the payer PSP are on these lists.

## How mandate migration works

The following steps describe the migration flow involving your existing payment aggregator (PA1), Cashfree and NPCI's UPI switch. PA1 is the payment aggregator that originally created your mandates and upgrades them before Cashfree begins execution.

You can enable UPI Autopay Interoperability by contacting your Cashfree account manager or filling out the [Support Form](https://merchant.cashfree.com/merchants/landing?env=prod\&raise_issue=1).

For related subscription mandate APIs, see the [Create Subscription API](/api-reference/payments/latest/subscription/mandate/create).

<Steps>
  <Step title="Migrate mandates to the interoperability framework">
    Before Cashfree executes your mandates, your existing mandates, which were created under the old framework using purpose code `14`, must be upgraded to the interoperability framework by PA1.
    During this step:

    * PA1 initiates a `ReqMandate` API call with `type='UPDATE'` and purpose code `AZ` for each eligible mandate.
    * PA1 updates the `sid` tag in the mandate with your Merchant Identifier Code (MIC).
    * Customers do not need to enter their UPI PIN for this upgrade.
  </Step>

  <Step title="Receive mandate details from PA1">
    Once PA1 moves eligible mandates to the interoperability framework, it shares a list of migrated mandates with you. This file contains:

    * **UMN** (Unique Mandate Number): the primary identifier for the mandate.
    * **MIC** (Merchant Identifier Code): the 20-character hexadecimal code derived from your corporate PAN using SHAKE-256 hashing.
    * **SeqNum** (Sequence Number): the current sequence number of the mandate, required for pre-debit notifications and execution ordering.
    * Other mandate metadata required for execution, including mandate max amount, frequency, start date, and end date.
  </Step>

  <Step title="Share mandate details with Cashfree">
    After you receive the mandate data from PA1, share it with Cashfree. This handoff lets Cashfree take over mandate execution for your customers.

    <Warning>
      You are responsible for ensuring the mandate data from PA1 is accurate. Any discrepancy in MIC, UMN, or SeqNum causes mandate execution to fail.
    </Warning>
  </Step>

  <Step title="Cashfree validates and begins execution">
    Once Cashfree receives your mandate data, Cashfree validates the mandate and begins execution:

    * Cashfree maps the MIC against your Payee UPI ID.
    * Cashfree associates the new payee with all migrated mandates.
    * Cashfree begins executing mandates on the specified due dates.
  </Step>
</Steps>

## What is required from you

These merchant actionables describe the steps you must complete before Cashfree can begin executing migrated mandates.

| Action                               | Details                                                                                                                                                                                                       |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Confirm mandate eligibility with PA1 | Work with PA1 to identify which of your existing mandates are on eligible remitting banks and payer PSPs. Mandates on non-eligible banks or PSPs cannot be migrated yet.                                      |
| Request SID updation from PA1        | Formally ask PA1 to initiate the interoperability migration using `ReqMandate` with purpose code `AZ` for all eligible mandates. This is a prerequisite. Cashfree cannot execute mandates until this is done. |
| Collect mandate data file from PA1   | After migration is complete, collect the mandate data file from PA1 containing UMN, MIC, SeqNum, mandate max amount, frequency, start date, and end date for every migrated mandate.                          |
| Share mandate data with Cashfree     | Provide the mandate data file to Cashfree’s onboarding and integrations team for validation and ingestion.                                                                                                    |
| Coordinate go-live date              | Agree on a go-live date with Cashfree. Ensure PA1 stops executing the same UMN once Cashfree takes over to avoid duplicate debits.                                                                            |

## Migration checklist

Use this checklist to track your migration progress.

<div class="checklist-item bg-[rgba(255,251,235,0.5)] dark:bg-[rgba(31,41,55,0.5)] border border-gray-800 dark:border-gray-300 rounded-lg p-6 mb-5 max-w-2xl" data-question="identify-mandates">
  <div class="checklist-question-container flex justify-between items-center mb-4">
    <div class="checklist-question flex items-center gap-3">
      <div class="checklist-circle-icon">
        <svg class="checklist-check-mark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
        </svg>
      </div>

      <span>Have you identified all active UPI AutoPay mandates on your current payment aggregator?</span>
    </div>

    <div class="button-group">
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="yes">Yes</button>
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="no">No</button>
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="na">N/A</button>
    </div>
  </div>

  <div class="warning-box">
    <svg class="icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
    </svg>

    <span>List every active mandate before moving forward. Missing mandates can delay the migration.</span>
  </div>

  <div class="info-box">
    <svg class="icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
    </svg>

    <span>Work with PA1 to extract your active mandate list and confirm the source UPI app and remitting bank for each mandate.</span>
  </div>
</div>

<div class="checklist-item bg-[rgba(255,251,235,0.5)] dark:bg-[rgba(31,41,55,0.5)] border border-gray-800 dark:border-gray-300 rounded-lg p-6 mb-5 max-w-2xl" data-question="filter-banks">
  <div class="checklist-question-container flex justify-between items-center mb-4">
    <div class="checklist-question flex items-center gap-3">
      <div class="checklist-circle-icon">
        <svg class="checklist-check-mark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
        </svg>
      </div>

      <span>Have you filtered mandates by eligible remitting banks?</span>
    </div>

    <div class="button-group">
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="yes">Yes</button>
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="no">No</button>
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="na">N/A</button>
    </div>
  </div>

  <div class="warning-box">
    <svg class="icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
    </svg>

    <span>Only mandates with eligible remitting banks can migrate under current interoperability coverage.</span>
  </div>

  <div class="info-box">
    <svg class="icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
    </svg>

    <span>Eligible banks today include HDFC Bank, PNB, IndusInd Bank, Yes Bank, IDFC FIRST Bank and Cosmos Bank.</span>
  </div>
</div>

<div class="checklist-item bg-[rgba(255,251,235,0.5)] dark:bg-[rgba(31,41,55,0.5)] border border-gray-800 dark:border-gray-300 rounded-lg p-6 mb-5 max-w-2xl" data-question="filter-psps">
  <div class="checklist-question-container flex justify-between items-center mb-4">
    <div class="checklist-question flex items-center gap-3">
      <div class="checklist-circle-icon">
        <svg class="checklist-check-mark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
        </svg>
      </div>

      <span>Have you filtered mandates by eligible payer PSPs?</span>
    </div>

    <div class="button-group">
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="yes">Yes</button>
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="no">No</button>
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="na">N/A</button>
    </div>
  </div>

  <div class="warning-box">
    <svg class="icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
    </svg>

    <span>Only payer PSPs certified under interoperability can support migrated mandates today.</span>
  </div>

  <div class="info-box">
    <svg class="icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
    </svg>

    <span>Eligible payer PSPs today include Paytm, BHIM and INDmoney.</span>
  </div>
</div>

<div class="checklist-item bg-[rgba(255,251,235,0.5)] dark:bg-[rgba(31,41,55,0.5)] border border-gray-800 dark:border-gray-300 rounded-lg p-6 mb-5 max-w-2xl" data-question="request-migration">
  <div class="checklist-question-container flex justify-between items-center mb-4">
    <div class="checklist-question flex items-center gap-3">
      <div class="checklist-circle-icon">
        <svg class="checklist-check-mark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
        </svg>
      </div>

      <span>Have you requested PA1 to initiate interoperability migration for eligible mandates?</span>
    </div>

    <div class="button-group">
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="yes">Yes</button>
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="no">No</button>
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="na">N/A</button>
    </div>
  </div>

  <div class="warning-box">
    <svg class="icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
    </svg>

    <span>Cashfree cannot execute mandates until PA1 updates them with purpose code AZ.</span>
  </div>

  <div class="info-box">
    <svg class="icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
    </svg>

    <span>Ask PA1 to initiate `ReqMandate` with `type='UPDATE'` and purpose code `AZ` for eligible mandates.</span>
  </div>
</div>

<div class="checklist-item bg-[rgba(255,251,235,0.5)] dark:bg-[rgba(31,41,55,0.5)] border border-gray-800 dark:border-gray-300 rounded-lg p-6 mb-5 max-w-2xl" data-question="collect-data">
  <div class="checklist-question-container flex justify-between items-center mb-4">
    <div class="checklist-question flex items-center gap-3">
      <div class="checklist-circle-icon">
        <svg class="checklist-check-mark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
        </svg>
      </div>

      <span>Have you collected the migrated mandate data from PA1?</span>
    </div>

    <div class="button-group">
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="yes">Yes</button>
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="no">No</button>
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="na">N/A</button>
    </div>
  </div>

  <div class="warning-box">
    <svg class="icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
    </svg>

    <span>Ensure the data includes UMN, MIC, SeqNum, mandate max amount, frequency, start date and end date.</span>
  </div>

  <div class="info-box">
    <svg class="icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
    </svg>

    <span>Collect all required mandate metadata before sharing it with Cashfree.</span>
  </div>
</div>

<div class="checklist-item bg-[rgba(255,251,235,0.5)] dark:bg-[rgba(31,41,55,0.5)] border border-gray-800 dark:border-gray-300 rounded-lg p-6 mb-5 max-w-2xl" data-question="share-data">
  <div class="checklist-question-container flex justify-between items-center mb-4">
    <div class="checklist-question flex items-center gap-3">
      <div class="checklist-circle-icon">
        <svg class="checklist-check-mark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
        </svg>
      </div>

      <span>Have you shared the mandate data with Cashfree?</span>
    </div>

    <div class="button-group">
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="yes">Yes</button>
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="no">No</button>
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="na">N/A</button>
    </div>
  </div>

  <div class="warning-box">
    <svg class="icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
    </svg>

    <span>Notify Cashfree onboarding and integrations so they can validate and ingest your mandate data.</span>
  </div>

  <div class="info-box">
    <svg class="icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
    </svg>

    <span>Share the file with Cashfree promptly so your migrated mandates can move to production smoothly.</span>
  </div>
</div>

<div class="checklist-item bg-[rgba(255,251,235,0.5)] dark:bg-[rgba(31,41,55,0.5)] border border-gray-800 dark:border-gray-300 rounded-lg p-6 mb-5 max-w-2xl" data-question="go-live-date">
  <div class="checklist-question-container flex justify-between items-center mb-4">
    <div class="checklist-question flex items-center gap-3">
      <div class="checklist-circle-icon">
        <svg class="checklist-check-mark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
        </svg>
      </div>

      <span>Have you agreed on a go-live date with Cashfree and arranged a clean cutover?</span>
    </div>

    <div class="button-group">
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="yes">Yes</button>
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="no">No</button>
      <button class="checklist-btn px-3.5 py-1 rounded border-none bg-[rgba(31,41,55,0.2)] text-gray-800 dark:text-gray-100 cursor-pointer text-sm transition-all hover:bg-[rgba(31,41,55,0.4)]" data-value="na">N/A</button>
    </div>
  </div>

  <div class="warning-box">
    <svg class="icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
    </svg>

    <span>Without a clean cutover, you may risk duplicate mandate executions between PA1 and Cashfree.</span>
  </div>

  <div class="info-box">
    <svg class="icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
    </svg>

    <span>Confirm the go-live date with Cashfree and ensure PA1 stops executing migrated mandates before Cashfree begins.</span>
  </div>
</div>

## Current limitations and considerations

The limitations and risks applicable during the migration process are as follows:

* **POC stage**: Interoperability is in an early proof-of-concept phase. Complete full testing before live migration.
* **Limited bank and PSP coverage**: Only 6 remitting banks and 3 payer PSPs are currently eligible. Mandates outside this scope cannot migrate yet.
* **SeqNum conflicts**: If PA1 and Cashfree execute the same mandate at the same time, you risk duplicate debit attempts. Ensure a clean cutover with no overlap.

<div class="hidden" data-table-of-contents="bottom">
  <p class="mt-4 font-medium flex items-center gap-2 related-docs-heading">
    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="w-4 h-4">
      <path d="M3 4h7a2 2 0 0 1 2 2v13a2 2 0 0 0-2-2H3" />

      <path d="M21 4h-7a2 2 0 0 0-2 2v13a2 2 0 0 1 2-2h7" />
    </svg>

    <span>Related topics</span>
  </p>

  <ul>
    <li><a href="/payments/subscription/payment-modes#upi-autopay">UPI Autopay</a></li>
    <li><a href="/api-reference/payments/latest/subscription/mandate/create">Create Subscription API</a></li>
  </ul>
</div>
