> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fooddelivery.cl/llms.txt
> Use this file to discover all available pages before exploring further.

# Tu propia tienda

> Vende desde tu página con menú, delivery y pago online de FoodDelivery

Con la API puedes montar el flujo de venta completo **en tu propia página**:
tu diseño, tu dominio, y por detrás el menú, el inventario, la cotización de
delivery, el pago online y la cocina de FoodDelivery.

<Warning>
  La API key vive **solo en tu backend**. Tu página llama a tu servidor y tu
  servidor llama a FoodDelivery — nunca pongas la llave en el navegador.
</Warning>

## El flujo completo

<Steps>
  <Step title="Muestra el menú">
    `GET /menu?location_id=...` te entrega categorías, productos,
    modificadores, precios y disponibilidad por stock. Renderiza tu carta con
    eso; los `id` de productos y opciones son los que usarás al crear el
    pedido.
  </Step>

  <Step title="Cotiza el envío (solo delivery)">
    Cuando el cliente ingresa su dirección, llama a
    `POST /delivery/quote` con la dirección (idealmente con lat/lng de Google
    Maps). Te devuelve `fee` — lo que debe pagar el cliente — con las mismas
    reglas de reparto del restaurante (reparto propio, Uber o PedidosYa, con
    subsidios incluidos). Si `available` es `false`, ofrece retiro.
  </Step>

  <Step title="Crea el pedido con pago online">
    `POST /orders` con `payment: "online"`, el `shipping_fee` de la
    cotización y tu `return_url`. La respuesta trae
    `payment_link.payment_url`: redirige ahí al cliente para que pague
    (transferencia o tarjeta vía Fintoc, a nombre del restaurante).
  </Step>

  <Step title="El cliente paga y vuelve a tu página">
    Al confirmarse el pago, el pedido pasa **automáticamente** a la cocina
    (KDS) del restaurante y el cliente vuelve a tu `return_url` con
    `?order_id=...&payment=success`. Un pedido que no se paga se cancela solo
    y repone su stock.
  </Step>

  <Step title="El restaurante opera desde su panel">
    Desde ahí el pedido sigue el flujo normal: la cocina lo acepta, lo
    prepara y despacha el reparto desde el dashboard de FoodDelivery. Puedes
    seguir el estado con `GET /orders/{order_id}`.
  </Step>
</Steps>

## Ejemplo: pedido delivery pagado online

```bash cURL theme={null}
curl -X POST "https://app.fooddelivery.cl/api/v1/orders" \
  -H "Authorization: Bearer fd_live_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "location_id": "3e7cc154-...",
    "type": "delivery",
    "payment": "online",
    "return_url": "https://mitienda.cl/pedido/gracias",
    "shipping_fee": 3159,
    "customer": {
      "name": "Juan Pérez",
      "phone": "+56912345678",
      "email": "juan@example.com"
    },
    "address": "Av. Providencia 1234, Providencia",
    "items": [
      { "product_id": "eb1ecc13-...", "quantity": 2 }
    ]
  }'
```

```json Respuesta (201) theme={null}
{
  "id": "a1b2c3d4-...",
  "number": "#0042-150726",
  "status": "pendiente_pago",
  "total": 18149,
  "payment": { "method": "transferencia", "paid": false },
  "payment_link": {
    "payment_url": "https://checkout.fintoc.com/...",
    "session_id": "cs_..."
  }
}
```

Redirige al cliente a `payment_link.payment_url`. Cuando vuelva a tu
`return_url`, consulta `GET /orders/{order_id}` para confirmar: si el pago se
acreditó verás `status: "recibido"` y `payment.paid: true`.

## Si prefieres cobrar tú

Usa `payment: "external"` (el default): el pedido entra de inmediato a la
cocina como pago gestionado fuera de la plataforma, y el cobro corre por tu
cuenta.
