# How Checkout works

Learn how to use Checkout to collect payments on your website.

Checkout is a low-code payment integration that creates a customizable form for collecting payments.

Checkout’s built-in features allow you to reduce your development time. It supports more than 100 payment methods, including [Link](https://docs.stripe.com/payments/link.md), which lets your customers 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 customized checkout page with [Stripe Elements](https://docs.stripe.com/payments/elements.md). Checkout supports payments for both [one-time purchases](https://docs.stripe.com/payments/online-payments.md) and [subscriptions](https://docs.stripe.com/subscriptions.md).

You can also customize Checkout and access additional functionality with [Checkout Sessions](https://docs.stripe.com/api/checkout/sessions.md) and the Stripe Dashboard. For a complete list of features, see its [built-in and customizable features](https://docs.stripe.com/payments/checkout/how-checkout-works.md#features).

# Embedded form


> To start using this form, see [Build an integration with an embedded form](https://docs.stripe.com/checkout/form/quickstart.md).

Use the embedded form to build a customizable checkout page where customers enter their payment details and complete their purchase.

The Checkout Sessions API supports an optional `integration_identifier` parameter you can set when creating a session. Use it to label this form integration with a recognizable name and measure its conversion independently from other Checkout integrations you run.
![Embedded form with Checkout Sessions API](https://b.stripecdn.com/docs-statics-srv/assets/checkout-form-hover.31c41716c4857e5e01f77978530fc573.png)

You can use the embedded form to collect all necessary information during checkout while maintaining control over the look and feel of the UI.

You can use this form to collect:

- Payment details for more than 100 payment methods
- One-click express checkout wallets
- Billing address
- Shipping address
- Shipping options and prices
- Tax details
- Currency choice
- Custom details using custom text fields

Embedded forms have the following features:

- End-to-end checkout in a single iframe

- Built-in returning UIs with saved payment methods and saved address book

- A dynamic UI that adjusts to the device type to maintain a consistent checkout flow across web and mobile

- UI customization using the [Stripe Appearance API](https://docs.stripe.com/elements/appearance-api.md)

- Integrates with Stripe products such as [Adaptive Pricing](https://docs.stripe.com/payments/custom/localize-prices/adaptive-pricing.md), [Stripe Tax](https://stripe.com/tax?utm_campaign=AMER_US_en_Google_Search_Brand_Tax_EXA-14403482849&utm_medium=cpc&utm_source=google&utm_content=711508633409&utm_term=stripe%20tax&utm_matchtype=e&utm_adposition=&utm_device=c&gad_source=1&gad_campaignid=14403482849&gbraid=0AAAAADKNRO5JFcS1TpxBkF6YTjG_vw8o9&gclid=Cj0KCQjw0NPGBhCDARIsAGAzpp3vxr1qEazZGJaEENjzZRZH0OXV39zJYPylsV9FSmxK7dZ_A_X-jPoaAo7XEALw_wcB), and [Billing](https://stripe.com/billing)

- Localization with both content translation and a localized product UI (for example, local payment methods and local currency display)

- Offers single-step and multi-step layouts

## Single-page layout

| **UI for new customers**                                    | **UI for returning customers**                                    |
| ----------------------------------------------------------- | ----------------------------------------------------------------- |
| ![](https://docs.stripecdn.com/single_page_new_shopper.mp4) | ![](https://docs.stripecdn.com/single_page_returning_shopper.mp4) |

## Multi-step layout (Private preview)

| **UI for new customers**                                | **UI for returning customers**                                |
| ------------------------------------------------------- | ------------------------------------------------------------- |
| ![](https://docs.stripecdn.com/compact_new_shopper.mp4) | ![](https://docs.stripecdn.com/compact_returning_shopper.mp4) |

### Request access to the compact layout

The compact layout displays the embedded form as a multi-step checkout flow. It's available by request in private preview. Enter your email address below to request access.

```bash
curl https://docs.stripe.com/preview/register \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Referer: https://docs.stripe.com/payments/checkout/how-checkout-works" \
  -d '{"email": "EMAIL", "preview": "elements_betas_preview"}'
```

## Checkout lifecycle 

1. When a customer is ready to complete their purchase, your application creates a new `Checkout Session`.
2. You initialize the embedded form on your website to show a payment form.
3. Customers enter their payment details and complete the transaction.
4. After the transaction, the [checkout.session.completed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.completed) webhook event triggers the [order fulfillment process](https://docs.stripe.com/checkout/fulfillment.md).

A diagram of an embedded form integration's lifecycle (See full diagram at https://docs.stripe.com/payments/checkout/how-checkout-works)

```text
[Client] -- Send order information --> [Server]
[Server] -- Create Checkout Session --> [Stripe API]
[Stripe API] -- checkout.session.created: Return Checkout Session --> [Server]
[Server] -- Return Checkout Session client secret --> [Client]
[Client] -- Mount embedded form on your website --> [Embedded form]
[Embedded form] -- Customer completes payment --> [Embedded form]
[Embedded form] -- Customer is redirected to your return_url, if applicable. --> [Client]
[Stripe API] -- checkout.session.completed: Handle fulfillment --> [Server]
```


## See also

- [Checkout quickstart](https://docs.stripe.com/checkout/quickstart.md)
- [Fulfill your orders](https://docs.stripe.com/checkout/fulfillment.md)
- [Collect taxes in Checkout](https://docs.stripe.com/payments/checkout/taxes.md)
- [Manage limited inventory with Checkout](https://docs.stripe.com/payments/checkout/managing-limited-inventory.md)
- [Automatically convert to local currencies with Adaptive Pricing](https://docs.stripe.com/payments/currencies/localize-prices/adaptive-pricing.md)
