Android 13 (with backwards compatibility for Android 12) supports UPI payment flows by adding a dedicated QR Code scanner that users can access directly from the corresponding Quick Settings tile. Users can launch a UPI payment flow by scanning a QR Code either from the live camera or from a static image.
When multiple UPI apps are installed on a device, the user is presented with a disambiguation dialog. The payment flow then continues in the app selected by the user.
Note that the order of apps is not modified in any manner. Users' most frequently used apps are prioritized by the OS and displayed first, similar to the existing UPI intent dialog.
Support UPI intents from Android QR scanner
When a payment app is launched via this flow, the calling package ID is set as com.google.android.gms. This value cannot be altered.
Payment apps need to verify this source and handle all the payment flows initiated from this package ID to be treated as initiated by QR and set the initiation mode to QR when sending data to the payee's PSP.
To distinguish between payments initiated from scanning a live QR Code (using the camera) and scanning a QR Code image (photo on device), the QR scanner passes an intent extra which helps identify the source of the QR Code.
Payment apps need to fetch the value of "intent extra" with the key
com.google.android.gms.UPI_QR_SOURCE, and then compare with the following:
STATIC_IMAGEstring indicates that the source is a static image.
LIVE_CAMERAstring indicates that the source is the camera.
QR code image stored on the device.
QR code image captured live using the camera