# Using the plugin on native mobile

_Last updated 18th August 2025_

### **Known limitations**

As of the time of writing, Bubble does not support [deep linking](https://www.adjust.com/blog/dive-into-deeplinking/). This means that there is no official way of redirecting a user to your  mobile app once they've completed a checkout session.

A workaround some Bubble users have used is to:

* Use a third party webview plugin that lets you display a URL in your mobile app
* Display the Stripe Checkout Session URL within this webview
* Once the user completes the payment they will be redirected to the Success/Cancel URL 'within' the webview
* You can then set  a “When” condition for the webview page URL becomes the redirect URL provided and then send the user to previous view

Please note we cannot guarantee the reliability of using this approach as it involves third party plugins.

### **In-App Purchases**

Apple and Google require you to use 'In-App Purchases' (IAP) for purchases that unlock features or functionality within your app. This includes things like:

* Subscriptions
* In-game currencies
* Game levels
* Access to premium content
* Unlocking a full version

See [this guide](https://www.checkout.com/blog/in-app-payments-guide) for a breakdown on when you need to use IAP.

Bubble does **not** currently support IAP (either natively or via a plugin like the Stripe Connect - Marketplace plugin), although they have stated it's a priority feature that they're working on.

### Payments that do NOT fall under IAP

Not all products require you to use an IAP mechanism. You can use an externally hosted payment provide (like Stripe) for:

* Physical products
* An off-app service

{% hint style="info" %}
It is highly recommended you do your own research to confirm whether your app can use a non-IAP mechanism. Your app will be rejected from the app store if it fails to comply with Apple/Google guidance.
{% endhint %}

### Using the plugin in your native app

#### **Step #1: Build the payment workflow in your web app**

* Create a page in the **web** version of your Bubble app and add a button that will trigger the payment flow
* Build out the necessary workflow actions to create a Checkout Session (see [this section](../implementing-key-features/splitting-one-off-payments) of the docs)

In the below example we've added a button to the index page in our web app':

<figure><img src="https://445589018-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOYowMYV4NApuJz7Z6lKJ%2Fuploads%2FOGqZxMsHhPThNwzZdF4M%2FScreenshot%202025-08-06%20at%2012.34.05.png?alt=media&#x26;token=8f5b73a1-7a12-475b-8a75-80d59a45f1ac" alt=""><figcaption></figcaption></figure>

Here's the workflow action associated with the button:

<figure><img src="https://445589018-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOYowMYV4NApuJz7Z6lKJ%2Fuploads%2FFrFhZwXb8khl0MUjRQok%2FScreenshot%202025-08-06%20at%2012.35.45.png?alt=media&#x26;token=71015e93-9909-4e31-97ea-ae9f6257b419" alt=""><figcaption></figcaption></figure>

#### Step #2: Add a web view element to your native mobile app

Add the Web View element to the view in your Mobile app builder that you want to trigger the payment from. Set the 'Destination page' to the page in your Web app that you added the button to in Step 1.

<figure><img src="https://445589018-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOYowMYV4NApuJz7Z6lKJ%2Fuploads%2F6Ski4ERybPb2Cx0yw0ya%2FScreenshot%202025-08-06%20at%2012.37.13.png?alt=media&#x26;token=39169f04-303a-4c7f-982c-d0ad052fe27d" alt=""><figcaption></figcaption></figure>

**IMPORTANT:** The Web View element will NOT be visible in the preview mode of your Bubble app. However, it will be visible on BubbleGo.

You'll now be able to trigger a Stripe Checkout Session from your native app:

<figure><img src="https://445589018-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOYowMYV4NApuJz7Z6lKJ%2Fuploads%2FIYR8JCOmVyitLwdwMq7U%2FXRecorder_Edited_20250806_01-ezgif.com-video-to-gif-converter.gif?alt=media&#x26;token=81a8ad9c-1669-4d76-8775-a74eb8880f6b" alt="" width="360"><figcaption></figcaption></figure>
