FeniciaDocs
DocumentaciónAPICambiosSoporte
Buscar⌘K
Orders APIList OrdersCreate an OrderGet an OrderSearch OrdersOrder Status TransitionsUpdate an OrderFulfillment & ShippingReturns & RefundsAttachmentsActivity Log & ExportAbandoned CartsError Catalog

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.

Create an Order

This endpoint lets you create an order manually from your own system. Use it when you need to capture sales that don't come from a connected channel, for example:

  • Phone sales — a customer calls and you take the order live.
  • In-store sales without a connected POS.
  • Custom integrations with ERPs, proprietary marketplaces, or legacy systems.
  • One-off imports when migrating data from another platform.

The order is created in pending status and enters the normal accept → prepare → ship flow.

Orders from channels

If the order already exists in a connected channel (Shopify, Amazon, MercadoLibre…), do not create it manually. Fenicia syncs it automatically via webhooks. Creating duplicate orders causes inventory inconsistencies.

Endpoint

Creates a new manual order in the authenticated tenant

Required permission: orders:create

Request body structure

items[] (required)

Each line must include:

FieldTypeRequiredDescription
skustringYesProduct SKU. Must exist in your catalog.
quantitynumberYesQuantity sold. Greater than 0.
unitPricenumberYesUnit price before tax.
discountnumberNoAbsolute discount applied to the line.
taxablebooleanNoWhether taxes apply. Default: true.

customerInfo (required)

FieldTypeRequiredDescription
firstNamestringYesCustomer first name.
lastNamestringYesCustomer last name.
emailstringYesValid email. Used for notifications.
phonestringNoPhone number with country code.
customerIdstringNoID of an existing customer in your CRM. If omitted, a new one is created.

deliveryInfo

FieldTypeDescription
addressobjectDelivery address.
methodstringMethod: standard, express, pickup.
carrierstringCarrier: dhl, fedex, estafeta, etc.
trackingNumberstringTracking number if shipped outside Fenicia.

Complete example

curl -X POST https://api.fenicia.io/orders \
  -H "Authorization: Bearer fn_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      { "sku": "SHIRT-RED-M", "quantity": 2, "unitPrice": 499.00 },
      { "sku": "PANTS-BLUE-32", "quantity": 1, "unitPrice": 899.50, "discount": 100 }
    ],
    "customerInfo": {
      "firstName": "Maria",
      "lastName": "Gonzalez",
      "email": "maria.gonzalez@example.com",
      "phone": "+525512345678"
    },
    "shippingAddress": {
      "street": "Av. Reforma 123",
      "city": "Mexico City",
      "state": "CDMX",
      "zipCode": "06600",
      "country": "MX"
    },
    "deliveryInfo": { "method": "express", "carrier": "dhl" },
    "paymentStatus": "paid",
    "tags": ["phone", "vip"],
    "notes": "Customer requested gift wrap"
  }'

Response example

{
  "_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": "SHIRT-RED-M",
      "quantity": 2,
      "unitPrice": 499.00,
      "lineTotal": 998.00
    },
    {
      "sku": "PANTS-BLUE-32",
      "quantity": 1,
      "unitPrice": 899.50,
      "discount": 100.00,
      "lineTotal": 799.50
    }
  ],
  "customerInfo": {
    "customerId": "65f3a1b2c4d5e6f7a8b9c0d2",
    "firstName": "Maria",
    "lastName": "Gonzalez",
    "email": "maria.gonzalez@example.com",
    "phone": "+525512345678"
  },
  "shippingAddress": {
    "street": "Av. Reforma 123",
    "city": "Mexico City",
    "state": "CDMX",
    "zipCode": "06600",
    "country": "MX"
  },
  "deliveryInfo": { "method": "express", "carrier": "dhl" },
  "tags": ["phone", "vip"],
  "notes": "Customer requested gift wrap",
  "orderCreated": "2026-04-11T14:23:11.000Z",
  "updatedAt": "2026-04-11T14:23:11.000Z"
}

Tip

Store the returned _id. You'll need it to read, update, or transition the order in subsequent calls.

Errors

CodeStatusDescription
VALIDATION_ERROR400Missing required fields or invalid formats.
SKU_NOT_FOUND400A SKU in items doesn't exist in your catalog.
INSUFFICIENT_INVENTORY409Not enough stock for one of the items.
INSUFFICIENT_PERMISSIONS403The API key doesn't have the orders:create scope.
INVALID_API_KEY401The API key is invalid or revoked.

Next steps

  • Get an order
  • Update an order
  • Search orders
  • Status transitions