Skip to main content
The complete ordering flow from menu to confirmed order: Checkout Flow

After payment

After creating a payment intent, direct the diner to the atlas_pay_url to complete payment. Then poll POST /cart/order to confirm:
1. POST /payment_intents       → get atlas_pay_url
2. Direct diner to atlas_pay_url
3. Poll POST /cart/order
   - 422 → payment not yet complete, keep polling
   - 200 → order confirmed, stop polling
POST /cart/order validates the payment in real-time against the payment processor. It does not depend on webhooks
  • Payment succeeded → cart converts to a confirmed order, full order object returned
  • Payment not completed422 with "Insufficient payment made to the cart"
POST /cart/order is idempotent — if called after the order is already created, it returns the existing order. Safe to retry