Import Flow Recurring Payments API

Integrate Import Flow Recurring Payments using Razorpay APIs.


Import Flow is a payment solution designed for International (non-Indian) businesses to accept payments from Indian customers without any additional paperwork or registration.

Your Indian customers can make recurring payments via local payment methods such as cards and UPI. The funds are settled in your overseas bank account. Know more about

.

Feature Request

This is an on-demand feature. Please raise a request with our

to get this feature activated on your account.

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.

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

).

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.

Razorpay-hosted registration link showing a monthly subscription mandate authorisation request, with maximum billing amount, frequency and expiry visible to the customer.

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.

Every mandate has four key parameters that you define at setup time. These are locked once the mandate is registered. You cannot change them later without creating a fresh mandate.

Handy Tips

Every registered mandate is uniquely identified by a token_id issued by Razorpay. This is the key you use for all future debit calls. Before attempting any debit, always check the token's current state: debiting against a paused or cancelled token will fail. Store the token_id securely against the customer record in your system.

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

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/recurringwebhook: payment.captured

Once the mandate is confirmed, all future debits are backend operations. You initiate them from your server with no customer interaction needed.

When you trigger a debit, Razorpay first sends a Pre-Debit Notification (PDN) to the customer through the issuing bank. This is an RBI-mandated notification that informs the customer of the upcoming debit, including the merchant name, amount and scheduled date. For UPI, this must be sent at least 24 hours before the actual debit. Razorpay handles this automatically.

After the PDN window, the actual debit happens backend. The customer's account is debited directly with no MPIN or OTP required, unless the amount exceeds the AFA limits set by RBI (see

below).

Step 1: Create a Debit Order

Create a new order for every debit. The amount must not exceed the max_amount set at mandate registration. Set payment_capture: true for automatic capture. POST /v1/orders

Step 2: Create the Recurring Payment

Call the Recurring Payment endpoint with the order_id, customer_id and token_id. This is fully server-side. There is no UI and the customer is not redirected anywhere. Razorpay queues the debit, sends the PDN and executes the debit after the notification window. POST /v1/payments/create/recurring

Step 3: Payment is confirmed

Razorpay sends a payment.captured webhook when the debit succeeds. For UPI, this typically arrives 24 to 36 hours after you trigger the payment due to the PDN window. For Cards and eMandate, it is typically faster. Avoid creating another debit for the same token until you have received a terminal status (payment.captured or payment.failed) via webhook.

Watch Out!

Avoid creating a debit on the last day of the mandate's frequency cycle. Creating a subsequent payment on the last day of the cycle (for example, last day of the month for a monthly mandate) will fail because the pre-debit notification takes 24 hours and the actual debit attempt falls into the next billing cycle. Always allow at least one business day of buffer before the cycle resets.

AFA (Additional Factor of Authentication) is an extra layer of approval required for high-value recurring debits. When AFA is triggered, the customer receives a notification from their bank and must enter their UPI MPIN or card OTP before the debit is processed. This is an RBI mandate, not a Razorpay policy, and applies across all Recurring Payment methods.

For UPI Autopay, NPCI enforces both the maximum mandate amount you can register and the per-debit silent threshold below which AFA is not required. Two parameters drive the applicable limits:

  • Your Merchant Category Code (MCC): Assigned to your business by Razorpay during onboarding. The MCC determines both the maximum mandate amount you can register and the AFA-free per-debit threshold.
  • The mandate frequency: Variable-amount mandates (frequency: as_presented) have lower maximum mandate ceilings than fixed-schedule mandates (daily, weekly, monthly, quarterly, yearly).

For most merchant categories, debits up to ₹15,000 are processed silently with no customer action needed. For debits above ₹15,000, the customer must approve via UPI MPIN before the debit executes.

Your integration type determines who owns the payment UI and how your frontend and backend communicate with Razorpay. The tabs below explain each integration type in detail, including platform support and what your team will own.

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.

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.

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.

Follow these integration steps:


Is this integration guide useful?