Skip to main content
APICheckout

Existing customers at checkout

Storefront API keys are public, so an email or customerId in a checkout request is a claim, not proof of who is booking. A customer named in the request is now only treated as the caller when the request is signed in as that customer (customer Authorization token), or when this cart’s checkout created them.When a guest enters the email of an existing customer and isn’t signed in:
  • The booking is still attached to that customer, so it shows in their account after they sign in (for example with a login code).
  • Nothing on their profile is overwritten: name, phone, billing address and marketing consent stay as they were.
  • checkout/submit returns no auth or customer, and checkout/save-customer returns {} without a customerId.
  • Cart and appointment responses show customer and customerId as null. The customerFirstName, customerEmail and other snapshot fields echo what was entered.

Addresses

checkout/save-customer and checkout/start don’t write to the customer. Until the order is placed, billing and delivery addresses entered for such a booking belong to the cart only, and their customerId is null (for example cart.billingAddress.customerId). When checkout/submit places the order, they’re added to the customer’s saved addresses. The order and invoice use them as entered. Treat an address’s customerId as nullable.

Billing at submit

Required billing fields are checked against the billingAddress in the request, or, when the request has none, against the billing address already saved on the cart. You no longer need to send the billing address again at checkout/start or checkout/submit. A billing address sent for the first time with checkout/submit is linked to the order. A submit rejected for missing customer details leaves the cart’s reservation in place until the cart expires as usual.What to change in your integration: always treat auth on the submit response as optional, and don’t rely on save-customer returning a customerId. When it doesn’t, either send the same customer details again in the next steps or leave customer out: the cart already holds the customer.
Last modified on October 18, 2026