Skip to main content

Checkout

Introduction

The below process describes the key milestones in the checkout process flow in Saleor. Additional steps may also occur along the way; however, the purpose of this instruction is to deliver a base reference for the user to work with.

You can run the code snippets from this section in the Playground or your preferred GraphQL client.

Why Is There No Cart Model?

Saleor has no distinct object type for shopping carts and checkouts. We wanted the same features – like discounts, vouchers, address-specific taxes, and shipping estimates – to be available in the cart and the checkout, so we've decided to use the same object type for both. Checkout provides the interface for standard cart operations like adding products or promo codes. It can also be processed in almost any order, for example, by saving a billing address before adding any items.

Glossary

  • Checkout: Object that groups all the data needed for the checkout process and creating an order.
  • Checkout Line: Items added to the checkout with quantity data. Each added variant has a separate line.
  • Checkout Completion: During this step, payments may be processed and stocks may be reserved. If requirements are met, the order is created.
  • Payment Gateway: Payment App or legacy plugin. e.g., Adyen.
  • Transaction: Object containing status and additional data about payment.
  • Shipping Methods: The way orders will be sent. E.g., DHL courier, postal service.
  • Collection Points: Places where orders can be self-picked.
  • Delivery Methods: Union of shipping methods and collection points.

Multiple Channels and Checkout

Depending on the chosen channel, the user will have access to different objects. This impacts available:

  • Products and Product Variants
  • Payment Gateways
  • Shipping Methods
  • Collection Points
  • Discounts

Learn more about using multiple channels.

Permissions

If a user is assigned to checkout, only that user and staff users with permission MANAGE_CHECKOUTS can query the checkout's data. Such checkout is "private".

Checkout without an assigned user can be queried and modified without additional permissions – it's public for anyone who knows the checkout ID.