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

# UPI

> Accept UPI payments for instant bank transfers in India.

<Info>
  This page is part of **Supported Payment Methods**. [View all payment methods →](/guides/library/supported-payment-methods)
</Info>

UPI (Unified Payments Interface) enables instant bank-to-bank transfers in India. Customers pay using their UPI ID or by scanning a QR code with their UPI app (Google Pay, PhonePe, Paytm, etc.).

## Availability

UPI is available on all browsers and devices, but only for transactions in India.

| Platform         | Availability |
| ---------------- | ------------ |
| Desktop browsers | Yes          |
| Mobile browsers  | Yes          |
| iOS apps         | Yes          |
| Android apps     | Yes          |

```javascript theme={null}
const available = await engine.checkAvailability();
if (available.includes('UPI')) {
  // Show UPI button
}
```

<Note>
  UPI is only available for INR transactions with Indian bank accounts.
</Note>

## Requirements

UPI requires:

* A UPI provider account (see [UPI Setup](/guides/library/upi-setup)), configured as a UPI eWallet account in [Orchestra Portal](https://portal.orchestrasolutions.com/#/resource/eWalletAccount)
* Transaction currency must be INR
* Customer must have a UPI-enabled bank account in India

```javascript theme={null}
// Server-side session creation
const session = {
  operation: 'CHARGE',
  paymentGatewayAccountId: 'your-psp-account',
  allowedeWalletAccountIds: ['your-upi-account'],
  allowedBrands: ['VISA', 'MASTERCARD', 'AMEX'],
  amount: 999.00,
  currencyCode: 'INR',
  countryCode: 'IN',
  mode: 'LIVE'
};
```

## Button Setup

```html theme={null}
<div id="upi-button"></div>
```

```javascript theme={null}
engine.payBy(
  [{ name: 'UPI', domEntitySelector: '#upi-button' }],
  handleResult,
  { color: 'Dark', text: 'Pay' }
);
```

## How It Works

### On Mobile

1. Customer clicks the UPI button
2. Customer's UPI app opens (or they choose from installed apps)
3. Customer reviews payment details and enters UPI PIN
4. Payment is processed instantly
5. On completion, results are returned to the client, ready to be sent to your server for validation

### On Desktop

1. Customer clicks the UPI button
2. A QR code is displayed
3. Customer scans the QR code with their UPI app
4. Customer reviews payment details and enters UPI PIN
5. Payment is processed instantly
6. On completion, results are returned to the client, ready to be sent to your server for validation

## Supported Operations

| Operation             | Supported | Description                 |
| --------------------- | --------- | --------------------------- |
| `CHARGE`              | Yes       | Process payment immediately |
| `TOKENIZE`            | No        | Not supported               |
| `CHARGE_AND_TOKENIZE` | No        | Not supported               |

<Warning>
  UPI only supports immediate charges. Tokenization is not available for UPI payments.
</Warning>

## Transaction Limits

UPI has per-transaction and daily limits set by banks:

* **Per transaction**: Typically ₹1,00,000 (varies by bank)
* **Daily limit**: Typically ₹1,00,000 - ₹2,00,000 (varies by bank)

## Related

<CardGroup cols={2}>
  <Card title="UPI Setup" icon="building-columns" href="/guides/library/upi-setup">
    Configure UPI credentials
  </Card>

  <Card title="Result Handling" icon="check" href="/guides/library/result-handling">
    Parse payment results
  </Card>
</CardGroup>
