India recurring payments

Recurring charges on India-issued cards need an RBI e-mandate. Your customer authorizes it once at checkout, then future charges run automatically.

View as Markdown

The Reserve Bank of India (RBI) requires an extra step before you can charge an India-issued card on a recurring basis. Your customer gives a one-time authorization - an e-mandate - and completes their bank’s authentication. After that, recurring charges run on their own.

You don’t build any of this. When a customer checks out with an India card on a recurring purchase, PaymentKit adds the consent step for you.

How it works

  • One-time setup. At checkout, your customer reviews the mandate terms, agrees, and completes their bank’s authentication (an OTP or 3-D Secure). That registers the e-mandate.
  • Then it’s automatic. Once the mandate is active, you charge it like any other saved card.
  • A per-charge cap. Every mandate has a maximum charge amount, set with headroom above the plan price.
  • A heads-up before each charge. The bank sends a pre-debit notice ahead of every charge.
  • Larger charges need a fresh OK. A charge above the cap, or over about ₹15,000, needs the customer to approve that one payment. Their bank includes an authentication link with the pre-debit notice.

What your customer sees

The consent step shows up on its own. On an India recurring checkout, right after the customer enters their card, a modal opens with the mandate terms and a checkbox. It’s the same modal everywhere - both your PaymentKit.js checkout and PaymentKit’s hosted checkout use it - and it picks up your brand color so it fits the rest of your page.

  1. They review the terms - the amount cap, how often you’ll charge, and when the mandate starts and ends.
  2. They tick the box to agree. The Accept button stays disabled until they do.
  3. They accept, then complete their bank’s authentication in the 3-D Secure dialog.

That registers the mandate, and PaymentKit takes the first payment during checkout, while your customer is present to authorize it. After that, renewals run on their own.

PaymentKit runs the RBI e-mandate through Stripe only. For the bank-authentication step, include Stripe.js on your checkout page: <script src="https://js.stripe.com/v3/"></script>.

If you embed with PaymentKit.js, you can pass your own colors to match the modal to your page.

Testing

You can’t exercise the e-mandate in the sandbox right now. Whether a card counts as India-issued comes from live card enrichment, and sandbox test cards don’t carry a real issuing country, so the consent step never appears there.

There’s nothing for you to turn on. In production, a live India-issued card on a recurring checkout gets the consent step on its own.

What to expect in production

  • The first payment is taken during checkout, while your customer is present to authorize it. After that, renewals run on their own.
  • Renewals settle asynchronously. The bank sends a pre-debit notice about a day before each charge, so a renewal can take up to about a day to settle - not the near-instant timing of a card payment.
  • A recurring charge that skips authentication is declined. That’s RBI’s rule, not something you can override.
  • If a mandate isn’t active yet - say the customer closed checkout before finishing - the charge is held and retried, not failed.