Mi veredicto desde el inicio: los almacenes de alimentos que operan con FIFO en lugar de FEFO — first-expired, first-out (primero en vencer, primero en salir) — suelen dar de baja dos o tres veces más producto vencido. Lo he visto repetirse en más de una docena de operaciones de distribución de alimentos. Y casi nunca es un problema de software. La mayoría de los WMS pueden asignar por fecha de vencimiento sin problema. El problema es que los datos de vencimiento que entran son basura, y nadie mira las alertas que salen.
La gente asume que FIFO y FEFO son casi lo mismo. No lo son. Lo primero en entrar no es lo primero en vencer. El mismo SKU recibido en marzo puede estar bueno hasta junio del año siguiente, mientras que el lote recibido en mayo vence este noviembre — eso pasa todos los días en el almacenamiento de alimentos. Despachas por FIFO y el lote de noviembre se queda al fondo mientras el lote de junio sale por la puerta. Para cuando alguien se da cuenta, estás dando de baja tarimas completas. Un 3PL de congelados cerca de Los Ángeles, de unos 60,000 square feet (pies cuadrados), lo aprendió a la mala hace unos años: una tarima completa de camarón congelado pasó dos meses vencida antes de que alguien la detectara. Decenas de miles de dólares, directo a la basura. ¿Por qué? Su sistema ni siquiera tenía campo de vencimiento. La preparación de pedidos se guiaba por completo por la fecha de recepción.
Si los datos de vencimiento son basura, FEFO es teatro
FEFO se sostiene sobre dos datos: el número de lote y la fecha de vencimiento. En el WMS, ambos deben ser obligatorios en la recepción — sin fecha, no hay recepción. Esa es la regla de hierro. El atajo más tonto que he visto: cuando la recepción está colapsada, el sistema permite saltarse el campo de vencimiento y lo rellena automáticamente con 2099-12-31. Seis meses después, miles de registros de inventario "vencen" en 2099, y el algoritmo FEFO está ordenando sobre ficción. Es lo mismo que no tener algoritmo.
Los formatos de fecha también hay que estandarizarlos. Las etiquetas de los proveedores son un caos: 06/08/26 en una caja, 08-JUN-2026 en la siguiente, y algunas que solo imprimen la fecha de producción sin vencimiento. El procedimiento de recepción tiene que elegir una convención — año-mes-día, solo fecha de vencimiento, nunca fecha de producción — y fijarla. No dejes abiertos a la vez un campo de "fecha de producción" y otro de "fecha de vencimiento" para que el receptor elija. Esa me la aprendí a la mala: la mitad del equipo llena un campo, la otra mitad el otro, y la ordenación por vencimiento del sistema sale mal para la mitad de tu inventario.
La recepción también necesita una regla de validación de vida útil restante: el producto que llega con poca vida útil restante se rechaza o se manda a retención de calidad (QA hold). Qué cuenta como "poca" depende de la categoría. Para un producto ambiente de 12 meses, cualquier cosa con menos de un tercio de su vida restante es un no rotundo; para un producto refrigerado de 45 días, yo empezaría a preocuparme por debajo de la mitad. No hay un número universal — defínelo por categoría y velocidad de rotación, escríbelo en el procedimiento de recepción, y apóyate en tu sistema y tu operación reales. La clave es que sea una validación dura del sistema, no un letrero laminado en la pared. Los letreros no detienen a los receptores. Los pop-ups sí.
Una trampa más: lotes mixtos del proveedor. Dos fechas de vencimiento en la misma tarima tienen que recibirse como dos lotes separados. Fusiónalos en uno porque es más rápido, y el sistema solo verá una fecha de vencimiento — la otra mitad de la tarima se vuelve invisible para FEFO. Vi a un almacén hacer exactamente esto para ahorrar tiempo, y la mitad próxima a vencer de cada tarima quedaba relegada hasta que vencía sin que nadie lo notara.

Una alerta que nadie atiende es puro spam
Una vez que los datos están limpios, necesitas avisos. Yo manejo tres niveles: 90, 60 y 30 días para el vencimiento, con el WMS generando un reporte diario de vencimientos enviado a los responsables correspondientes. Los niveles y los días deben variar por categoría — refrigerados y ambiente no pueden compartir el mismo manual. Pero aquí viene la parte que todos se saltan: cada alerta necesita un responsable y una acción. A los 90 días, la acción es "avisar a ventas para moverlo". A los 60, es "plan de descuento (markdown) o transferencia". A los 30, es "iniciar la aprobación de destrucción". Una alerta sin acción adjunta es spam, y después de tres meses nadie la lee.
Lo más difícil de configurar es la lógica de asignación en el despacho. La asignación por vencimiento ascendente puro es teóricamente óptima y prácticamente miserable — destroza las rutas de preparación, y tus preparadores terminan caminando medio edificio por un pedido. Ese es el verdadero dilema: prioridad de vencimiento contra eficiencia de preparación. Mi compromiso: asigna por vencimiento primero, pero dentro de la misma ola, permite fusionar preparaciones de lotes cuyas fechas de vencimiento caigan dentro de unos pocos días entre sí. Unos pocos días no importan; unos pocos meses sí. Dimensiona esa ventana por categoría — estrecha para refrigerados, amplia para ambiente. No persigas el óptimo teórico. Un plan de 90 puntos que tus preparadores sí siguen le gana a un plan de 100 puntos que nadie ejecuta.
Otra configuración que separa al FEFO que funciona del FEFO decorativo: no dejes que el stock próximo a vencer muera en el almacenamiento profundo. Cuando se dispara la alerta de 60 días, el sistema debería recomendar mover ese stock a la zona de preparación frontal — lo más cerca del empaque, lo más fácil de agarrar. Posicionamiento físico más asignación FEFO es un doble candado. Muchos almacenes configuran la lógica de asignación pero nunca la estrategia de ubicación, y entonces las tarimas próximas a vencer se quedan al fondo de la zona de reserva mientras los preparadores agarran lo que tengan a la mano. El sistema tenía razón; ganó la naturaleza humana.
¿Qué haces con el stock próximo a vencer? Tres salidas: descuento (markdown), donación, destrucción. Márcalo con descuento para outlets o compra de empleados — recupera lo que puedas. La donación está protegida en EE. UU. por el Bill Emerson Good Samaritan Food Donation Act de 1996, que generalmente protege de responsabilidad a los donantes de alimentos aún no vencidos y puede traer beneficios fiscales — consulta con tu asesor fiscal. Y cuando de verdad no tiene salvación: destrucción con doble firma, documentación fotográfica y destrucción conforme. El flujo de destrucción también pertenece al sistema — quién solicita, quién aprueba, cómo se destruye, dónde viven las fotos. Si el proceso no está en el sistema, el proceso no existe.
Un apunte: FEFO no es solo para alimentos. Farmacia y cosméticos usan la misma lógica. Las únicas diferencias son ventanas de alerta más ajustadas y cumplimiento de destrucción más estricto.
Y un ciclo que la mayoría de los almacenes olvida cerrar: los conteos cíclicos. No solo cuentes cantidades — verifica las fechas de vencimiento contra las etiquetas físicas. Un desajuste entre la etiqueta y el sistema significa que alguien se saltó el proceso en la recepción o durante un movimiento. Registra las discrepancias de vencimiento como su propia categoría de varianza de conteo y revísalas cada mes. El conteo es el espejo más honesto que tus datos tendrán jamás.
Mañana por la mañana, corre una consulta en tu WMS: cuántos registros de inventario tienen la fecha de vencimiento en blanco, o un marcador como 2099-12-31. Tapa ese hueco primero — nada más de FEFO funciona sin eso.
Traducido del inglés. En caso de discrepancia, prevalece la versión en inglés.










