# Custom cart overview

> Use Bolt-hosted checkout for a cart your application controls, with the same backend integration across web, iOS, and Android.

Source: https://help.boltapp.com/custom-cart/overview

<span id="summary" />

<span id="what-to-do-in-order" />

## How checkout works [#how-checkout-works]

At runtime, your client, backend, and Bolt exchange the cart and checkout updates in this order:

<Mermaid
  chart="sequenceDiagram
  participant Shopper
  participant Client as Web or mobile client
  participant Backend as Your backend
  participant Bolt as Bolt APIs and Checkout

  Shopper->>Client: Start checkout
  Client->>Backend: Request an order token
  Backend->>Bolt: Create order (API key)
  Bolt-->>Backend: Return order token
  Backend-->>Client: Return order token
  Client->>Bolt: Open checkout (publishable key + token)
  Bolt->>Backend: Request shipping, tax, discounts, or order creation
  Backend-->>Bolt: Return callback response
  Bolt-->>Client: Show checkout result
  Bolt-->>Backend: Send transaction webhook (asynchronous)"
/>

## 1. Requirements [#1-requirements]

Before you build, [confirm your merchant account, Custom Cart division, payment processor, sandbox credentials, and Trusted Domains](/custom-cart/prerequisites).

<span id="the-bolt-api" />

## 2. Orders API [#2-orders-api]

Your backend sends the current cart to Bolt and receives an order token. The client uses that token to open the corresponding cart in Bolt Checkout. Keep the API key on your backend.

[Create an order token](/custom-cart/create-order-token) to start the server integration.

<span id="the-merchant-callback-api" />

## 3. Merchant Callbacks [#3-merchant-callbacks]

During checkout, Bolt sends synchronous requests to your backend for information such as shipping options, tax, discounts, and final order creation. Checkout waits for these responses.

[Choose and build the callbacks](/api-reference/merchant-callback/overview) your checkout needs.

## 4. Register callback URLs [#4-register-callback-urls]

Register each callback URL for the same division as your publishable key. Registration options depend on the callback type.

[Register your callback URLs](/platforms/how-to-integrate/set-up-hook-urls/) and confirm that Bolt can reach them.

<span id="transaction-status-webhooks" />

## 5. Transaction webhooks [#5-transaction-webhooks]

Bolt sends asynchronous webhooks when a transaction changes state. Webhooks use a separate endpoint from Merchant Callbacks and do not block checkout.

[Configure transaction webhooks](/custom-cart/transaction-webhooks) for the events your backend processes.

<span id="the-checkout-modal" />

## 6. Checkout client [#6-checkout-client]

Bolt Checkout is the shopper-facing interface. Your web or mobile client receives an order token from your backend and uses it to open checkout.

Install the [web client](/platforms/direct-api), [iOS checkout SDK](/developers/sdks/ios-swift/checkout), or [Android checkout SDK](/developers/sdks/android-kotlin/checkout).

Use [Custom Cart troubleshooting](/custom-cart/troubleshooting) when a step does not produce its expected result.
