UPI Collect

UPI Collect
Accept UPI Collect payments in India where customers enter a Virtual Payment Address and approve a push notification in their UPI app
Payment typeOnline
Payment flowDirect

Checkout

Integration type API v1

Coverage

CountriesIndia (IN)
CurrenciesIndian Rupee (INR)
Min amount29.50 INR
Max amountBank dependent

Capabilities

RecurringYes
RefundYes
Partial refundsYes
Multiple partial refundsNo
ChargebackNo

UPI Collect is a pull transaction where the customer manually enters a VPA. The merchant sends a collect request, and the customer approves it with a push notification in their UPI app. You need to set payment_method_flow to direct or omit the field. UPI Intent, on the contrary, simplifies the flow by removing VPA entry, improving mobile conversion, and supporting QR checkout on desktop.

NPCI (National Payments Corporation of India) plans to deprecate the UPI Collect flow. Migrate existing integrations to UPI Intent.

Principle of operation

  1. Selection at checkout
    Customer selects UPI as the payment method at checkout.
  2. Payment initiation
    Customer enters a VPA and other payment data. Set payment_method_flow to direct or omit the field.
  3. Authentication and authorization
    After the VPA is submitted, the payment provider determines which app should receive the notification and link the payment.
  4. Payment confirmation
    Customer approves the transaction in the UPI app within 15 minutes.
  5. Merchant notification
    Merchant receives a notification Webhook confirming the payment status.
UPI Collect payment page example UPI Collect payment page example UPI Collect payment page example

Recurring payments

Recurring payments up to ₹15,000 per individual transaction are processed without customer intervention. For amounts above ₹15,000 per transaction, an additional authentication factor is required for each debit. These debits are not supported.

Customer receives a notification 24 hours before the scheduled charge.

  • If the customer declines the follow-up charge, a decline response is returned.
  • If the customer does not decline the charge, a success response is issued.

When creating the initial payment, specify the amount to be debited for future subscription charges. This amount appears in the customer’s UPI app when the mandate is created. The mandate authorizes follow-up payments.

For example, if you have sold the customer a subscription plan for up to ₹3,000, the customer sees this amount at the time of mandate creation, along with a notice that payments may be up to ₹3,000.

Any payment below the amount specified in the initial request occurs without additional confirmation from the customer. However, the customer still receives notifications the day before the follow-up payment and can cancel the subscription at any time.

UPI mandate display at checkout example

Mandates

Mandate display at checkout

You must display mandate terms clearly at checkout, including the maximum charge amount and billing frequency, so customers can review them before mandate creation. For future_usage max_amount and billing_period configuration, use UPI Intent.

The customer can revoke a mandate at any time in their UPI app by selecting Delete AutoPay. When a mandate is revoked, Solidgate automatically cancels the associated subscription and sends a notification Webhook notification to the merchant.

VPA format

The VPA must follow the pattern: up to 100 characters, followed by @ , then up to 30 characters, such as name@bankname . An invalid VPA format returns error code 2.01 .


Handle UPI errors

Specific errors may occur when a UPI payment attempt fails.

  • Guide
    The payment was not completed within the allocated timeframe, leading to order expiration.
    0.02
    Order expired
    Customer did not complete authorization within the 15 minute session window.
  • Guide
    This error indicates an issue with the provided data format.
    2.01
    Invalid data
    Incorrect VPA format or incorrectly formatted phone number. Validate the india_vpa format, such as username@bankname . Validate customer_phone . Only digits 0 through 9 and the + symbol are permitted.

Looking for help? Contact us
Stay informed with Changelog