FeniciaDocs
DocumentaciónAPICambiosSoporte
Buscar⌘K
API de ÓrdenesListar PedidosCrear un pedidoBuscar PedidosConsultar un pedidoActualizar un pedidoTransiciones de Estado de PedidosPreparación y EnvíoDevoluciones y ReembolsosAdjuntosHistorial y ExportaciónCarritos AbandonadosCatálogo de Errores

Producto

  • Características
  • Precios
  • Integraciones

Recursos

  • Documentación
  • API
  • Cambios
  • Blog

Empresa

  • Sobre nosotros
  • Contacto
  • Carreras

Legal

  • Privacidad
  • Términos
FeniciaLa plataforma de e-commerce para merchants profesionales

© 2026 Hobbio Inc. Todos los derechos reservados.

Crear un pedido

Este endpoint te permite crear un pedido manualmente desde tu sistema. Úsalo cuando necesites capturar ventas que no provienen de un canal conectado, por ejemplo:

  • Ventas telefónicas — un cliente llama y tomas su pedido en caliente.
  • Ventas en mostrador sin POS conectado.
  • Integraciones personalizadas con ERPs, marketplaces propios o sistemas legacy.
  • Importaciones puntuales cuando migras datos de otra plataforma.

El pedido se crea en estado pending y entra al flujo normal de aceptación, preparación y envío.

Pedidos desde canales

Si el pedido ya existe en un canal conectado (Shopify, Amazon, MercadoLibre…), no lo crees manualmente. Fenicia lo sincroniza automáticamente vía webhooks. Crear pedidos duplicados genera inconsistencias de inventario.

Endpoint

Crea un nuevo pedido manual en el tenant autenticado

Permiso requerido: orders:create

Estructura del cuerpo del request

items[] (requerido)

Cada línea del pedido debe incluir:

CampoTipoRequeridoDescripción
skustringSíSKU del producto. Debe existir en tu catálogo.
quantitynumberSíCantidad vendida. Mayor a 0.
unitPricenumberSíPrecio unitario sin impuestos.
discountnumberNoDescuento en valor absoluto sobre la línea.
taxablebooleanNoSi aplica impuestos. Default: true.

customerInfo (requerido)

CampoTipoRequeridoDescripción
firstNamestringSíNombre del cliente.
lastNamestringSíApellido del cliente.
emailstringSíEmail válido. Se usa para notificaciones.
phonestringNoTeléfono con código de país.
customerIdstringNoID de un cliente existente en tu CRM. Si se omite, se crea uno nuevo.

deliveryInfo

CampoTipoDescripción
addressobjectDirección de entrega.
methodstringMétodo: standard, express, pickup.
carrierstringPaquetería: dhl, fedex, estafeta, etc.
trackingNumberstringGuía si ya fue embarcado fuera de Fenicia.

Ejemplo completo

curl -X POST https://api.fenicia.io/orders \
  -H "Authorization: Bearer fn_live_tu_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      { "sku": "CAM-ROJO-M", "quantity": 2, "unitPrice": 499.00 },
      { "sku": "PAN-AZUL-32", "quantity": 1, "unitPrice": 899.50, "discount": 100 }
    ],
    "customerInfo": {
      "firstName": "María",
      "lastName": "González",
      "email": "maria.gonzalez@example.com",
      "phone": "+525512345678"
    },
    "shippingAddress": {
      "street": "Av. Reforma 123",
      "city": "Ciudad de México",
      "state": "CDMX",
      "zipCode": "06600",
      "country": "MX"
    },
    "deliveryInfo": { "method": "express", "carrier": "dhl" },
    "paymentStatus": "paid",
    "tags": ["telefono", "vip"],
    "notes": "Cliente pidió empaque de regalo"
  }'

Respuesta de ejemplo

{
  "_id": "65f3a1b2c4d5e6f7a8b9c0d1",
  "externalId": "FEN-10042",
  "tenantId": "69db07c8bce4d49b18c42a49",
  "channelId": "manual",
  "orderStatus": "pending",
  "paymentStatus": "paid",
  "currency": "MXN",
  "subtotal": 1798.50,
  "discount": 100.00,
  "tax": 287.76,
  "total": 1986.26,
  "items": [
    {
      "sku": "CAM-ROJO-M",
      "quantity": 2,
      "unitPrice": 499.00,
      "lineTotal": 998.00
    },
    {
      "sku": "PAN-AZUL-32",
      "quantity": 1,
      "unitPrice": 899.50,
      "discount": 100.00,
      "lineTotal": 799.50
    }
  ],
  "customerInfo": {
    "customerId": "65f3a1b2c4d5e6f7a8b9c0d2",
    "firstName": "María",
    "lastName": "González",
    "email": "maria.gonzalez@example.com",
    "phone": "+525512345678"
  },
  "shippingAddress": {
    "street": "Av. Reforma 123",
    "city": "Ciudad de México",
    "state": "CDMX",
    "zipCode": "06600",
    "country": "MX"
  },
  "deliveryInfo": { "method": "express", "carrier": "dhl" },
  "tags": ["telefono", "vip"],
  "notes": "Cliente pidió empaque de regalo",
  "orderCreated": "2026-04-11T14:23:11.000Z",
  "updatedAt": "2026-04-11T14:23:11.000Z"
}

Tip

Guarda el _id devuelto. Lo necesitarás para consultar, actualizar o avanzar el pedido en las siguientes llamadas.

Errores

CódigoStatusDescripción
VALIDATION_ERROR400Faltan campos obligatorios o tienen formato inválido.
SKU_NOT_FOUND400Algún SKU del array items no existe en tu catálogo.
INSUFFICIENT_INVENTORY409No hay stock suficiente para alguno de los items.
INSUFFICIENT_PERMISSIONS403La API key no tiene el scope orders:create.
INVALID_API_KEY401La API key es inválida o fue revocada.

Siguientes pasos

  • Consultar un pedido
  • Actualizar un pedido
  • Buscar pedidos
  • Transiciones de estado