# 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).

# Elements


Use [Elements](https://docs.stripe.com/payments/quickstart.md) to build a customizable checkout page. Customers use a customized checkout page on your site to enter payment details and complete their purchase.
![Payment form using Elements with Checkout Sessions API](https://b.stripecdn.com/docs-statics-srv/assets/checkout-elements-hover.28148f5be39600e85ef4784ab9e873e7.png)

## Checkout lifecycle 

1. When a customer is ready to complete their purchase, your application creates a new `Checkout Session`.
2. You embed Elements 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 Elements 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 Elements on your website --> [Stripe Elements]
[Stripe Elements] -- Customer completes payment --> [Stripe Elements]
[Stripe Elements] -- 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)
