How Checkout works
Learn how to use Checkout to collect payments on your website.
Checkout is a low-code payment integration that creates a customisable form for collecting payments.
Checkout’s built-in features allow you to reduce your development time. It supports 40+ payment methods, including Link, which allows your customers to save their payment method for faster checkout. You can accept payments by embedding Checkout directly into your website, redirecting customers to a Stripe-hosted payment page, or creating a customised checkout page with Stripe Elements. Checkout supports payments for both one-off purchases and subscriptions.
You can also customise Checkout and access additional functionality with the Checkout Sessions API and the Stripe Dashboard. For a complete list of features, see its built-in and customisable features.
Checkout lifecycle
- When customers are ready to complete their purchase, your application creates a new Checkout Session.
- The Checkout Session provides a URL that redirects customers to a Stripe-hosted payment page.
- Customers enter their payment details on the payment page and complete the transaction.
- After the transaction, a webhook fulfils the order using the checkout.session.completed event.
Low-code integration
Checkout requires minimal coding and is the best choice for most integrations because of its prebuilt functionalities and customisation options. You can integrate Checkout by creating a Checkout Session and collecting customer payment details. Collect payments by redirecting customers to a Stripe-hosted payment page.
Compare Checkout to other Stripe payment options to determine the best one for you. Checkout displays a payment form to collect customer payment information, validates cards, handles errors, and so on.
Built-in and customizable features
Stripe Checkout has the following built-in and customizable features:
Built-in features
- Support for digital wallets and Link
- Responsive mobile design
- SCA-ready
- CAPTCHAs
- PCI compliance
- Card validation
- Error messaging
- Adjustable quantities
- Automatic tax collection
- International language support
- Adaptive Pricing
Customizable features
- Collect taxes
- Custom branding with colours, buttons, and font
- Cross-sells
- Global payment methods
- Subscription upsells
- Custom domains (Stripe-hosted page only)
- Email receipts
- Apply discounts
- Custom success page
- Recover abandoned carts
- Autofill payment details with Link
- Collect Tax IDs
- Collect shipping information
- Collect phone numbers
- Set the subscription billing cycle date
Custom branding
You can set fonts, colours, icons, and field styles for your Stripe-hosted Checkout page using the Branding settings in the Dashboard. For more information, see Customise your integration.
Custom domains
If you use Stripe’s custom domain feature, you can serve Stripe-hosted Checkout pages on a subdomain of your custom domain. Custom domains are a paid feature. For information, see Pricing and fees.
Checkout Session
The Checkout Session is a programmatic representation of what your customers see on the checkout page. After creating a Checkout Session, redirect your customers to the Session’s URL to complete the purchase. When customers complete their purchase, you can fulfil their orders by configuring an event destination to process Checkout Session events. This code snippet from the quickstart guide is an example of how to create a Checkout Session in your application.
One-time and recurring payments
Allow customers to make one-off payments or subscribe to a product or service by setting the mode parameter in a Checkout Session.
Mode | Purchase type |
---|---|
Payment | One-time purchases |
Subscription |
|
Mixed cart
Create a mixed cart in Checkout that lets your customers purchase Subscription items and one-off purchase items at the same time. To create a mixed cart, set the mode
parameter to subscription
and include the Price IDs, or price_
, for each line_item in the line_items array. Price IDs come from Price objects created using the Stripe Dashboard or API and allow you to store information about your product catalogue in Stripe.
You can also use price_data to reference information from an external database where you’re hosting price and product details without storing product catalogue information on Stripe. For more information, see Build a subscriptions integration.
Payment methods
You can view, enable, and disable different payment methods in the Stripe Dashboard at any time. Stripe enables certain payment methods for you by default. We might also enable additional payment methods after notifying you. View our complete list of payment methods.
Save payment details and default payment methods
You can save payment details for future use by sending an API parameter when you create a Session. Options to save payment details include:
- Single payment: If your Checkout Session uses
payment
mode, set the payment_intent_data.setup_future_usage parameter. - Subscription payment: If your Checkout Session uses
subscription
mode, Stripe saves the payment method by default. - Multiple saved payment methods: If a customer has multiple payment methods saved, you can store a default payment method to the Customer object’s default_payment_method field. However, these payment methods don’t appear for return purchases in Checkout.
Guest customers
The Customer
object represents a customer of your business, and it helps tracking subscriptions and payments that belong to the same customer. Checkout Sessions that don’t create Customers are associated with guest customers instead.
Complete a transaction
To automate business flows after a transaction has occurred, register an event destination and build a webhook endpoint handler. Consider the following events and automations to enable:
- Process the checkout.session.completed event to fullfil orders when a customer completes their purchase.
- Process the checkout.session.expired event to return items to your inventory or send users a cart abandonment email when they don’t make a purchase and their cart expires.