Watch an order move
Building the cart
building
Layout builds it on the restaurant's own ordering site.
ready
Your app shows the total and the card. Nothing is charged yet.
placing
The person said yes. Layout pays the restaurant.
placed
The restaurant's own receipt came back.
One engine, two doors
The same checks and the same money rules sit behind both.
REST
For the app you build. Carts, orders and webhooks over HTTPS.
MCP
For AI agents. The same orders as tools an assistant can call.
Texts stay rare
Layout only texts your user a code when they create their account or when its fraud checks flag a large order.
Your backend hears it all
Every event is signed, sent again when your endpoint misses it, and readable later from the events feed.
- order.carted
The cart is ready to confirm
- order.placed
The restaurant confirmed it
- order.updated
The pickup time arrived
- order.unconfirmed
Layout can't tell yet, so it never retries
- order.refunded
Money went back to the card
Practice every ending
Sandbox builds carts from real menus and ends them however you pick. Nothing is ordered or charged.
Questions, answered
Read the docsSeconds at a restaurant Layout already knows. At one it has not ordered from before, often one to three minutes. Your app polls the cart or waits for a webhook.
Layout. It pays the restaurant and charges the person's card for the total they approved. People connect a card through Sign in with Layout or a card link, so card numbers never reach your app.
It reads unconfirmed, which means Layout cannot tell whether the restaurant received it. Treat it as pending and never build it again, so nobody is charged twice.
Sandbox works the moment you sign up. Production opens after approval, which you request from the console.