Designing an integration
Learn what choices you need to make to integrate subscriptions into your business.
Before you start building your subscription integration, you need to choose the right integration path, especially if you’re not writing the code yourself and need to collaborate with others. Use this guide to help you decide on the best way to build your integration, and follow the links to in-depth, step-by-step guides.
This guide is for users who aren’t necessarily writing code, but want to learn about the high-level subscription integration process so that they can create plans and organize resources.
If you already know how you’re going to build your integration, or if you want to start coding right away, see our integration builder.
Subscription models
You need to understand the available subscription models to help you make later choices, such as which pricing model and payment form to use. First, consider your business model:
- If you want customers to pay, then provision access to your service, click the pay up front tab below to learn more.
- If you want to collect payment details, then offer customers a free trial period before billing them, click the free trial tab below to learn more.
- If you want to provide users access to your service without asking them for any payment information (a freemium model), click the freemium tab below to learn more.
Metered billing
If you need to meter usage, see metered billing. You need to do this when you create a price.
Collect payment information
If you don’t want to write a lot of code, use Checkout, Stripe’s prebuilt, hosted payment page. See the subscriptions with Checkout integration guide to get started.
If you want a more customized payment form that you can embed into your existing website, use Elements, a set of prebuilt UI elements that’s part of Stripe.js.
Display pricing information
Embed a pricing table on your website to show customers pricing information for subscriptions. When customers choose a subscription option, they’re taken directly to checkout. Configure, customize, and update directly in the Dashboard without writing any code.
Modify subscriptions
If you’re collecting payment information with Checkout, you can use the customer portal to allow customers to directly update their subscription details, like payment method and frequency. See the integration guide for detailed instructions on setting this up. (Before integrating, you should also be aware of the limitations of the portal.)
If you’re integrating with Elements, you can add a form on the frontend to collect details about the plan they want to change (such as the price ID and their customer information) and send that to an endpoint on the backend. For more details and sample code, see the section about letting customers change their plans in the Elements quickstart.
Pricing models
If you’re providing the same good every month and don’t expect that to change, use a simple fixed-price model. If the price varies depending on the number of users or units, you can use volume-based or tier-based prices. For a complete list of available models and a detailed description of each one, see examples of pricing models.
Set up webhooks
Set up webhooks to receive notifications about subscription-related events. For example, when you see the invoice.
notification, you can safely provision access to your service. See the subscription lifecycle for more information about webhook events. For a complete list of subscription-related events, see subscription events. To learn about managing access to your product’s feature, see the doc on integrating with entitlements.