Welcome to Zuora Product Documentation

Explore our rich library of product information

One-time payment flow for Adyen UPI QR

Use Adyen UPI QR to process one-time UPI payments in Zuora by displaying a QR code on the hosted payment page, capturing customer authorization in their UPI app, and updating payment status based on Adyen webhooks.

How desktop UPI QR payments work

This section describes how one-time UPI payments are processed on desktop using a QR code.

When a customer selects UPI at checkout, Zuora initiates a payment request through Adyen and displays a QR code on the hosted payment page. The customer scans the QR code using a UPI-enabled mobile application and completes the payment in their app.

Payment processing behavior

On payment initiation

  • Zuora initializes the UPI payment request through Adyen
  • A payment timer window is started (default: 36 minutes)
  • The hosted payment page displays:
    • A QR code
    • Instructions for completing the payment
    • A countdown timer indicating validity

Customer action

  • The customer scans the QR code using a UPI application such as Google Pay, PhonePe, or BHIM
  • The customer confirms the payment in the UPI application

Gateway and system behavior

  • Adyen returns an initial Pending response for the payment
  • Adyen sends webhook events with the final payment result
  • Zuora processes the webhook events and updates:
    • Payment status
    • Gateway state
    • Payment page callback
  • The QR code timer is closed when:
    • A final result is received, or
    • The timer expires

Result handling

Successful payment

  • Payment status is set to Processed
  • Gateway state is set to Settled
  • A success callback is triggered

Failure or timeout

  • Gateway state is set to FailedToSettle

If no webhook is received before the timer expires:

  • Payment status is set to Payment_Status_Unknown
  • You should query the payment status using the Retrieve Payment API