Ir al contenido

Catálogo de errores

Referencia única de todos los motivo de rechazo que puede devolver el API. Cada motivo incluye su causa, en qué etapa del pipeline ocurre, la forma de su payload y qué debe hacer Jaremar.

motivoAlcance del rechazoEtapaHTTP
FECHAS_INVALIDASBatch completo3422
MANIFIESTOS_FECHA_INVALIDABatch completo4422
ALMACENES_DESCONOCIDOSPor manifiesto7422
MANIFIESTO_CERRADOPor manifiesto7422
FACTURAS_DUPLICADAS_EN_OTRO_MANIFIESTOPor manifiesto7422
MOTIVOS_MIXTOSPor manifiesto (varios)7422

Alcance “batch completo”: ninguna factura entra. Alcance “por manifiesto”: las facturas de manifiestos válidos sí entran; solo se rechazan las de los manifiestos afectados.


Agrupa los rechazos de las reglas de fecha. La validación es por factura y atómica por manifiesto: una sola factura inválida rechaza el manifiesto completo. La mezcla de fechas dentro de un manifiesto está permitida (por defecto). Cada manifiesto rechazado trae su propio sub-motivo en manifiestos_rechazados[].motivo:

Sub-motivoCausa
FECHA_FACTURA_FUTURAAlguna FechaFactura es posterior a hoy.
FECHA_FACTURA_DEMASIADO_ANTIGUAAlguna FechaFactura supera los 30 días de antigüedad.
FECHA_FACTURA_INVALIDAAlguna FechaFactura no se pudo interpretar.
FECHAS_MEZCLADASSolo si Hosana activa el modo estricto: el manifiesto mezcla fechas.

Acción: corrige las fechas en origen y reenvía. La respuesta incluye manifiestos_validos[] para que sepas cuáles estaban bien.

Se intentó agregar facturas a un manifiesto que ya existe en Hosana y fue creado en un día anterior. Un manifiesto ya creado no acepta facturas nuevas en días posteriores (no crece día tras día).

{
"manifiesto": "800003",
"fecha_original": "2026-06-05",
"fecha_intento": "2026-06-06",
"total_facturas": 122,
"facturas_afectadas": ["002-001-01-04002050", "002-001-01-04002051"],
"instruccion": "El manifiesto #800003 fue creado el 2026-06-05 y ya no acepta facturas nuevas. Reenvíe estas facturas en un nuevo número de manifiesto."
}

Acción: reenvía esas facturas bajo un número de manifiesto nuevo. La respuesta trae manifiestos_no_afectados[] con los manifiestos válidos que debes reenviar solos.


Ocurren durante el procesamiento (paso 7). Las facturas de los manifiestos válidos del mismo batch sí se insertan.

El manifiesto contiene facturas con un código de Almacen que no existe en Hosana (los válidos son OAC, OAS, OAO).

{
"manifiesto": "800003",
"total_facturas": 122,
"motivo": "ALMACENES_DESCONOCIDOS",
"almacenes_desconocidos": [
{ "almacen": "OAX", "facturas": ["002-001-01-04002050", "002-001-01-04002051"], "cantidad": 2 }
]
}

Acción: corrige el código de bodega (o solicita a Hosana que registre la bodega) y reenvía el manifiesto limpio. Un Almacen vacío se reporta como (vacío).

El manifiesto ya está cerrado en Hosana y no acepta modificaciones.

{
"manifiesto": "800003",
"total_facturas": 122,
"motivo": "MANIFIESTO_CERRADO",
"mensaje": "El manifiesto #800003 está cerrado y no acepta modificaciones."
}

Acción: no se pueden agregar facturas a un manifiesto cerrado. Reenvía las facturas bajo un manifiesto nuevo, o coordina con Hosana si fue un cierre prematuro.

Una o más facturas del manifiesto ya existen en Hosana bajo un manifiesto distinto. Una factura solo puede pertenecer a un manifiesto.

{
"manifiesto": "800003",
"total_facturas": 122,
"motivo": "FACTURAS_DUPLICADAS_EN_OTRO_MANIFIESTO",
"mensaje": "El manifiesto #800003 contiene facturas que ya existen en otros manifiestos. Reenvíelo limpio.",
"facturas_duplicadas": [
{ "factura": "002-001-01-04001001", "manifiesto_existente": "800002" }
]
}

Acción: revisa por qué esas facturas aparecen en dos manifiestos. Quita las duplicadas y reenvía el manifiesto limpio. El campo manifiesto_existente te dice dónde está ya registrada cada factura.

No es un motivo en sí, sino un indicador: varios manifiestos del batch fueron rechazados por motivos distintos. El motivo raíz será "MOTIVOS_MIXTOS" y debes leer el motivo propio de cada entrada en manifiestos_rechazados[].

Acción: procesa cada entrada de manifiestos_rechazados[] según su propio motivo, usando las secciones de arriba.


SituaciónHTTPCómo se reconoce
Body no es un array no vacío422message específico, sin motivo.
Faltan campos obligatorios422Arreglo errores[] con el detalle por factura.
ApiKey ausente o inválido401Ver autenticación.
Servidor sin clave configurada503Problema del lado de Hosana.
Rate limit superado429Ver rate limits.
Error interno500batch_uuid presente para rastreo.
1. ¿HTTP 401/429/500/503? → problema de transporte/infra. Maneja según el código.
2. ¿HTTP 200 y success:true? → leer resumen. (Ojo: puede haber pendientes_revision.)
3. ¿HTTP 422? → leer 'motivo':
- FECHAS_INVALIDAS / MANIFIESTOS_FECHA_INVALIDA → nada entró, corrige y reenvía.
- ALMACENES.../MANIFIESTO_CERRADO/FACTURAS_DUP... → parte entró; corrige los
manifiestos rechazados y reenvíalos solos.
- MOTIVOS_MIXTOS → recorre manifiestos_rechazados[] y trata cada uno por su motivo.
- sin 'motivo' pero con 'errores' → corrige estructura del payload.

Ver la guía completa en cómo reaccionar a un rechazo.