---
title: "Crear nuevos pedidos"
method: POST
path: "/orders"
tags: ["Pedidos"]
---

# Crear nuevos pedidos

`POST /orders`

## Request

- Base URL: `https://api.pirpos.com`
- URL: `https://api.pirpos.com/orders`
- Auth: HTTP bearer

Crea uno o múltiples pedidos para una mesa o grupo específico.

**Autenticación requerida:** Este endpoint requiere autenticación Bearer Token.
Usar el campo `tokenCurrent` obtenido del servicio de login (/login) en el header:
`Authorization: Bearer {tokenCurrent}`

**Proceso de creación:**
- Los pedidos se agrupan automáticamente por mesa/grupo
- Se calculan totales incluyendo productos extras
- Se actualiza inventario según configuración
- Se notifica via WebSocket para actualizaciones en tiempo real

**Limitaciones plan extracción:** Los negocios en plan de extracción no pueden crear nuevos pedidos.

**Descuentos:** Puedes aplicar un descuento manual a nivel de pedido con `discountPercentage` (porcentaje, 0-100) **o** `discountAmount` (monto fijo). Los descuentos por promoción se aplican a nivel de producto mediante el objeto `promo` de cada ítem. El descuento monetario definitivo (incluyendo impuestos) se calcula al facturar el pedido (ver `POST /invoices`).

## Ejemplos de Uso

### 1. Pedido simple para mesa
```json
{
  "table": "507f1f77bcf86cd799439014",
  "group": "507f1f77bcf86cd799439015",
  "groupName": "Mesa 5 - Orden 1",
  "orders": [
    {
      "product": "507f1f77bcf86cd799439013",
      "quantity": 2,
      "unit_price": 15000,
      "notes": ["Sin cebolla", "Extra queso"]
    }
  ]
}
```

### 2. Pedido con productos extras
```json
{
  "table": "507f1f77bcf86cd799439014",
  "group": "507f1f77bcf86cd799439015",
  "groupName": "Mesa 5 - Orden 2",
  "orders": [
    {
      "product": "507f1f77bcf86cd799439013",
      "quantity": 1,
      "unit_price": 15000,
      "productsExtra": [
        {
          "product": "507f1f77bcf86cd799439020",
          "quantity": 1,
          "price": 3000
        }
      ]
    }
  ]
}
```

### 3. Pedido cortesía (gratuito)
```json
{
  "table": "507f1f77bcf86cd799439014",
  "group": "507f1f77bcf86cd799439015",
  "groupName": "Mesa 5 - Cortesía",
  "orders": [
    {
      "product": "507f1f77bcf86cd799439013",
      "quantity": 1,
      "complementary": {
        "isComplementary": true,
        "note": "Cortesía del chef"
      }
    }
  ]
}
```

### 4. Pedido para entrega (sin mesa)
```json
{
  "group": "507f1f77bcf86cd799439015",
  "groupName": "Entrega - Cliente Juan",
  "seller": "507f1f77bcf86cd799439016",
  "orders": [
    {
      "product": "507f1f77bcf86cd799439013",
      "quantity": 1,
      "delivery": {
        "isDelivery": true,
        "deliveryProvider": "507f1f77bcf86cd799439017"
      }
    }
  ]
}
```

### 5. Múltiples pedidos en una sola petición
```json
{
  "table": "507f1f77bcf86cd799439014",
  "group": "507f1f77bcf86cd799439015",
  "groupName": "Mesa 8 - Familia González",
  "orders": [
    {
      "product": "507f1f77bcf86cd799439013",
      "quantity": 2,
      "unit_price": 15000,
      "notes": ["Término medio", "Sin mostaza"]
    },
    {
      "product": "507f1f77bcf86cd799439021",
      "quantity": 3,
      "unit_price": 8000,
      "notes": ["Extra hielo"]
    },
    {
      "product": "507f1f77bcf86cd799439022",
      "quantity": 1,
      "unit_price": 12000,
      "productsExtra": [
        {
          "product": "507f1f77bcf86cd799439023",
          "quantity": 2,
          "price": 2000
        }
      ]
    },
    {
      "product": "507f1f77bcf86cd799439024",
      "quantity": 1,
      "complementary": {
        "isComplementary": true,
        "note": "Postre de cumpleaños"
      }
    }
  ]
}
```

## Request body

