Gestión de pedidos
Busca, anota, etiqueta, cancela y archiva pedidos con Admin API.
Cada mañana, una tienda de Lima revisa los pedidos de ayer con Admin API: busca los que siguen sin pagar, etiqueta los urgentes y archiva los entregados.
Requisitos
- Un token de Admin en
ECOMIQ_TOKEN. Ver Inicio rápido. - Los permisos
order:read, para buscar, leer y exportar, yorder:update, para todo lo demás. - Node.js 18 o Python con
requests, para los ejemplos.
Busca pedidos
GET / filtra por estado, fecha, etiqueta y texto. Este ejemplo trae
los pedidos de ayer que tienen saldo por cobrar.
curl "https://api.ecomiq.pe/api/v1/orders?task=toCollect&dateFrom=2026-10-05T05:00:00Z&dateTo=2026-10-06T04:59:59Z&limit=50" \
-H "Authorization: Bearer $ECOMIQ_TOKEN"{
"data": [
{
"id": "7204558912004325301",
"orderNumber": "ORD-2026-0142",
"firstName": "Andrea",
"lastName": "Ramos",
"status": "new",
"state": "open",
"currencyCode": "PEN",
"total": 178,
"paymentAt": null,
"tags": null,
"assignee": null,
"archivedOn": null,
"orderDate": "2026-10-05T19:42:10Z"
}
],
"hasNextPage": false,
"nextCursor": null,
"totalCount": 1
}Los pasos siguientes reutilizan ADMIN, headers y HEADERS.
| Para ver | Envía |
|---|---|
| Pedidos con saldo por cobrar | task=toCollect |
| Pedidos cuyo último pago falló | task=rejectedPayments |
| Confirmados por preparar | task=toPrepare |
| Un estado | status=confirmed |
| Un rango de fechas | dateFrom y dateTo, en UTC |
| Una etiqueta | tags=urgente |
| Un vendedor | sellerIds=7204558912004320500 |
| Archivados o no | archived=true o archived=false |
| Texto libre | search: número, email, nombre, teléfono, producto o SKU |
- Repite un parámetro para pedir varios valores:
status=new&status=confirmed. - Sin
archived, la lista incluye los archivados.taskdeja fuera los archivados, cancelados e inválidos. - Ordena con
sortBy(orderDate,orderNumber,totaloupdatedOn) ysortDirection. Por defecto, del más reciente al más antiguo. Ver Paginación.
Lee un pedido
Con include=trackings, la respuesta trae el historial del pedido, del más
reciente al más antiguo.
curl "https://api.ecomiq.pe/api/v1/orders/7204558912004325301?include=trackings" \
-H "Authorization: Bearer $ECOMIQ_TOKEN"{
"id": "7204558912004325301",
"orderNumber": "ORD-2026-0142",
"status": "new",
"state": "open",
"email": "andrea.ramos@example.com",
"total": 178,
"notes": null,
"tags": null,
"assignee": null,
"archivedOn": null,
"updatedOn": "2026-10-05T19:42:10.512344Z",
"financialSummary": {
"paidAmount": 0,
"refundedAmount": 0,
"balanceDue": 178,
"refundableAmount": 0
},
"trackings": [
{
"type": "new",
"title": "Order Created",
"content": "Order created successfully.",
"createdOn": "2026-10-05T19:42:10Z"
}
]
}Guarda updatedOn: lo necesitas para cambiar la nota.
Anota y asigna
PATCH / cambia la nota interna y el responsable del
pedido. Responde 204.
curl -X PATCH https://api.ecomiq.pe/api/v1/orders/7204558912004325301/notes \
-H "Authorization: Bearer $ECOMIQ_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"notes": "Entregar en portería. La clienta trabaja de día.",
"assignedMemberId": "7204558912004320011",
"expectedUpdatedOn": "2026-10-05T19:42:10.512344Z"
}'- La operación reemplaza los dos campos.
assignedMemberId: nullquita al responsable; para conservarlo, envía elassignee.memberIdactual. - El responsable debe ser un miembro activo de la tienda.
- Envía
updatedOntal como lo leíste, sin convertirlo a fecha. Si el pedido cambió, responde409: vuelve a leerlo y reintenta.
Comenta el pedido
La nota es un solo texto. Los comentarios se suman al historial, con tu usuario y la hora.
curl -X POST https://api.ecomiq.pe/api/v1/orders/7204558912004325301/comments \
-H "Authorization: Bearer $ECOMIQ_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "content": "Llamé a Andrea: paga hoy por transferencia." }'Responde 204. El comentario aparece en trackings con type: "note". Admite
hasta 2000 caracteres, attachmentUrls y hasta 20 mentionedMemberIds para
avisar a tu equipo.
Etiqueta pedidos
PATCH / reemplaza todas las etiquetas. Lee tags,
agrega la tuya y envía la lista completa.
curl -X PATCH https://api.ecomiq.pe/api/v1/orders/7204558912004325301/tags \
-H "Authorization: Bearer $ECOMIQ_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "tags": "urgente,regalo" }'- Separa las etiquetas con comas, sin espacios. El texto completo admite hasta
500 caracteres. Vacío o
nulllas borra. - Luego filtra con
tags=urgente. El filtro ignora mayúsculas. - Un token de vendedor no puede etiquetar ni comentar: responde
403.
Recuerda el pago
POST / envía un correo al cliente con el
saldo pendiente.
curl -X POST https://api.ecomiq.pe/api/v1/orders/7204558912004325301/payment-reminder \
-H "Authorization: Bearer $ECOMIQ_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"idempotencyKey": "recordatorio-ORD-2026-0142-1",
"dueDate": "2026-10-08"
}'- Responde
202. Si repites laidempotencyKey, el cliente recibe un solo correo. Usa hasta 50 caracteres. dueDatees opcional y aparece en el correo.- El pedido necesita
emaily saldo pendiente. No puede estar cancelado ni ser inválido.
Cancela un pedido
Si el cliente no pagó, cancela el pedido. notifyCustomer: false evita el
correo de cancelación.
curl -X POST https://api.ecomiq.pe/api/v1/orders/7204558912004325301/cancel \
-H "Authorization: Bearer $ECOMIQ_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"cancelReason": "No recibimos el pago.",
"cancelReasonType": "sin-pago",
"notifyCustomer": false
}'Responde 200 con el pedido. Los estados y eventos están en
Estados del pedido.
- Los pagos autorizados y sin capturar se liberan, salvo que el mismo pago cubra otro pedido activo.
- Cancelar no devuelve el dinero ya capturado. Revisa
financialSummary.refundableAmounty reembolsa con Devoluciones y reembolsos. - Para cancelar y reembolsar en un paso antes del envío, usa
Cancelar pedido con reembolso.
Requiere también
payment:create.
Archiva pedidos
Archivar saca el pedido de tu lista diaria. No cambia su estado ni sus pagos.
curl -X PUT https://api.ecomiq.pe/api/v1/orders/7204558912004325301/archive \
-H "Authorization: Bearer $ECOMIQ_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "archived": true }'- Responde
204. Envía"archived": falsepara restaurarlo. - Para hallar los entregados que siguen a la vista, busca con
status=delivered&archived=false. - Cancelar un pedido también lo archiva. Con
orderProcessing.autoArchiveDeliveredOrdersen los ajustes de la tienda, los entregados y pagados se archivan solos.
Cambia en lote
POST / lleva varios pedidos al mismo estado. Este
ejemplo cancela tres pedidos sin pagar.
curl -X POST https://api.ecomiq.pe/api/v1/orders/batch/status \
-H "Authorization: Bearer $ECOMIQ_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"targetStatus": "cancelled",
"ids": ["7204558912004325301", "7204558912004325302", "7204558912004325303"],
"cancelReason": "No recibimos el pago en 48 horas.",
"cancelReasonType": "sin-pago"
}'{
"results": [
{
"index": 0,
"id": "7204558912004325301",
"status": "updated",
"errors": []
},
{
"index": 1,
"id": "7204558912004325302",
"status": "updated",
"errors": []
},
{
"index": 2,
"id": "7204558912004325303",
"status": "failed",
"errors": [
{
"field": "id",
"code": "Orders.NotFound",
"message": "Order not found."
}
]
}
]
}Cada pedido se procesa por separado. Revisa el status de cada resultado.
- Envía
ids(hasta 100) ofilters, no ambos. Confiltersresponde202con una operación; síguela con Obtener operación. - Un
filtersvacío selecciona todos los pedidos de la tienda. Acótalo constatuses,tags,dateFrom,dateTouorderIds. targetStatusaceptaconfirmed,inProgress,invoiced,readyToPickUp(contrackingNumber),inTransit,delivered,cancelled,returned,closedeinvalid. Al cancelar en lote, el cliente siempre recibe el aviso.
Exporta pedidos
POST / arma un archivo con los pedidos que elijas. Responde
202 con una operación.
curl -X POST https://api.ecomiq.pe/api/v1/orders/exports \
-H "Authorization: Bearer $ECOMIQ_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"format": "csv",
"statuses": ["delivered"],
"dateFrom": "2026-09-01T05:00:00Z",
"dateTo": "2026-10-01T04:59:59Z"
}'{
"id": "7204558912004325410",
"status": "pending",
"resource": "orders",
"format": "csv",
"createdOn": "2026-10-06T13:05:00Z"
}- Los filtros van en el cuerpo y en plural:
statuses,states,fulfillmentStatuses,tags,orderIdsyorderNumbers. formataceptacsv,xlsxojsonl. Por defecto,xlsx.- Consulta
GET /. Conv1/ operations/ {id} status: "completed",resultUrltrae el archivo.
Errores
code | Estado | Qué hacer |
|---|---|---|
Common.Validation | 400 | Corrige los campos de errors, como un limit fuera de 1 a 200 o más de 100 ids. |
Orders.NotFound | 404 | El pedido no existe o es de otro vendedor. |
Orders.AssigneeNotMember | 400 | Asigna a un miembro activo de la tienda. |
Orders.VersionConflict | 409 | Vuelve a leer el pedido y reenvía su updatedOn. |
Seller.ScopeNotAllowed | 403 | Etiqueta y comenta con un token de tienda. |
Orders.CustomerEmailRequired | 400 | Agrega el email con Actualizar contacto del pedido. |
Orders.NoBalanceDue | 409 | El pedido ya está pagado. No envíes el recordatorio. |
Orders.PaymentReminderNotAllowed | 409 | El pedido está cancelado o es inválido. |
Orders.PaymentInProgress | 409 | Otro pago del pedido está en curso. Reintenta más tarde. |
Common.Conflict | 409 | El pedido ya no se puede cancelar: se entregó, devolvió, cerró o invalidó. |
Siguientes pasos
- Estados del pedido: confirma, envía y entrega.
- Devoluciones y reembolsos: devuelve el dinero capturado.
- Pedidos: todas las operaciones.
Última actualización: