Este endpoint realiza una actualización parcial de un pedido existente. Solo los campos que envíes en el cuerpo se modifican; los demás permanecen intactos. No es un reemplazo completo del documento.
Se usa típicamente para:
No modifiques items ni totales
Los items, totales, impuestos y descuentos son inmutables después de crear el pedido. Para cambiar productos o cantidades, usa el flujo de devoluciones y reembolsos que mantiene la trazabilidad contable.
Actualiza parcialmente un pedido existente
Permiso requerido: orders:update
| Campo | Editable | Motivo |
|---|---|---|
customerInfo | Sí | Los datos de contacto pueden corregirse. |
deliveryInfo | Sí | Puedes ajustar método o agregar guía. |
shippingAddress | Sí | Solo hasta que el pedido se embarque. |
billingAddress | Sí | Editable en cualquier momento antes de facturar. |
tags | Sí | Clasificación interna. |
notes | Sí | Notas operativas. |
metafields | Sí | Campos personalizados. |
_id | No | Identificador inmutable. |
externalId | No | Número público del pedido. |
orderCreated | No | Fecha de creación es auditoría. |
channelId / channelType | No | Origen del pedido. |
items | No | Usa devoluciones / reembolsos. |
subtotal, tax, total | No | Se recalculan automáticamente. |
orderStatus | No | Usa transiciones de estado. |
curl -X PUT https://api.fenicia.io/orders/65f3a1b2c4d5e6f7a8b9c0d1 \
-H "Authorization: Bearer fn_live_tu_api_key" \
-H "Content-Type: application/json" \
-d '{
"shippingAddress": {
"street": "Calle Insurgentes 456, Depto 3B",
"city": "Ciudad de México",
"state": "CDMX",
"zipCode": "03100",
"country": "MX"
},
"customerInfo": { "phone": "+525598765432" },
"tags": ["telefono", "vip", "direccion-corregida"],
"notes": "Cliente cambió dirección por teléfono el 11-abr-2026"
}'La respuesta contiene el pedido completo con los cambios aplicados:
{
"_id": "65f3a1b2c4d5e6f7a8b9c0d1",
"externalId": "FEN-10042",
"orderStatus": "accepted",
"paymentStatus": "paid",
"total": 1986.26,
"shippingAddress": {
"street": "Calle Insurgentes 456, Depto 3B",
"city": "Ciudad de México",
"state": "CDMX",
"zipCode": "03100",
"country": "MX"
},
"customerInfo": {
"customerId": "65f3a1b2c4d5e6f7a8b9c0d2",
"firstName": "María",
"lastName": "González",
"email": "maria.gonzalez@example.com",
"phone": "+525598765432"
},
"tags": ["telefono", "vip", "direccion-corregida"],
"notes": "Cliente cambió dirección por teléfono el 11-abr-2026",
"orderCreated": "2026-04-11T14:23:11.000Z",
"updatedAt": "2026-04-11T15:02:44.000Z"
}Tip
Al enviar tags, reemplazas el array completo. Si quieres añadir sin perder las existentes, primero consulta el pedido y fusiona los tags en tu cliente.
| Código | Status | Descripción |
|---|---|---|
VALIDATION_ERROR | 400 | Enviaste un campo de solo lectura o con formato inválido. |
READ_ONLY_FIELD | 400 | Intentaste modificar items, total, externalId u otro campo inmutable. |
ORDER_NOT_FOUND | 404 | No existe un pedido con ese ID en tu tenant. |
INVALID_STATUS_FOR_UPDATE | 409 | El pedido está en un estado que no permite edición (por ejemplo delivered o cancelled). |
INSUFFICIENT_PERMISSIONS | 403 | La API key no tiene el scope orders:update. |
INVALID_API_KEY | 401 | La API key es inválida o fue revocada. |