> ## Documentation Index
> Fetch the complete documentation index at: https://razorpay-881012b3.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Recurring Payments

> Charge your customers automatically on a schedule. The customer authorises once. You debit whenever you need to.

<div style={{display:"flex",flexWrap:"wrap",alignItems:"center",gap:"0.35rem 0.9rem",border:"1px solid rgba(128,128,128,0.28)",borderRadius:"0.5rem",padding:"0.45rem 0.75rem",margin:"0 0 1.25rem",fontSize:"0.875rem"}}>
  <span style={{fontWeight:600}}>Available in</span>
  <span>🇮🇳 India</span>
</div>

Recurring Payments lets you charge your customers automatically on a schedule, whether daily, weekly, monthly or yearly, without them having to pay again each time. The customer authorises once. You debit whenever you need to.

## What are Recurring Payments?

Think of any service where a customer pays regularly: a streaming subscription, a gym membership, a loan EMI or a SIP investment. These businesses do not ask their customers to manually transfer money every month. Instead, they collect it automatically, on a fixed schedule, from the payment method the customer set up once.

That is exactly what Razorpay Recurring Payments lets you build. Your customer authorises their UPI ID, card or bank account once. Razorpay creates a mandate, a standing instruction, and from that point forward you control when to debit them. No customer action is required for subsequent payments (unless the amount crosses AFA limits, more on that in [AFA limits](/docs/payments/recurring-payments/overview/integrate#afa-limits)).

<Info>
  **How is this different from EMI?**

  EMI (Equated Monthly Instalment) is a financing arrangement where a bank or NBFC lends money and the borrower repays in fixed instalments. Recurring Payments is the payment collection mechanism: it is how lenders actually collect those EMI payments from the borrower's bank account automatically. You are not lending money. You are building the rails to collect what is owed. EMI is the use case. Recurring Payments is how it gets done.
</Info>

### When should you use Recurring Payments instead of one-time payments?

<img src="https://razorpay.com/docs/build/browser/assets/images/recurring-payments-registration-link.jpg" alt="Razorpay-hosted registration link showing a monthly subscription mandate authorisation request, with maximum billing amount, frequency and expiry visible to the customer." width="300" />

One-time payments are great for individual purchases: a user pays, you deliver, done. But if your business model depends on customers paying you regularly, one-time payments create friction at every billing cycle. The customer might forget, ignore the payment request or just churn. Recurring Payments eliminates that friction entirely.

Use Recurring Payments when:

* You charge customers on a defined schedule (monthly, quarterly, annually).
* Your revenue depends on customers staying subscribed and drop-offs hurt.
* You are collecting loan repayments, SIP investments or insurance premiums where debit reliability is critical.
* You want to automate billing so your team is not manually chasing payments.

## Common Use Cases

Recurring Payments is used across industries wherever predictable, scheduled collections matter.

<CardGroup cols={2}>
  <Card title="OTT and Streaming" href="/docs/payments/recurring-payments/overview#common-use-cases">
    Monthly subscriptions for streaming platforms, auto-debited with zero friction.
  </Card>

  <Card title="Loan EMIs" href="/docs/payments/recurring-payments/overview#common-use-cases">
    NBFCs and lending apps collect repayments automatically from the borrower's bank account or UPI.
  </Card>

  <Card title="SIP Investments" href="/docs/payments/recurring-payments/overview#common-use-cases">
    Mutual fund platforms collect monthly SIP amounts without the customer needing to approve each time.
  </Card>

  <Card title="Insurance Premiums" href="/docs/payments/recurring-payments/overview#common-use-cases">
    Annual or quarterly premium collection, auto-debited from the policyholder's account.
  </Card>

  <Card title="SaaS and B2B" href="/docs/payments/recurring-payments/overview#common-use-cases">
    Monthly or annual software subscriptions billed automatically to the customer's card.
  </Card>

  <Card title="Memberships" href="/docs/payments/recurring-payments/overview#common-use-cases">
    Gyms, clubs and learning platforms billing monthly or annually without manual renewals.
  </Card>

  <Card title="Utility Bills" href="/docs/payments/recurring-payments/overview#common-use-cases">
    Electricity, broadband and gas bills auto-collected from the customer's registered payment method.
  </Card>

  <Card title="Meal Plans and D2C" href="/docs/payments/recurring-payments/overview#common-use-cases">
    Weekly or monthly meal subscription deliveries billed at a fixed cadence.
  </Card>
</CardGroup>

## How a Merchant Sets This Up

Here is what the end-to-end flow looks like when a customer signs up for a monthly subscription on your platform.

1. **Customer picks a plan and billing frequency**: Your customer selects a plan and chooses to pay via UPI Autopay, card or bank account. Supported frequencies include `daily`, `weekly`, `monthly`, `quarterly` and `yearly`.
2. **Your server creates an order with mandate details**: You tell Razorpay the max amount, the billing frequency and when the mandate should expire. Razorpay prepares an authorisation payment for the customer. `POST /v1/orders`
3. **Customer approves the mandate, once**: The customer is taken to their UPI app, card form or netbanking portal to approve the mandate. A small first payment (₹1 for UPI and cards, ₹0 for eMandate) is collected to activate it. This is the only time the customer needs to take action. On success, a `token_id` is generated.
4. **Mandate confirmed, you are ready to charge**: Razorpay sends you a `token.confirmed` webhook. The mandate is active. From this point, you debit the customer on your schedule with no customer action required. `webhook: token.confirmed`
5. **You debit automatically on each billing date**: On the scheduled date, your server creates a new order and triggers a payment using the `token_id`. Razorpay handles the debit in the background and notifies you when it is done. `POST /v1/payments/create/recurring` → `webhook: payment.captured`

<Info>
  **Razorpay Subscriptions: if you do not want to build all this yourself**

  Everything described above, creating mandates, scheduling debits, retrying failed payments, managing plan upgrades and downgrades, generating invoices, can all be handled automatically by [Razorpay Subscriptions](/docs/payments/subscriptions). You define the plan. Razorpay does the rest.

  If your use case is a straightforward subscription model, Subscriptions will get you live faster. If you need fine-grained control over debit timing, variable amounts or custom mandate logic, use the Recurring Payments APIs directly. Know more about [Razorpay Subscriptions](/docs/payments/subscriptions).
</Info>

## Supported Payment Methods

Razorpay supports Recurring Payments via three payment methods. Each has different setup mechanics, processing timelines and regulatory rules.

<CardGroup cols={2}>
  <Card title="UPI Autopay" href="/docs/payments/recurring-payments/overview/integrate#integration-matrix">
    Fastest growing. NPCI regulated. Customers authorise via intent deep-link. Silent debits below AFA limits. Auth: UPI Intent (recommended). First payment: ₹1.
  </Card>

  <Card title="Cards" href="/docs/payments/recurring-payments/overview/integrate#integration-matrix">
    Visa, Mastercard, RuPay. No frequency restrictions from the card network. Ideal for usage-based billing and B2B. Auth: Credit/Debit card. First payment: ₹1.
  </Card>

  <Card title="eMandate (NACH)" href="/docs/payments/recurring-payments/overview/integrate#integration-matrix">
    Debits directly from a bank account. No charge at registration. Fully backend transfers. Auth: Netbanking, Debit card, Aadhaar. First payment: ₹0.
  </Card>

  <Card title="Registration Links" href="/docs/payments/recurring-payments/overview/integrate#integration-matrix">
    Razorpay-hosted page for async mandate registration. Send a link via SMS or email. Works across UPI, Cards and eMandate.
  </Card>
</CardGroup>

## Choose Your Integration Type

Your integration type determines who owns the payment UI and how your frontend and backend communicate with Razorpay. Pick the one that fits your team and product:

| If you are...                                                                                                                  | Pick                   | Why                                                                                   |
| ------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | ------------------------------------------------------------------------------------- |
| A small or mid-size business looking to go live quickly with the least amount of code                                          | Standard Checkout      | Razorpay hosts the payment UI. You only pass an `order_id` and listen for the result. |
| A merchant who wants to design your own payment screen but does not want to handle PCI compliance or NPCI integration directly | Custom Checkout        | Your UI, Razorpay's processing engine. You build the screen, Razorpay does the rest.  |
| A merchant who needs full server-side control or cannot load any third-party SDK in your app or browser                        | S2S (Server-to-Server) | Fully backend integration. No Razorpay JavaScript or mobile SDK loads on the client.  |

The tabs below explain each integration type in detail, including platform support and what your team will own.

<Tabs>
  <Tab title="Standard Checkout">
    **Razorpay-hosted UI. Least code. Fastest to go live.**

    You initialise the Razorpay JavaScript SDK with an `order_id` and `customer_id`. Razorpay renders the full payment sheet, including UPI app selection, intent deep-linking, card form and netbanking redirect, and handles all the edge cases. You receive the result in a callback. You can set your brand colour, logo and name. The layout and payment method ordering are managed by Razorpay.

    | Platform               | Support   | Notes                                                                        |
    | ---------------------- | --------- | ---------------------------------------------------------------------------- |
    | Desktop web            | Supported | Full support. Recommended integration path for web.                          |
    | Mobile web (mWeb)      | Supported | Full support. UPI intent works on Android mWeb.                              |
    | Android SDK            | Supported | Razorpay Android Standard SDK. Integrate via Maven.                          |
    | iOS SDK                | Supported | Razorpay iOS Standard SDK. UPI Collect is permitted on iOS (NPCI exemption). |
    | React Native / Flutter | Supported | Use the Razorpay wrapper for your framework.                                 |
    | WebView                | Partial   | Works but not recommended. Requires extra configuration for UPI intent.      |

    <Warning>
      **Watch Out!**

      WebView integration reuses web code but introduces issues with UPI intent, popup flows and bank page redirects. Use the Android or iOS SDK for native mobile apps.
    </Warning>
  </Tab>

  <Tab title="Custom Checkout">
    **Your UI. Razorpay processes the payment behind it.**

    You build your own payment screen, including UPI app selector, card input fields and bank list, and use the Razorpay JS library (`razorpay.js`) to initiate the payment in the background. Razorpay returns an intent URL or redirect URL that you handle. Full control over what the customer sees. Razorpay handles what they do not.

    For UPI, always pass the TPAP name (for example, `gpay`, `phonepe`) in the `notes` object since you own the UPI app selection UI and know which app the customer chose. Razorpay uses this for routing and mandate quality analytics.

    | Platform             | Support   | Notes                                                                               |
    | -------------------- | --------- | ----------------------------------------------------------------------------------- |
    | Desktop and mWeb     | Supported | Use `razorpay.js` + `createPayment()`.                                              |
    | Android SDK (Custom) | Supported | Use Razorpay Android Custom SDK for full UI control.                                |
    | iOS Custom           | Supported | Use Razorpay iOS Custom SDK. UPI Collect is permitted on iOS.                       |
    | UPI Intent           | Supported | You handle the intent URL returned in the API response.                             |
    | Card recurring       | Supported | Pass card details via `razorpay.js`. Never route raw card data through your server. |
  </Tab>

  <Tab title="S2S (Server-to-Server)">
    **Fully server-side. No client-side SDK. Maximum control.**

    All communication with Razorpay is server-to-server. You call `POST /v1/payments/create/json` from your backend, receive an intent or redirect URL in the response and manage the entire redirect and callback flow on your own. No Razorpay JavaScript loads in the browser or app at all.

    S2S card integration requires your business to be PCI-DSS compliant and explicitly approved by Razorpay since raw card data passes through your servers. For most merchants, Custom Checkout is the better path for card UI control without the compliance burden.

    | Platform               | Support   | Notes                                                                |
    | ---------------------- | --------- | -------------------------------------------------------------------- |
    | Desktop and mWeb       | Supported | Full support.                                                        |
    | Native Android / iOS   | Supported | Ideal for apps with strict no-third-party-SDK requirements.          |
    | UPI Intent             | Supported | You manage the intent redirect and `callback_url`.                   |
    | React Native / Flutter | Supported | Call Razorpay APIs from your backend. Handle UI natively in the app. |
  </Tab>
</Tabs>

<Info>
  **Handy Tips**

  Standard Checkout, Custom Checkout and S2S are available for UPI Autopay, Cards and eMandate. TPV and Irrevocable Mandates are available for UPI Autopay only. Registration Links are available across all methods.
</Info>
