Cómo reconstruir el tarifario de transportistas de Excel a un TMS
Reconstruir un tarifario de transportistas de Excel a un TMS consiste en traducir un documento escrito para personas a una tabla estructurada sobre la que un motor de cálculo pueda operar — a mano, en un constructor estructurado, porque ningún software lee el archivo por ti. Seis defectos provocan casi todas las desviaciones: celdas combinadas, zonas en texto libre, tramos de peso solapados o con huecos, unidades mezcladas, tarifas sin fechas de validez y moneda implícita. Corrige esos seis y vuelve a calcular cinco expediciones ya facturadas, línea a línea.
¿Cómo reconstruir un tarifario de transportistas desde Excel a un TMS sin perder precisión?
Reconstruir un tarifario Excel a un TMS es mapear cuatro cosas: el modelo de tarifa, la tabla de zonas, los límites de los tramos con su unidad y las reglas de recargo. La precisión se pierde en seis sitios — celdas combinadas, zonas en texto libre, tramos solapados, unidades mezcladas, tarifas sin fecha y moneda implícita.
Un tarifario de transportista no es una exportación de base de datos. Es un documento maquetado para que lo lea alguien que ya conoce las convenciones de esa casa: qué celdas son por 100 kg, a qué zona remite el asterisco, que Canarias y Baleares se cotizan aparte, que esa hoja sustituyó a otra en enero. Todas esas convenciones viven fuera de las celdas. Un tarifario estructurado solo contiene las celdas.
Por eso la carga de un tarifario falla en silencio. El archivo entra, la tarifa aparece, el motor devuelve un número y el número es verosímil. No salta ningún error. El defecto se manifiesta cuatro semanas después, en forma de factura del transportista por encima del precio que cotizaste, sobre una expedición que ya has entregado y ya has facturado.
Seis familias de defectos explican casi todo. Merece la pena nombrarlas, porque cada una deja una huella distinta a la hora de verificar.
| Defecto | En la hoja de cálculo | Resultado del motor | Se ve como | Corrección previa |
|---|---|---|---|---|
| Celdas combinadas | Zona escrita una vez sobre 4 filas | 3 filas sin zona | no_zone con códigos postales válidos | Descombinar y repetir el valor |
| Zonas en texto libre | «Resto de península», «consultar» | Destino sin coincidencia | Cotizaciones rechazadas o mal tarificadas | Lista explícita de destinos |
| Tramos solapados | 0–100 y 100–200 | Gana la primera coincidencia | Columna equivocada en 100 kg | Límites superiores ascendentes |
| Unidades mezcladas | 17,90 y 179,00 en la misma pestaña | Orden de magnitud erróneo | Precio ×10 o ÷100 | Una unidad por tarifario |
| Sin fechas de validez | Archivo sin fecha ni versión | Se cotizan tarifas caducadas | Factura por encima de la cotización | validFrom / validUntil |
| Moneda implícita | «245,00» sin símbolo | Se asume EUR | Margen desviado por el tipo de cambio | Moneda en el tarifario |
Las secciones siguientes recorren un defecto cada una y cierran con el procedimiento de control. Esta guía da por sabido cuál de los cuatro modelos de tarifa estás mapeando: si no lo tienes claro, empieza por los cuatro tipos de tarifario de transporte y por el recorrido campo a campo de convertir un tarifario Excel en cotizaciones instantáneas. El resto de la categoría está en tarifarios y precios.
¿Por qué las celdas combinadas rompen la reconstrucción de un tarifario?
Una celda combinada guarda su valor únicamente en la celda superior izquierda; las demás están vacías. Un importador que lee fila a fila ve una zona rellena y tres en blanco. Lo mismo ocurre con números guardados como texto, filas ocultas y notas al pie dentro del rango de datos.
Combinar celdas en Excel es una instrucción de presentación, no una estructura de datos. Cuando un transportista une cuatro filas para escribir Zona 1 una sola vez, el valor se guarda en la primera celda y las tres de debajo están realmente vacías. Una persona lee el bloque; un importador lee tres filas sin zona. Esas filas o no entran, o entran colgadas de la última zona leída, que es peor: las tarifas son reales, simplemente están en la línea equivocada.
Las celdas combinadas casi nunca vienen solas. El mismo libro suele arrastrar otros cuatro defectos de maquetación:
- Números guardados como texto. Una celda con 17,90 € es una cadena, no un número. Llega como cero o como error de conversión. La pista es un número alineado a la izquierda en una columna alineada a la derecha.
- Cabeceras repetidas. Las hojas pensadas para imprimir repiten la fila de tramos cada 30 líneas. Cada repetición entra como una fila de datos con texto donde debería haber una tarifa.
- Filas y columnas ocultas. Una columna oculta se exporta igual. Una zona derogada que se ocultó en lugar de borrarse se reconstruirá si no la buscas.
- Notas al pie dentro del rango. «* islas a consultar» escrito en la celda inmediatamente inferior a la última zona se convierte en una zona fantasma sin tarifas.
La comprobación de dos minutos que las encuentra todas
Selecciona el rectángulo de celdas de tarifa y lee la barra de estado: el recuento de celdas numéricas tiene que ser exactamente filas × columnas. Un bloque de 12 zonas por 8 tramos debe dar 96. Cualquier cifra menor significa huecos, texto o celdas combinadas dentro del bloque. Después guarda la pestaña como CSV UTF-8 y abre el CSV en un editor de texto. El CSV es el tarifario despojado de su maquetación: sin combinaciones, sin colores, sin formato de moneda. Si una línea dice Zona 3;;;;;;; has encontrado la celda combinada; si dice Zona 3;"1.245,00"; has encontrado una coma decimal y un separador de miles que habrá que declarar.
Corrige el archivo, no el tarifario ya capturado. Un tarifario limpio es un activo que reutilizas en cada revisión de tarifas; un apaño programado alrededor de una maquetación rota hay que volver a descubrirlo el enero siguiente.
¿Cómo tratar las zonas escritas en texto libre en una tarifa de transporte?
Las zonas en texto libre del tipo «resto de península», «excepto 08100–08110» o «islas a consultar» esconden reglas que ningún importador puede leer. Conviértelas en claves de destino explícitas con una sola granularidad, crea una zona resto real cuando el transportista la tarifica y deja vacías las celdas «a consultar».
Los transportistas describen las zonas en prosa porque su propio departamento de tarifas resuelve esa prosa de memoria. Vale la pena aprender a reconocer las formulaciones habituales, porque cada una esconde una regla distinta:
- «Resto de península» / «interior del país» — es una zona real con una tarifa real. Créala, y úsala como destino por defecto solo dentro de ese país.
- «excepto 08100–08110» — una excepción recortada de un rango mayor. Los códigos postales recortados pertenecen a otra zona que está nombrada en otro sitio del archivo, muchas veces en una nota al pie.
- «igual que zona 2» — un alias. Duplica las tarifas en lugar de apuntar a la zona 2, porque las dos divergirán en la próxima revisión.
- «a consultar» / «bajo consulta» — no es una zona. Deja la celda vacía. El motor tiene que devolver sin tarifa y derivar la petición a una cotización manual.
- «Canarias, Ceuta y Melilla excluidas» — es un límite de cobertura, no un precio. Va en las restricciones del transportista, no en el mapa de zonas.
La auditoría de cobertura
Cuando el mapa de zonas ya es explícito, ponlo a prueba contra la realidad y no contra el archivo. Exporta los códigos postales de destino de todas las expediciones de los últimos doce meses, elimina duplicados y pasa la lista por el mapa reconstruido. Salen tres números: cuántos resuelven a una zona, cuántos resuelven a dos zonas y cuántos no resuelven a ninguna. El número peligroso es el del medio: un destino que encaja en dos zonas significa que el mapa se solapa, y una búsqueda que coincide dos veces elegirá una sin avisarte.
Decide una vez la granularidad de la clave y mantenla en todo el tarifario: dos dígitos de provincia, tres dígitos de prefijo postal o código postal completo. Mezclar niveles dentro de un mismo tarifario deja la auditoría de cobertura sin valor, porque una entrada de dos dígitos y otra de cinco coincidirán con la misma dirección.
Los destinos sin coincidencia tienen que fallar, no degradarse. En Cargavo, TMS para comisionistas de transporte y agentes de carga, un destino no resuelto devuelve no_zone y la petición sigue como cotización manual, por el camino que describe cotizar cuando ninguna tarifa cubre el trayecto. Un rechazo que ves vale más que un precio verosímil que no puedes comprobar.
¿Cómo detectar tramos de peso solapados o con huecos antes de importar?
Ordena las etiquetas de los tramos y lee las fronteras por parejas. «0–100» seguido de «100–200» se solapa justo en 100 kg; «hasta 100» seguido de «101–200» deja sin tarifa de 100,1 a 100,9 kg. Guarda una única lista ascendente de límites superiores para que cada peso caiga en un solo tramo.
Las etiquetas de tramo están impresas para alguien que nunca va a enviar una expedición de exactamente 100 kg. Tu motor sí lo hará, varias veces al mes, porque el peso tasable, también llamado peso facturable, es una cifra calculada que aterriza en números redondos mucho más a menudo que el peso real: las reglas de redondeo lo empujan ahí.
Lee las etiquetas impresas por parejas y clasifica cada frontera:
| Etiquetas impresas | Estado de la frontera | Con 100,0 kg | Con 100,5 kg | Guardar como límites superiores |
|---|---|---|---|---|
| 0–100 / 100–200 | Solape | Los dos tramos | Tramo 2 | 100, 200 |
| hasta 100 / 101–200 | Hueco | Tramo 1 | Sin tarifa | 100, 200 |
| 0–99 / 100–199 | Limpio | Tramo 2 | Tramo 2 | 99, 199 |
| hasta 100 / 100 y más | Solape | Los dos tramos | Tramo 2 | 100, abierto |
La convención que sobrevive al contacto con un motor de cálculo es una sola lista ascendente de límites superiores, con la regla de que un peso cae en el primer límite que no supera. Bajo esa regla, 100,0 kg pertenece al tramo de 100 y 100,1 kg al siguiente. Los transportistas dan por hecha exactamente esa regla y nunca la escriben, y por eso la maqueta «0–100 / 100–200» es tan frecuente y tan inocua sobre el papel.
Dos fronteras que nadie comprueba
La de abajo: por debajo del primer tramo se aplica el mínimo de facturación, y ese mínimo suele estar impreso una sola vez por zona en una esquina de la hoja, no dentro de la tabla. Un tarifario reconstruido sin él tarifica por debajo de coste todas las expediciones pequeñas, que son precisamente donde el porcentaje de margen es más alto en la cotización de fletes. La definición está en el glosario, en mínimo de facturación.
La de arriba: una hoja que termina en «2.000 kg y más» es una cosa; una hoja cuya última columna es «1.500–2.000 kg» y no tiene nada detrás es otra. En el segundo caso el transportista no ha tarificado por encima de 2.000 kg, y extrapolar la última tarifa inventa un precio que nunca aceptó. El comportamiento correcto es devolver out_of_range y cotizar esa expedición a mano, normalmente ya como carga completa y no como grupaje. Cargavo, TMS para comisionistas de transporte, trata el techo del último tramo como un límite duro por esa razón. Para comparar tramos antes de decidir, la calculadora de peso tasable devuelve la cifra que entra en la tabla.
¿Qué unidades y qué moneda hay que declarar antes de reconstruir un tarifario?
Declara cuatro cosas por tarifario: la unidad de tarifa (por 100 kg, por kg, por palet o por expedición), la unidad de peso (kg o lb), el factor de conversión en kilogramos por metro cúbico y la moneda. Leer una tarifa por kg en vez de por 100 kg multiplica el precio por 100.
Las unidades son el defecto de mayor radio de destrucción, porque un error de unidad es una multiplicación, no una desviación. Toma una zona tarificada a 12,90 y una expedición de 1.000 kilogramos tasables:
- Leído por 100 kg: 10 × 12,90 = 129,00 €
- Leído por kg: 1.000 × 12,90 = 12.900,00 €
- Leído como precio fijo de tramo: 12,90 €
Tres lecturas, tres órdenes de magnitud, una sola celda. La comprobación de magnitud lo resuelve en segundos: una tarifa de grupaje por 100 kg es un número de dos cifras que baja a medida que sube el tramo. Una columna que cae de 28,40 a 11,20 es por 100 kg. Una columna que sube de 62,00 a 224,00 es un precio fijo por tramo.
Después vienen las unidades que no aparecen en la tabla de tarifas, porque viven en las condiciones generales del transportista: kg o lb (una tarifa CWT tarifica por 100 lb, no por 100 kg, algo habitual en tráficos con Estados Unidos), el factor de conversión en kilogramos por metro cúbico y el mínimo por metro lineal en kilogramos por metro lineal de carga. Estos datos pertenecen al tarifario, no a tu software: un transportista que aplica 1.500 kg por metro lineal y otro que aplica 1.750 kg por metro lineal tienen que convivir sin que ninguno sea un ajuste global. El desarrollo completo está en el precio por metro lineal en grupaje, y la calculadora de metros lineales de carga convierte palets en metros ocupados.
La moneda es una propiedad del tarifario
Un transportista polaco que cotiza en PLN, uno suizo en CHF y uno británico en GBP te enviarán todos celdas con números sin símbolo. Un tarifario guardado sin divisa, dado por hecho en EUR, tiene todos sus precios equivocados desviados por el tipo de cambio, y el error es invisible porque las cifras parecen importes en euros perfectamente creíbles. En México, Colombia o Chile el caso cotidiano es el contrario: compras en USD y facturas en moneda local.
Cargavo, TMS para comisionistas de transporte, transitarios y agentes de carga, guarda la moneda en el propio tarifario entre EUR, USD, GBP, CHF, CAD, MAD y PLN, y rechaza una discrepancia entre la moneda del tarifario y la del cliente con invalid_grid en lugar de convertirla a un tipo no documentado. Una conversión congelada el día de la reconstrucción es un tipo de cambio del pasado: seis meses después, el margen que creías haber fijado no es el que estás cobrando. La aritmética del margen está en cómo aplicar el margen sobre el precio de compra de un flete.
¿Por qué un tarifario reconstruido necesita fechas de validez?
Las fechas de validez responden a la única pregunta que importa tras una discrepancia: qué tarifa calculó esta expedición. Guarda validFrom y validUntil en cada tarifario reconstruido, conserva las versiones derogadas en vez de sobrescribirlas y revisa las cotizaciones abiertas cuando un transportista revisa precios con efecto retroactivo.
Los tarifarios llegan como adjuntos llamados Tarifas 2026 def.xlsx, luego Tarifas 2026 definitivo.xlsx, luego Tarifas 2026 definitivo (2).xlsx. Ninguno lleva una fecha de entrada en vigor legible por una máquina, y la versión que importaste es la que estaba en la carpeta el día que hiciste el trabajo.
Se puede vivir con eso hasta que algo sale mal, y en ese momento hay tres preguntas que necesitas responder y no puedes:
- ¿Qué tabla de tarifas produjo el precio de la cotización Q-YYYY-NNNN enviada hace once semanas?
- ¿La expedición S-YYYY-NNNN se tarificó antes o después de la subida de abril?
- ¿Cuáles de mis cotizaciones abiertas están ahora por debajo del nuevo precio de compra del transportista?
Guardar validFrom y validUntil en el tarifario responde a las tres, y cuesta una línea de captura por reconstrucción. Dos reglas de trabajo la convierten en algo útil y no decorativo.
Nunca sobrescribir, siempre sustituir
Cuando un transportista revisa precios, captura la tarifa nueva como un tarifario nuevo con su propia ventana de validez y cierra el anterior: no edites las celdas del que ya existe. Sobrescribir destruye el único registro de cuál era tu precio de compra el día que cotizaste, que es exactamente el registro que necesitas cuando un cliente discute una factura seis meses después. El almacenamiento es gratis; reconstruir un tarifario derogado a partir de una cadena de correos, no.
Vigila el desfase entre validez de la cotización y validez de la tarifa
Una cotización enviada con 30 días de validez contra una tarifa que caduca en 10 días es una exposición de 20 días que has aceptado sin darte cuenta. O acortas la validez de la cotización a medida que la tarifa se acerca a su fecha final, o asumes la exposición a conciencia y la tarificas. La revisión retroactiva agudiza el problema: es habitual recibir en marzo una hoja nueva con efecto 1 de enero, lo que significa que expediciones ya entregadas y facturadas se tarificaron con precios que ya no existen. Cuando pase, lista las expediciones afectadas, recalcúlalas con el tarifario nuevo y decide una sola vez si absorbes la diferencia o refacturas: no lo descubras factura a factura. El ritmo de mantenimiento de toda una cartera de transportistas está en la gestión de tarifarios de transportistas.
¿Cómo verificar que un tarifario reconstruido calcula bien?
Vuelve a calcular cinco expediciones ya facturadas elegidas para probar cinco reglas distintas — mínimo de facturación, un tramo intermedio, una carga voluminosa y ligera, un peso justo por debajo de una frontera y una expedición con recargos — y compara transporte, combustible y opciones línea a línea contra la factura del transportista, al céntimo.
Probar un tarifario reconstruido con expediciones al azar no demuestra nada, porque la mayoría de las expediciones ejercitan las mismas dos reglas. Elige cinco a propósito, de modo que cada una solo pueda pasar si una regla concreta está bien:
| Prueba | Perfil de la expedición | Regla evaluada | Solo pasa si |
|---|---|---|---|
| 1 | 45 kg, 1 bulto, zona cercana | Mínimo de facturación | El precio es igual al mínimo de la zona |
| 2 | 620 kg, 2 palets, carga densa | Tramo y unidad | La tarifa se lee por 100 kg |
| 3 | 630 kg, 3 palets, no remontables | Mínimo por metro lineal | El peso tasable supera al real |
| 4 | 1.940 kg, zona lejana | Regla de pagar por | Se factura al suelo del tramo siguiente |
| 5 | 800 kg, hayón, ADR | Recargos y combustible | Cada línea de recargo coincide |
La prueba 3, de principio a fin
Tres palets no remontables de 1,20 × 0,80 × 1,35 m y 210 kg cada uno, a zona 2. Tarifario: 12,90 € por 100 kg en el tramo de 1.000–1.999 kg, mínimo de 1.500 kg por metro lineal, factor de conversión de 333 kg por metro cúbico, recargo por combustible del 9,2 %, hayón 28,00 €.
| Paso | Cálculo | Resultado |
|---|---|---|
| Peso real | 210 kg × 3 | 630 kg |
| Peso volumétrico | 3,888 m³ × 333 kg/m³ | 1.294,7 kg |
| Mínimo por metro lineal | 1,2 ml × 1.500 kg/ml | 1.800 kg |
| Transporte | 18 × 12,90 € | 232,20 € |
| Combustible 9,2 % | 232,20 € × 0,092 | 21,36 € |
| Hayón | Importe fijo | 28,00 € |
| Total de compra | 281,56 € |
La factura del transportista de esa expedición dice 281,56 €. Si el tarifario reconstruido devuelve 211,13 €, el mínimo por metro lineal no se declaró: el motor tarificó el peso volumétrico de 1.300 kg en lugar de 1.800 kg, lo que da 13 × 12,90 € = 167,70 € de transporte, más 15,43 € de combustible y los mismos 28,00 € de hayón. La diferencia es de 70,43 €, un 25,0 % — y habría sido invisible en una expedición densa, que es exactamente para lo que existe la prueba 3.
Lee la forma de la desviación
| Síntoma | Causa probable |
|---|---|
| Correcto en carga densa, bajo en carga voluminosa | Falta el mínimo por metro lineal o el factor de conversión |
| Desviado siempre en el mismo importe | Falta el mínimo de facturación o una tasa fija |
| Desviado exactamente un 9,2 % | No se aplica el recargo por combustible |
| Desviado por un factor de 10 o 100 | Unidad de tarifa mal leída |
| Erróneo en un solo destino | Solape o hueco en el mapa de zonas |
| Alto solo cerca de las fronteras de tramo | Falta la comparación de pagar por |
Compara líneas, nunca totales: dos errores que se compensan en una expedición dejarán de compensarse en la siguiente. La regla de la prueba 4 está definida en el glosario, en pagar por (paying-for). Y conviene ser claro sobre lo que una reconstrucción no es. Cargavo, TMS para comisionistas de transporte y agentes de carga, lee el archivo que el transportista ya te ha enviado: no hay API de transportista ni enlace EDI, así que una tarifa revisada hay que volver a importarla a mano. Tampoco es una bolsa de cargas, ni un marketplace de licitaciones, ni un sistema de gestión de flota o de dispatch. Los límites por plan y el número de tarifarios están en la página de precios.
Preguntas frecuentes
¿Cómo reconstruir un tarifario de transportistas desde Excel a un TMS?
Primero limpia el libro: descombina las celdas, convierte las zonas en texto libre en claves de destino explícitas, reescribe las etiquetas de tramo como límites superiores ascendentes y declara la unidad de tarifa y la moneda. Después mapea la hoja sobre un tarifario estructurado y valídalo recalculando cinco expediciones ya facturadas línea a línea. La limpieza lleva más tiempo que la reconstrucción en sí y evita casi todas las discrepancias posteriores.
¿Por qué las celdas combinadas estropean la carga de un tarifario?
Una celda combinada guarda su valor solo en la celda superior izquierda del bloque; las demás están vacías. Un importador que lee fila a fila ve una zona rellena y varias en blanco, así que esas filas de tarifas o no entran o se cuelgan de la zona anterior. Descombinar y repetir la etiqueta en cada fila lo resuelve de forma definitiva.
¿Cuántas expediciones hay que probar después de cargar un tarifario de transportista?
Cinco bastan si cada una pone a prueba una regla distinta: una expedición por debajo del mínimo de facturación, una densa en un tramo intermedio, una ligera y voluminosa que dispare el mínimo por metro lineal, un peso justo por debajo de una frontera de tramo y una expedición con recargos y combustible. Probar veinte expediciones al azar ejercita las mismas dos reglas veinte veces y demuestra mucho menos.
¿Qué pasa si compro en dólares y facturo en moneda local?
La moneda tiene que estar guardada en el propio tarifario, no asumida por el software. Un tarifario capturado sin divisa y dado por hecho en euros tiene precios están todos desviados por el tipo de cambio, y el error es invisible porque las cifras siguen pareciendo verosímiles. Cargavo admite EUR, USD, GBP, CHF, CAD, MAD y PLN, y rechaza una discrepancia de moneda con invalid_grid en lugar de convertir a un tipo no documentado.
¿Hace falta una API del transportista para reconstruir sus tarifas?
No hace falta ni API ni conexión EDI, porque reconstruir un tarifario es una lectura en un solo sentido de un archivo que el transportista ya te envió por correo. La contrapartida es que nada se actualiza solo: cuando el transportista revisa precios, reconstruyes la hoja nueva como un tarifario nuevo con sus propias fechas de validez y cierras el anterior.
¿Qué debe hacer un tarifario reconstruido cuando un destino no coincide con ninguna zona?
Debe negarse a tarificar la expedición y decirlo, en lugar de caer en la zona vecina. Un rechazo deriva la petición a una cotización manual, que es recuperable; un precio verosímil pero equivocado se descubre en la factura del transportista, que ya no lo es. Cargavo devuelve no_zone en ese caso y mantiene la petición en el mismo flujo de cotizaciones.
Guías relacionadas
- Gestión de tarifarios de transportistas: de la hoja de Excel al cotizador de fletes
- Los 4 tipos de tarifario de transporte terrestre, explicados
- ¿Margen porcentual o importe fijo? Reglas de margen en fletes