Customer order and payment
- Customer opens the branded app, picks a location, and browses the menu (catalog synced from Square).
- Cart and order — The customer builds a cart and proceeds to checkout. The app creates an order (e.g. pending payment) in the platform, scoped to company and location.
- Checkout — The app calls the backend with the order reference and payment details (e.g. card nonce from Square’s in-app payment SDK, or Apple Pay). The backend:
- Verifies the customer’s identity (e.g. session token).
- Confirms the order exists and is in a payable state (e.g. pending payment).
- Calls Square to create the payment (and optionally loyalty or gift card actions) using idempotency keys so retries don’t double-charge.
- Result — Square processes the payment; the backend updates the order state (e.g. paid) and returns success to the app. The customer sees confirmation; the order is available for the kitchen.
- Optional — If loyalty is enabled, the backend may sync the customer and loyalty balance with Square so the app can show up-to-date points.
Square → Layout: catalog and locations
- Initial sync — After Square is connected (OAuth), Layout syncs your locations and catalog (items, categories) into the platform. The dashboard and app then read from this synced data.
- Ongoing updates — When you change catalog or locations in Square:
- Webhooks — Square can send events (e.g. catalog version updated, location updated). Layout verifies the webhook signature and then updates the synced catalog or locations so the app and dashboard stay current.
- Scheduled sync — Layout may also run periodic sync jobs as a backstop so that even without webhooks, data stays aligned over time.
Kitchen display and order status
- Layout KDS — Staff open the kitchen panel, pick a location, and see orders for that location. They can move orders through statuses (e.g. accepted → making → ready → completed). Status is stored in the platform; the customer app can show live status and optional push or Live Activity.
- Square KDS — If you use Square’s kitchen display only, Layout doesn’t push status. The app can still show order confirmation and an estimated pickup time; status is not synced from Layout.
End-to-end in one picture
Why this matters for evaluators
- Payments — Single path through Square; idempotency on payment creation; no card data in Layout.
- Catalog and locations — One source of truth (Square); Layout syncs and reflects changes; no manual duplicate data entry.
- Orders — Created and stored in the platform; payment is delegated to Square; status is available to kitchen and customer in a consistent way.

