Skip to main content
This guide walks through the checkout process — from collecting customer information to creating a payment intent and completing the order.

Checkout steps

1

Set fulfillment method

Choose takeout, delivery, table-side, or room service.
2

Set order time

ASAP or scheduled for a specific date and time.
3

Collect customer details

Name, email, and optionally phone number.
4

Set gratuity (optional)

Apply a tip percentage or custom amount.
5

Create payment intent

Get a Stripe client secret for secure payment collection.
6

Confirm payment

Use Stripe.js to complete the charge on the client.

1. Set fulfillment method

Update the cart with the customer’s preferred fulfillment method.
For delivery, table-side, or room service, see the Fulfillment Methods guide.

2. Set order time

Call storefront.locations.getOrderTimes(locationId) to get the available time slots before showing the picker.

3. Collect customer details

Validate and save the customer’s name and contact information.

4. Set gratuity (optional)

If the location has tipping enabled, set a tip amount or percentage.
The WaiterTipConfigResponse tells you:
FieldDescription
enabledWhether tipping is turned on for this location
tipPercentageArray of suggested percentages (e.g., ["15", "18", "20"])
defaultTipPercentageThe pre-selected percentage
shouldAllowCustomTipWhether to show a custom amount input

5. Create a payment intent

Create a Stripe PaymentIntent to securely collect payment on the client.

6. Confirm payment with Stripe.js

Use the clientSecret to complete the payment on the frontend.
Always use Stripe.js or Stripe Elements for payment collection. Never handle raw card numbers in your own code.

Track analytics events

Fire analytics events at key checkout milestones.

Complete checkout example

Next steps

Fulfillment Methods

Configure delivery, table-side, and room service.

Accept Payments

In-depth Stripe setup and testing guide.

Order Tracking

Poll order status after checkout.

Error Codes

Handle checkout errors gracefully.