Skip to content
Create account
or
Sign in
The Stripe Docs logo
/
Ask AI
Create account
Sign in
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Developer tools
Get started
Payments
Finance automation
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Overview
Versioning
Changelog
Upgrade your API version
Upgrade your SDK version
Developer tools
SDKs
API
Testing
Workbench
Event Destinations
Workflows
Stripe CLI
Stripe Shell
Developers Dashboard
Agent toolkit
Stripe health alertsBuild with LLMsStripe for Visual Studio CodeFile uploads
Security
Security
Extend Stripe
Stripe Apps
    Overview
    Get started
    Create an app
    How Stripe Apps work
    Sample apps
    Build an app
    Store secrets
    API authentication methods
    Authorization flows
    Server-side logic
    Listen to events
    Handle different modes
    Enable sandbox support
    App settings page
    Build a UI
    Onboarding
    Distribute your app
    Distribution options
    Upload your app
    Versions and releases
    Test your app
    Publish your app
    Promote your app
    Add deep links
    Create install links
    Assign roles in UI extensions
    Post-install actions
    App analytics
    Embedded components for Apps
    Embed third-party Stripe Apps
    Migrating to Stripe Apps
    Migrate or build an extension
      Legacy extensions
    Migrate a plugin to Stripe Apps or Stripe Connect
    Reference
    App manifest
    CLI
    Extension SDK
    Permissions
    Viewports
    Design patterns
    Components
Stripe Connectors
Partners
Partner ecosystem
Partner certification
HomeDeveloper toolsStripe Apps

Migrate an extension to Stripe Apps

Learn why and how to migrate your extensions to Stripe Apps.

Copy page

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:

  1. Interactive functionality, using embedded UI components in the Stripe Dashboard.

  2. 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.

ExtensionsStripe 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:

Migrated app permissions example

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.

Steps to migrate an 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.example.myapp" and "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.

Create an app manifest

Create an app manifest by creating a Stripe App.

OptionalAdd interactive functionality

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.

Entry point for permission migration tool for unpublished apps

Callout and button for unpublished apps

Entry point for permission migration tool for published 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:

  • App review requirements
  • App listing guidelines

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.

See also

  • Stripe Apps
  • Sample apps
Was this page helpful?
YesNo
Need help? Contact Support.
Join our early access program.
Check out our changelog.
Questions? Contact Sales.
LLM? Read llms.txt.
Powered by Markdoc