Subchapter 2.5
references/extension-types.mdMarkdown5 KBView on GitHub
Stripe Apps supports five extension types. Use the discovery interview in discovery.md to determine which one the user needs.
Renders custom UI inside the Stripe Dashboard using the Stripe UI toolkit. Runs in a sandboxed iframe.
Plain-language examples:
What you can build:
Key constraints:
@stripe/ui-extension-sdk/ui components — no Tailwind, HTML, or third-party UI librarieswindow, document, or localStorageRead: ui-extensions.md, workflow.md
Runs on the developer’s server. Receives Stripe webhooks and calls the Stripe API. No Dashboard UI.
Plain-language examples:
How it works:
Read: authentication.md, webhooks.md, backend.md, workflow.md
Combines a UI extension with a backend server. The UI can show data from external services and trigger server-side actions.
Plain-language examples:
How it works:
fetchStripeSignatureRead: all reference files
Lets your app change how Stripe processes billing or payments. Available types:
Billing extensions:
Payments orchestration:
Private preview: Extension interfaces are not generally available. If the user asks for this:
For Connect platforms that want to surface third-party Stripe Apps (like QuickBooks, Xero, or Mailchimp) directly inside their own product.
This is different from building an app. Embedded apps are for platforms that want to host existing apps, not for building new ones.
Private preview: If the user asks for this, point them to https://docs.stripe.com/stripe-apps/embedded-apps (opens in a new tab).
For UI extensions — maps plain-language descriptions to viewport IDs:
| What the user wants | Viewport ID |
|---|---|
| Next to a specific customer | stripe.dashboard.customer.detail |
| On the customers list page | stripe.dashboard.customer.list |
| Next to a specific payment | stripe.dashboard.payment.detail |
| On the payments list page | stripe.dashboard.payment.list |
| Next to a specific invoice | stripe.dashboard.invoice.detail |
| On the invoices list page | stripe.dashboard.invoice.list |
| Next to a specific subscription | stripe.dashboard.subscription.detail |
| On the subscriptions list page | stripe.dashboard.subscription.list |
| Next to a specific product | stripe.dashboard.product.detail |
| On the products list page | stripe.dashboard.product.list |
| Everywhere in the Dashboard (side panel) | stripe.dashboard.drawer.default |
| As its own full-screen page | Full-page app — stripe.dashboard.fullpage |
| On the Dashboard homepage | stripe.dashboard.home.overview |
| App settings page | settings |
| First-run setup after install | onboarding |
For the full viewport reference, see https://docs.stripe.com/stripe-apps/reference/viewports (opens in a new tab).