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

# UPI

> Accept UPI payments through PayNext.

UPI is a real-time payment method in India that lets customers pay from their bank account by approving a request in their UPI app.

In PayNext, UPI is available through Stripe. The integration also supports recurring UPI flows (UPI AutoPay).

## Payment Method Details

| | |
| :- | :- |
| **Customer locations** | India |
| **Supported currencies** | INR |
| **Recurrent payments** | ✓ (UPI AutoPay) |
| **Manual capture support** | ✗ |
| **Refunds** | ✓ |
| **Supported processors** | <Badge>Stripe</Badge> |

## Prerequisites

1. Connect and activate the [Stripe integration](/integrations/processors/stripe) in PayNext
2. Enable UPI in your Stripe Dashboard under **Settings → Payment methods**
3. Contact PayNext support to enable UPI for your account
4. Turn on UPI in your PayNext checkout configuration

<Warning>
  UPI is available only for INR payments for customers in India.
</Warning>

## Amount limits

UPI caps how much a single payment can collect, and AutoPay caps each recurring charge.

| | |
| :- | :- |
| **Per payment** | ₹1 to ₹100,000 |
| **Per recurring charge (AutoPay)** | Up to ₹15,000 |
| **Free trials on recurring plans** | ✗ |

Two plan rules follow from those limits:

* A recurring plan needs a paid first charge. UPI can't collect ₹0, so a free-trial plan can't enroll an AutoPay mandate.
* The first charge on a recurring plan can't exceed the regular recurring price, because it is charged against the mandate the customer is enrolling.

UPI isn't offered at checkout for a plan that breaks any of these rules, so the customer never sees an option that would fail.

## How it works

Customers pay by entering their UPI ID or scanning the QR code, then approving the request in their UPI app with their UPI PIN.

Recurring UPI runs on UPI AutoPay, a mandate-based flow built for subscriptions. The **mandate** is the customer's authorization for future automatic charges. It carries a maximum amount — set just above the recurring price to leave headroom, and capped at ₹15,000.

### Initial payment (UPI AutoPay)

The customer's approval does both things at once — it pays the first amount and enrolls the AutoPay mandate in a single step. There is no separate "set up now, pay later" step.

### Recurring charges

After the mandate is active, recurring charges are taken automatically according to the subscription's billing cycle. The customer doesn't approve each renewal: AutoPay charges up to the mandate's maximum without a new authorization.

### One-time payments

A one-time UPI payment creates no mandate. It is a single approval for a single charge, so it can't be reused for a later payment or a subscription.

## Settlement and timing

UPI runs on India's instant account-to-account rails, so there is no card-style authorization or manual capture step.

In the PayNext [payment status flow](/guides/payments/lifecycle), a UPI payment never enters `AUTHORIZED`. It stays `PENDING` while waiting for the customer's approval in their UPI app, moves to `SETTLING` once the charge is processing, and becomes `SETTLED` when Stripe confirms success. A failed charge ends as `DECLINED` or `FAILED`, and an abandoned approval leaves the payment `INCOMPLETE`.

* **Initial payment:** the request expires after about five minutes, so the customer needs to approve it promptly. Approved payments usually settle within minutes. You receive the final status through a Stripe webhook in PayNext.
* **Recurring charges:** UPI requires advance notice to the payer before an automatic debit, so recurring charges start about a day before the money moves. Allow that window for a recurring charge to complete and settle.

<Note>
  A successful approval is not the same as settlement. Treat a UPI payment as complete only once it reaches the succeeded status via webhook.
</Note>

## If the customer doesn't complete payment

* **Approval not completed:** if the customer closes the request or lets it expire, the payment is marked incomplete. No charge is taken, no mandate is created, and no subscription is started. The customer can retry within the same checkout session.
* **Mandate cancelled by the customer:** once a mandate is revoked, no further recurring charges can be taken against it. Upcoming recurring charges will fail, and the subscription follows your normal retry and cancellation handling.

Grant product access based on a successful payment status, not on checkout approval alone.

## Saved payment methods

A UPI payment method is charged only through its AutoPay mandate, so it isn't offered for one-click reuse at checkout. A repeat one-time UPI payment is always a fresh approval in the customer's UPI app.

## Testing

<Steps>
  <Step title="Configure Stripe credentials">
    Use the correct Stripe environment in your PayNext integration and make sure UPI is enabled for that account.
  </Step>

  <Step title="Create a UPI payment">
    Start a UPI payment via PayNext checkout using INR for a customer in India, on a plan that fits the UPI amount limits.
  </Step>

  <Step title="Complete customer approval">
    Approve the request in the UPI app. For a subscription, this single approval both pays the first amount and enrolls the AutoPay mandate.
  </Step>

  <Step title="Verify the payment">
    Confirm the payment appears in the PayNext dashboard and that the final succeeded status is received via Stripe webhook.
  </Step>

  <Step title="Check the incomplete path">
    Start another payment and let the request expire without approving it. Confirm the payment is marked incomplete, no subscription is created, and the same checkout session can be retried.
  </Step>

  <Step title="Verify recurring behavior">
    For UPI AutoPay, confirm the next charge is scheduled according to the subscription's billing cycle and stays within the mandate's maximum amount.
  </Step>
</Steps>

See the [Stripe UPI testing guide](https://docs.stripe.com/payments/upi/accept-a-payment) for the test UPI IDs that simulate success and failure.

## Refunds

UPI payments can be refunded after the payment settles. A refund can't be issued while a payment is still settling, so wait for the succeeded status before refunding.

## Notes

* UPI does not support manual capture.
* The amount limits are checked against the plan price. If you add tax on top of the plan price, keep the tax-inclusive total within the same limits.
* Recurring charges start ahead of the billing date because UPI requires advance notice to the payer.

## If the customer revokes the mandate

A customer can cancel the UPI AutoPay mandate in their UPI app. PayNext receives that from Stripe and sets the payment method `status` to `revoked`.

A revoked payment method can't be charged. Renewals stop being attempted—the aborted attempt is recorded as `INCOMPLETE` with `decline_code` `payment_method_disabled`—and the subscription stays `past_due` for 14 days before it is cancelled with reason `dead_instrument`. See [Dead payment methods](/guides/use-cases/recover-subscriptions#dead-payment-methods).

Each change is reported by [`customer.payment_method.updated`](/webhooks/introduction/event-types#payment-method-events).


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