# Checkout

The checkout process is the process that a customer must go through when purchasing the items in their shopping cart. The customer can be either a *guest* — i.e. they proceed by just providing an email address — or *logged* — i.e. they authenticate themselves with a password. When logged in, the customer gains access to their private data, such as their saved addresses and credit cards, making the process faster.

![A sample checkout flow](https://2610849379-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lk-ezuDClaMavTqnRi0%2Fuploads%2F6Bia2Q5YbSDW7hY6O2II%2Fcheckout-cart-summary-cover.jpg?alt=media\&token=6432e6dd-1ed5-41e2-b2d0-000fc4f44ab5)

This guide will walk you through all the actions that you generally need to implement when building a **custom checkout experience** for your customers. We recommend you to have a look at our [open-source hosted checkout application](https://github.com/commercelayer/commercelayer-react-checkout) for a fully functional, production-ready reference.
