# Build a multi-page checkout

Collect customer and payment details on one page, then confirm the payment on another.

When you build a custom checkout with [Elements and the Checkout Sessions API](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=elements&api-integration=checkout), use [persistSession](https://docs.stripe.com/js/custom_checkout/persist_session) to save what you’ve collected so far to the Checkout Session without charging your customer. A later page load reads those values back from the session, and `confirm` charges the payment method you already collected.

This guide covers multi-page checkouts, where each step is a separate page load, and multi-step checkouts in a single-page application, where each step is a separate view.

### Request to join the preview for persisting a Checkout Session.

Enter your email 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/multi-page-checkout" \
  -d '{"email": "EMAIL", "preview": "custom_checkout_preview"}'
```
