Supported workflows
Before you begin
Complete these steps before you send your first UPI payment through Adyen:- Set up an Adyen integration in your workspace. Follow the Adyen integration setup guide if you don’t have one yet.
- Ask Adyen to enable UPI on your Adyen merchant account.
- In the Payrails Portal, go to Settings → Integrations, open your Adyen integration, select UPI under Payment methods, and save.
- Add UPI as a payment option in your workflow.
Request fields for Adyen
Send these fields in the authorize request, in addition to the standard authorize fields. Payrails checks Required fields and returns an error when one is missing. Fields required by the PSP pass the Payrails checks but the PSP can decline the payment without them.Choose the journey
Payrails picks the Adyen UPI journey in this order:- When
meta.paymentMethods.upi.flowisqr, Payrails shows a QR code on a Payrails-hosted page. The customer scans it with any UPI app. - When
flowisintent, the response redirects the customer to the UPI app you name inappId. - Without a
flow, Payrails uses the intent journey when you send anappId, and the QR code journey when you don’t.
Authorize a UPI payment
Call authorize a payment withupi as the paymentMethodCode. This example uses the intent journey. The response includes the redirect to the customer’s UPI app.
Authorize request
"flow": "qr" and leave out appId.
The customer approves the payment in their UPI app, and Adyen sends the result to Payrails asynchronously. Confirm the result through webhook notifications or the execution status before you fulfill the order.
How Adyen handles UPI
- Adyen captures UPI payments automatically. When Adyen confirms the authorization, Payrails also records the capture, so the payment completes in one step.
- Payrails sends every UPI payment to Adyen as a new intent or QR code payment, never as a charge against a stored token. Save Instruments and merchant-initiated transactions (MIT) aren’t available for UPI through Adyen.
- Payrails still reads
meta.upi.flowandmeta.upi.appIdfrom older integrations. Usemeta.paymentMethods.upifor new integrations.