Migrate an extension to Stripe Apps
Learn why and how to migrate your extensions to Stripe Apps.
Extensions are legacy integrations built on Stripe Connect. Through OAuth and API requests, they bring Stripe data into other business tools, like analytics dashboards or data warehouses.
Stripe Apps replaced extensions as the preferred way to integrate Stripe with other tools as of 2022.
You can no longer create new extensions. All mention of legacy extensions were removed from the Stripe Partner Directory. If you own a legacy extension, migrate to Stripe Apps now to ensure discoverability on the Stripe App Marketplace.
Reasons to migrate 
Stripe Apps is an upgrade from legacy extensions. By migrating, you get the following:
- Better discoverability, with broad visibility in the Stripe Dashboard and the Stripe App Marketplace
- More granular permissions, so you can set (and your users can understand) what data and APIs an app can access
- Interactive functionality, with embedded UI components in the Stripe Dashboard (so users can interact directly with your app without leaving Stripe)
- No interruption to your existing extension users if they choose to migrate
What happens if you don’t migrate 
If you choose not to migrate your legacy extension to a Stripe App, your extension will continue to work as it does today, for now. Legacy extensions are officially deprecated, ongoing support isn’t guaranteed, and new features aren’t available to legacy extensions.
Additionally, new users can’t discover legacy extensions through the Partner Directory.
We recommend that you migrate your legacy extension to a Stripe App as soon as possible.
Stripe Apps vs. extensions 
An app can do everything an extension does, with two key additions:
Interactive functionality, using embedded UI components in the Stripe Dashboard.
More granular permissions to help users understand what data an app can access.
The other difference is that any user can discover apps from the Stripe App Marketplace instead of the Partner Directory.
Extensions | Stripe Apps |
---|---|
Any Stripe user can use your extension. | Any Stripe user can install your app. |
Not discoverable from the Stripe Partner Directory or Stripe App Marketplace. | Discoverable in the Stripe App Marketplace and Stripe Dashboard. |
You can find your existing extensions in the Dashboard, under Developers > Extensions. | You can find your apps in the Dashboard, under Developers > Apps. |
Extensions are limited to either all read or all write permissions. No support for granular permissions. | You can request a granular set of permissions from users as part of app installation, increasing security and user trust. |
You can’t create new extensions. | Any developer can build on Stripe’s App Platform. |
After users link their Stripe accounts to your extension with OAuth, you can make API requests on their behalf. | Choose from multiple authorization types to support your user onboarding and API request flow. |
Users interact with your legacy extension by installing additional tools and leaving Stripe. | Users can interact with your app directly in the Stripe Dashboard. |
No ability to extend the Stripe UI. | You can build directly in the Stripe Dashboard. |
Impact on your extension’s users 
When you upload and publish a Stripe App to the account that owns the legacy extension, this enables the migration process for users of your extension to switch to your Stripe App. The migration process doesn’t disrupt existing extension users.
After migrating your extension to a Stripe App, your existing users will see a badge in their extension settings page prompting them to re-authorize the permissions for your app. Your users must accept permissions to begin using your migrated app. Administrators on your users’ stripe accounts will see the following:

For a seamless migration process for your users, migrate your extension to an app by uploading the app to your existing account.
If you don’t want to prompt your existing users to migrate, you must upload and publish your Stripe App on a separate Stripe account. You can’t have both an existing extension and an unrelated Stripe app on the same Stripe account.
Migrate to Stripe Apps 
Follow the steps below to migrate your extension to a Stripe App.

Migrating an extension to a Stripe App
Before you begin
- While you develop your Stripe App, we recommend testing and uploading your app with a separate or new Stripe account. You must use a different ID for your app in the test account because app IDs are globally unique (for example,
"id": "com.
andexample. myapp" "id": "com.
).example. myapp. test" - To add an extra layer of safety, create a separate testing instance of your backend. While testing your Stripe app, avoid making changes to the backend code powering your live extension.
- After testing your Stripe app, upload the app (with your final desired app ID) to the same Stripe account that owns your extension, then publish your app.
Choose an authentication type
To make API calls from your back end on behalf of users that install your app, you must choose from the available API authentication types. Most legacy extensions find that either the platform
or oauth
options offer a drop-in replacement for their existing Stripe integration, with minimal changes required.
Add permissions to your app
Add permissions to your app manifest.
If you need help with identifying the right permissions, after you upload your app you can use the Permission Migration Tool on the App Details page to view recommended missing permissions. The tool reviews the recent requests on your account and analyzes the necessary permissions for your app.
You can find the migration tool by navigating to your app on the App Details page in the Dashboard. The tool exists in multiple locations highlighted below.

Callout and button for unpublished apps

Pushed to overflow menu option when app is published
Warning
When a user authorizes the new permissions for your Stripe App, this overwrites the unrestricted read/write all permissions previously granted to your extension. To ensure your existing users don’t experience permissions-related interruptions when migrating, you must include the necessary permissions in your app manifest prior to migrating existing users.
Upload your app
Use the CLI to upload your app to Stripe.
Publish your app
Submit your app for review and publish it on the Stripe App Marketplace.
To increase your chances of passing app review, adhere to Stripe’s:
Note
When you provide test credentials, make sure the test account has access to the app installation flow.
Your app must pass App Review to list it in the Stripe App Marketplace.
Onboard users
After migration, your existing users must re-authorize the app’s permissions in the Dashboard in order to use your Stripe app.
You can onboard new users to your Stripe App in two ways:
- You can publish your app in the Stripe App Marketplace after migrating your legacy extension and passing App Review.
- New users can continue to onboard to your legacy extension with Connect OAuth from your website.
Note
To avoid onboarding new users with OAuth after you complete the migration, you can remove your OAuth callbacks and redirect new users to your app listing on the Stripe App Marketplace by changing your website’s Connect with Stripe button.