- object
  - `table` string: ID de la mesa (requerido para negocios con mesas)
  - `group` string, required: ID del grupo de pedidos
  - `groupName` string, required: Nombre descriptivo del grupo
  - `seller` string: ID del vendedor/mesero (opcional, por defecto usuario autenticado)
  - `noWS` boolean: Desactivar notificación WebSocket
  - `discountPercentage` number: Descuento manual en porcentaje (0-100) aplicado al pedido. Se almacena en el pedido y representa un descuento a nivel de pedido. El descuento monetario efectivo se calcula al generar la factura (ver POST /invoices).
  - `discountAmount` number: Descuento manual de monto fijo aplicado al pedido (en la moneda del negocio). Se almacena en el pedido como alternativa a discountPercentage.
  - `orders` object[], required: Lista de pedidos a crear
    - `product` string, required: ID del producto
    - `quantity` number, required: Cantidad del producto
    - `unit_price` number: Precio unitario del producto
    - `notes` string[]: Notas especiales del pedido
    - `productsExtra` object[]: Productos adicionales/complementos
      - `product` string: ID del producto extra
      - `quantity` number: Cantidad del producto extra
      - `price` number: Precio del producto extra
    - `complementary` object: Configuración de cortesía
      - `isComplementary` boolean: Si el pedido es cortesía
      - `note` string: Nota de la cortesía
      - `client` object
        - `name` string: Nombre del cliente
        - `idInternal` string: ID del cliente
    - `inCombo` boolean: Si el producto forma parte de un combo
    - `delivery` object: Información de entrega
      - `isDelivery` boolean: Si es entrega a domicilio
      - `deliveryProvider` string: ID del proveedor de entrega
    - `client` object: Información del cliente (estructura flexible)

## Response `200`

Pedidos creados exitosamente

- Order[]: Lista de pedidos creados
  - `_id` string: ID único del pedido
  - `business` string: ID del negocio al que pertenece el pedido
  - `product` object: Información del producto pedido
    - `_id` string: ID del producto
    - `name` string: Nombre del producto
    - `price` number: Precio del producto
  - `table` object: Información de la mesa
    - `_id` string: ID de la mesa
    - `name` string: Nombre de la mesa
  - `deliveryProviderOrder` string: ID del pedido del proveedor de entrega
  - `group` string: ID del grupo de pedidos
  - `groupName` string: Nombre del grupo de pedidos
  - `seller` object: Información del vendedor/mesero
    - `_id` string: ID del vendedor
    - `name` string: Nombre del vendedor
    - `lastName` string: Apellido del vendedor
    - `urlImage` string: URL de la imagen del vendedor
  - `notes` string[]: Notas especiales del pedido
  - `causeCancel` string: Motivo de cancelación del pedido
  - `quantity` number: Cantidad del producto
  - `unit_price` number: Precio unitario
  - `total` number: Total del pedido
  - `status` 'Espera' | 'Cocina' | 'Listo' | 'Entregado' | 'Cancelado': Estado del pedido
  - `statusKitchen` 'Espera' | 'Preparacion' | 'Listo': Estado en cocina
  - `productsExtra` object[]: Productos adicionales/complementos
    - `product` object
      - `_id` string: ID del producto extra
      - `name` string: Nombre del producto extra
      - `price` number: Precio del producto extra
    - `quantity` number: Cantidad del producto extra
  - `complementary` object: Información de cortesía
    - `isComplementary` boolean: Si el pedido es cortesía
    - `reason` string: Motivo de la cortesía
  - `modifiedBy` object: Usuario que modificó el pedido
    - `_id` string: ID del usuario
    - `name` string: Nombre del usuario
  - `deleted` boolean: Si el pedido está eliminado
  - `createdOn` string, date-time: Fecha de creación del pedido
  - `modifiedOn` string, date-time: Fecha de última modificación

## Other responses

- `400`: Datos de entrada inválidos
- `401`: No autorizado o plan restringido
- `403`: Sin permisos para crear pedidos
- `500`: Error interno del servidor

---

[API](https://skmtc.dev/loggro/apis/restobar-servicios-del-m-dulo-de-restobar.md) - [All operations](https://skmtc.dev/loggro/apis/restobar-servicios-del-m-dulo-de-restobar/llms.txt) - [OpenAPI document](https://skmtc.dev/loggro/apis/restobar-servicios-del-m-dulo-de-restobar/revisions/9d4431a3cddc?raw)
