Shopify / Shopify/checkout-sheet-kit-android

Does the Checkout Sheet Kit WebView handle upi:// / intent:// app hand-off? (Razorpay UPI Intent not rendering on Android)

Open
#571 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Bug stale untriaged
Dominant language
Kotlin
Stars
27
Forks
16
Avg merge
11h 4m
Merged PRs (30d)
3

Description

What area is the issue related to?

Checkout Sheet Kit

What version of the package are you using?

Package: @shopify/checkout-sheet-kit (React Native) v3.8.1, which bundles the native com.shopify:checkout-sheet-kit (Android) v3.5.3. React Native 0.86.0, Expo SDK 57, New Architecture enabled. Device: physical Android phone (Android 13+), Google Pay installed and working. Reproduced on a preview/release build, not a debug/dev client.

Reproducible sample code

No response

Steps to Reproduce
  1. Present the hosted checkout via Checkout Sheet Kit on a physical Android device with Google Pay installed.
  2. Reach the payment method selection step.
  3. Observe: no UPI / Google Pay section is shown.
  4. Open the identical checkout URL in the device's mobile browser → UPI and Google Pay render and complete successfully.
Expected Behavior

UPI Intent options render inside the WebView and, on selection, launch the installed UPI app, then return to the checkout to complete the order — or, if that isn't supported, clear guidance on the recommended pattern.

Actual Behavior

On Android, when our hosted Shopify checkout is presented inside the Checkout Sheet Kit WebView, the entire UPI payment section (including Google Pay) does not render. On the exact same device and merchant account, our mobile web checkout shows and completes all UPI options normally.

We'd like a definitive answer on whether the Sheet Kit WebView supports the UPI Intent app hand-off (launching Google Pay / PhonePe via upi:// / intent://) and returning to the app, and what host-app configuration, if any, is required.

Context: NPCI UPI Collect deprecation

Per NPCI guidelines, the UPI Collect flow was deprecated for Android apps effective 28 Feb 2026 (mobile web and iOS apps are exempt). Razorpay's docs confirm this. The practical consequence is that on Android apps, UPI must now use the Intent flow, which requires the checkout environment to launch the external UPI app and return afterward.

We suspect the missing UPI section is Razorpay detecting that the WebView environment cannot perform the Intent hand-off and therefore not offering UPI at all — but we'd like the SDK team's confirmation of what the WebView does and doesn't do here.

Environment
@shopify/checkout-sheet-kit (React Native): 3.8.1
Underlying Checkout Sheet Kit (Android): as bundled by the above RN release
React Native: 0.86.0 (Expo SDK 57), New Architecture enabled
Device: physical Android phone (Android 13+), Google Pay installed and working
Store: custom primary domain on HTTPS (not *.myshopify.com)
Payment gateway: Razorpay (via Shopify-hosted checkout, not Razorpay Custom Checkout)

Questions:

  1. Scheme hand-off: Does the Checkout Sheet Kit WebView intercept and launch non-http(s) URLs such as upi://… and intent://… so that external UPI apps open? If yes, since which version?
  2. Return flow: After the external UPI app completes, how does the SDK expect the buyer to be returned to the sheet — via App Links (assetlinks.json) on the storefront domain, or does the SDK handle the redirect internally?
  3. Required host config: Is any host-app configuration required for UPI Intent to work — e.g. assetlinks.json population, intent filters, a custom WebViewClient, or SDK options?
  4. Android 11+ package visibility: Does the host app need entries in AndroidManifest.xml (e.g. for upi:// intents or specific UPI app packages) for the WebView to resolve and launch UPI apps under Android's package-visibility restrictions?
  5. Expected behavior post-NPCI: Given the Collect deprecation, is UPI Intent expected to render at all inside the Sheet Kit WebView today? If not, is routing the checkout to an external browser (Custom Tab) the recommended pattern for UPI on Android — and are there plans to support in-WebView UPI Intent?
Screenshots/Videos/Log output

No response

Storefront domain

Primary storefront domain (where checkout runs): goodnewss.in (custom domain, HTTPS)
Shopify Storefront API domain: bwmhkj-k3.myshopify.com

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the Checkout Sheet Kit Android WebView's handling of upi:// and intent:// URLs, then test the hosted checkout on a physical Android 13+ device using the reported React Native and SDK versions. Done means documenting whether UPI Intent is supported, how the return flow works, and which host-app configuration is required or recommended.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, kotlin, react-native
Domain
mobile, payments
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.