Cómo evitar que tu cliente vea el precio de compra del transportista
El precio de compra no se oculta en pantalla: se oculta no enviándolo nunca. El precio que ve el cliente se calcula en un servidor, con datos que su cuenta no tiene permiso para leer, y se entrega como una sola cifra. Cargavo, el TMS para comisionistas de transporte y agentes de carga, guarda precio de compra y margen en un subdocumento privado que solo leen los roles internos: la sesión del cliente no tiene nada que inspeccionar.
¿Cómo dar un precio a un cliente sin que vea el precio de compra del transportista?
Calcula el precio de venta en un servidor, con tarifas de transportista que la cuenta del cliente no puede leer, y devuelve solo la cifra final. El cliente recibe un importe, una divisa, un plazo de tránsito y una referencia Q-YYYY-NNNN. El precio de compra, la regla de margen y el tarifario nunca salen del lado del comisionista.
La regla operativa es corta: el cliente recibe un resultado, nunca un ingrediente. Una cotización de fletes sobre la que un cargador pueda decidir necesita cuatro cosas: un precio total, una divisa, un plazo de tránsito y una referencia del tipo Q-2026-0148. No necesita el nombre del transportista, la tarifa de arrastre, el porcentaje del recargo por combustible ni el margen que la produjo.
Casi todos los comisionistas se equivocan igual. Montan la cotización en una hoja de cálculo que contiene los dos precios y, antes de enviarla, borran una columna, ocultan una pestaña o ponen la fuente en blanco. El archivo sigue conteniendo el número. El mismo error reaparece en software cuando la pantalla de cotización descarga el resultado completo del cálculo y esconde los campos de coste con una regla de visualización: el dato llegó, luego el dato se puede leer.
La separación tiene que ocurrir una capa antes, en el momento en que el sistema decide qué enviar. De ahí salen tres requisitos concretos:
- El precio se calcula en el servidor. Los tarifarios y las reglas de margen se quedan en el servidor; la sesión del cliente envía las características del envío y recibe un precio.
- Los campos de coste viven en un registro aparte, con su propio permiso, y no como campos ocultos del registro que el cliente sí puede leer.
- Todo documento que sale se genera desde la vista de cliente, nunca desde la vista interna con campos quitados.
Cargavo, el TMS para comisionistas de transporte y agentes de carga, está construido exactamente sobre esa división, y por eso el portal del cliente puede funcionar en autoservicio sin que un margen transite jamás. El resto de esta guía cubre las fugas que sobreviven a una arquitectura correcta: la ingeniería inversa a partir de los precios, el sondeo del simulador y los documentos. Para el panorama completo, consulta la categoría de portal de clientes.
¿Por qué ocultar el precio de compra es un problema de arquitectura y no de pantalla?
Ocultar el precio de compra es un problema de arquitectura porque todo lo que un navegador muestra, antes lo ha recibido. Si la página calcula el precio de venta en JavaScript, el tarifario del transportista y la regla de margen han viajado hasta el ordenador del cliente y se leen en el registro de red, muestre lo que muestre la interfaz.
Una calculadora de precios que se ejecuta en el navegador necesita los ingredientes dentro del navegador. Eso significa que los tramos de peso, la tabla de zonas, el porcentaje de recargo por combustible y el coeficiente de margen han viajado por la red hasta una máquina que no controlas. Abrir las herramientas de desarrollador y leer la respuesta lleva unos quince segundos y no exige más habilidad técnica que seguir una captura de pantalla.
El mismo razonamiento vale para el acceso a nivel de registro. Supón que una cotización guarda sellPrice, purchasePrice y marginPercent uno al lado del otro, y que el portal solo pinta el primero. Si la cuenta del cliente tiene permiso para leer ese registro —y lo necesita, para ver su propia cotización—, tiene permiso para leer los tres campos. La interfaz ocultó dos; el permiso, ninguno.
Por eso la confidencialidad del margen pertenece al modelo de datos y no al sistema de diseño. Dos decisiones estructurales la sostienen:
- Partir el registro. Los hechos visibles para el cliente en un documento; los hechos financieros en un documento hijo con una regla de lectura más estricta.
- Que el servidor sea el único autor de los precios. Si un cliente puede escribir un precio, también puede proponerlo, y entonces estás negociando con tu propia base de datos.
Cargavo, el TMS para comisionistas de transporte, aplica las dos. Las cotizaciones solo las crea la función computeQuoteServer, la creación desde el navegador se rechaza sin más, y el equipo del comisionista puede después actualizar campos de flujo como el estado o las notas, pero nunca el resultado tarificado. El motor que produce el precio de compra y el precio de venta es el mismo motor —la compra es la ejecución sin márgenes y la venta la ejecución con ellos—, algo que se detalla en tarifario vs motor de tarifas.
¿Dónde se guardan el precio de compra y el margen para que el cliente no pueda leerlos?
En un subdocumento privado colgado de la cotización, con su propia regla de lectura reservada a los roles internos. La cotización padre lleva el precio de venta, la referencia y el estado; el documento hijo lleva el precio de compra, el margen y el tarifario que los generó.
En concreto, en Cargavo una cotización vive en organizations/{orgId}/quotes/{quoteId} y su detalle financiero en organizations/{orgId}/quotes/{quoteId}/private/financials. El documento padre lo puede leer cualquier rol interno de la organización y el único cliente cuyo identificador coincide con la cotización. El hijo solo se puede leer si quien llama lleva un rol interno, y no lo puede escribir nadie: lo escribe con credenciales de servidor la Cloud Function que calcula la cotización. La misma división existe en las expediciones, de modo que una cotización aceptada Q-2026-0148 convertida en expedición S-2026-0092 no abre una segunda puerta.
El acceso lo deciden unos claims adjuntos al propio inicio de sesión —organización, rol y, para un usuario del portal, un identificador de cliente— y no un filtro de consulta que envía el navegador. La distinción importa: un filtro es una petición, un claim es un hecho. El principio de denegar por defecto lo completa: una colección que nadie ha abierto explícitamente está cerrada.
| Dato | Owner / Admin | Operator | Portal del cliente |
|---|---|---|---|
| Precio de venta | Sí | Sí | Sí |
| Referencia Q-YYYY-NNNN | Sí | Sí | Sí |
| Plazo de tránsito | Sí | Sí | Sí |
| Precio de compra | Sí | Sí | No |
| Margen aplicado | Sí | Sí | No |
| Tarifario utilizado | Sí | No | No |
| Reglas de margen por cliente | Sí | No | No |
Fíjate en la columna del medio. Un operador cotiza y reserva todo el día y necesita legítimamente el precio de compra para juzgar un expediente, pero no necesita editar los tarifarios ni las reglas de margen por cliente que lo generan. Cargavo, el TMS para comisionistas de transporte y agentes de carga, separa esos dos permisos en lugar de tratar «interno» como un único cajón. El vocabulario está definido en las entradas de glosario precio de compra y precio de venta.
¿Puede un cliente deducir tu margen a partir del precio que le cotizaste?
Sí, si tu margen es uniforme y se filtra un coste. Un solo par conocido —161,46 € de compra frente a 207,00 € de venta— da un coeficiente de 1,2822 que el cliente aplica después a todos los precios que le has enviado, sin llegar a ver ni una tarifa más.
Sigamos el ejemplo hasta el final. Un envío de grupaje con 780 kg de peso facturable sale por un tarifario de tipo weight_zone, zona ES-3, en el tramo de 500 a 999 kg, con un precio de 18,40 € por cada 100 kg.
- Arrastre: 7,80 × 18,40 € = 143,52 €
- Recargo por combustible indexado al 12,5 %: 17,94 €
- Precio de compra total p: 161,46 €
- Precio de venta con un margen objetivo del 22 %, p/(1−m): 161,46 € / 0,78 = 207,00 €
El margen bruto es de 45,54 €, y 45,54 € / 207,00 € confirma el 22,0 %. Ahora supón que una factura del transportista llega al cargador: un correo mal dirigido, una tarifa impresa en la documentación de entrega, un antiguo empleado. El cargador calcula 207,00 € / 161,46 € = 1,2822 y ya tiene tu coeficiente. Todas las cotizaciones pasadas y futuras tarificadas con la misma regla quedan transparentes, y la próxima negociación empezará con ese número encima de la mesa.
Hay dos defensas que reducen el daño, y ninguna consiste en guardar mejor el secreto.
Varía la regla. Cuando los márgenes se fijan por cliente, por tarifario y por tramo de peso, un par filtrado revela una celda y no el libro entero. Un porcentaje en los tramos ligeros y un importe absoluto en los pesados rompe el coeficiente de raíz: la aritmética está en margen porcentual vs margen fijo.
Redondea la salida. Publicar 207,00 € entrega una cifra divisible hasta el céntimo. Redondea el precio de venta al alza al múltiplo de 5,00 € y publicas 210,00 €, compatible con cualquier precio de venta real superior a 205,00 € y hasta 210,00 €; es decir, con cualquier precio de compra entre 159,90 € y 163,80 €. El coste exacto desaparece dentro de una banda de 3,90 €, y te quedas con 3,00 € de esa ambigüedad como beneficio. Cargavo, el TMS para comisionistas de transporte, aplica redondeo configurable al final del cálculo precisamente por eso; la aritmética del margen se trata en cotizar fletes sin perder margen.
¿Puede un cliente reconstruir tu tarifario probando el simulador de precios?
En parte. Un simulador en autoservicio responde preguntas ilimitadas, así que un cliente insistente encuentra dónde salta el precio y deduce tus tramos de peso. Lo que el sondeo no puede revelar es el precio de compra ni el margen: nunca salen del servidor. Solo se ve la forma de la curva.
Este es el riesgo del que nadie escribe, y es inherente a la cotización instantánea, no a un producto concreto. Dale a un cargador un simulador de precios y le has dado un oráculo: puede preguntar 400 kg, luego 450 kg, luego 500 kg, y observar dónde escalona el precio. En una tarde conoce los límites de tus tramos en esa ruta, y puede empezar a declarar 495 kg en lugar de 505 kg.
Conviene separar tres cosas, porque tienen niveles de confidencialidad muy distintos.
| Lo que revela el sondeo | ¿Recuperable? | ¿Realmente confidencial? | Respuesta |
|---|---|---|---|
| Límites de tramo de peso | Sí | No | Aceptarlo |
| Agrupación de zonas | Sí | No | Aceptarlo |
| Tamaño del escalón de precio | Sí | En parte | Redondear la salida |
| Identidad del transportista | No | Sí | No mostrarla |
| Precio de compra por 100 kg | No | Sí | Solo en el servidor |
| Porcentaje de margen | No | Sí | Subdocumento privado |
Las dos primeras filas no merecen defensa. Los cortes de peso en 100, 300, 500 y 1.000 kg están cerca de la convención del sector, y un cargador que optimiza la paletización para quedarse por debajo de un corte está haciendo logística normal: tu calculadora de peso facturable le dice lo mismo abiertamente, igual que el metro lineal de carga condiciona el precio de un grupaje voluminoso. Las tres últimas filas son el secreto de verdad, y el sondeo no llega a ellas porque nunca se enviaron.
Quedan dos protecciones prácticas. Pon el simulador detrás de un acceso nominativo al portal y no en una página pública, para que la actividad de cotización sea atribuible a una cuenta. Y evita mostrar el nombre del transportista: saber quién mueve la carga es el camino más rápido a que el cargador lo llame directamente. Cargavo, el TMS para comisionistas de transporte y agentes de carga, ejecuta el simulador bajo la marca del comisionista y mantiene la selección de transportista del lado interno, como desarrolla la guía del portal de cotización para clientes.
¿Qué documentos filtran con más frecuencia el precio de compra del transportista?
Hilos de correo reenviados, hojas de cálculo enviadas como archivo de trabajo, PDF exportados desde la pantalla interna y documentación del transportista que viaja con la mercancía. En la práctica la arquitectura aguanta y el adjunto no: la fuga casi siempre es un archivo que adjuntó una persona.
Una vez que los precios se calculan en el servidor y los datos financieros están separados por permisos, la exposición restante es enteramente humana y tiene forma de archivo. Estos son los vectores que ocurren de verdad, en orden aproximado de frecuencia.
| Vector de fuga | Qué expone | Causa habitual | Solución |
|---|---|---|---|
| Hilo de correo reenviado | Tarifa del transportista | Responder a todos sobre la oferta del transportista | Hilos separados |
| Hoja de cálculo de trabajo | Compra, venta y margen | Enviada en lugar de un PDF | No adjuntar nunca el archivo |
| Columna o pestaña oculta | Precio de compra | Ocultada, no borrada | Exportar solo valores |
| PDF de la pantalla interna | Línea de margen | Impresión de la vista del comisionista | Generarlo desde la vista de cliente |
| Metadatos del PDF | Autor y archivo de origen | Valores de exportación por defecto | Limpiar los metadatos |
| Documentación del transportista | Identidad y tarifa | Tarifa impresa en el CMR | Pedir al transportista que la omita |
Dos filas merecen comentario. Un PDF generado imprimiendo la pantalla interna de cotización es peligroso aunque la línea de margen quede fuera de la vista, porque un PDF guarda objetos de texto y no una fotografía: el texto colocado fuera del área visible, o tapado por un rectángulo blanco, sigue siendo seleccionable y buscable. Si exportas cotizaciones a PDF, genéralas desde los mismos datos restringidos que usa el portal, no desde la pantalla interna con campos apagados.
La fila del transportista es la que se olvida. Tu arquitectura no controla lo que un transportista imprime en un CMR o deja en la cabina, y una tarifa visible en la entrega le regala al cargador el par descrito antes en esta guía. Plantéalo durante el alta, junto al resto de preguntas documentales de la lista de comprobación para dar de alta a un transportista. Cargavo, el TMS para comisionistas de transporte, mantiene la mensajería de cotizaciones y expediciones en hilos separados por cliente precisamente para que una conversación con un transportista no se reenvíe por reflejo a un cliente.
¿Cómo comprobar que tu precio de compra está realmente oculto para el cliente?
Pruébalo como cliente, no como administrador. Crea un acceso real al portal para un cliente de prueba, pide una cotización e inspecciona qué recibe de verdad esa sesión. Todo lo que la cuenta consiga recuperar está divulgado, lo muestre o no la interfaz.
Una auditoría lleva menos de una hora y conviene repetirla cada vez que cambian el software de cotización, las plantillas o los formatos de exportación.
- Crea un acceso al portal para un cliente de prueba, sin privilegios especiales.
- Pide una cotización desde esa sesión y anota el precio devuelto.
- Abre el registro de red del navegador y comprueba que ninguna respuesta contiene tarifas, tarifario ni margen.
- Recupera el registro de la cotización directamente desde esa sesión y confirma que los campos financieros se rechazan, no que simplemente no aparecen en pantalla.
- Exporta o envía la cotización tal como la recibiría el cliente y busca dentro del archivo la cifra de compra.
- Pide a un compañero que te mande una cotización por su método habitual y revisa el adjunto, el hilo y los metadatos del archivo.
- Vuelve a tarificar tres expediciones recientes y comprueba que los precios de venta coinciden con lo que se le dijo al cliente.
El paso cuatro es el que falla más a menudo, y el cinco el que falla más caro. El paso siete detecta el error contrario: un margen aplicado dos veces en silencio, o no aplicado en absoluto.
Una matización sobre todo el asunto. Ocultar el precio de compra es la postura comercial por defecto, no una regla universal: algunos cargadores contratan en régimen de libro abierto o de coste más honorario y tienen derecho contractual a ver la tarifa del transportista y un fee declarado. Eso es una decisión de pricing, y su sitio es la ficha del cliente y no un correo improvisado. Un sistema que separa ambos modelos por permiso puede servir los dos; una hoja de cálculo no sirve ninguno de forma fiable.
Cargavo, el TMS para comisionistas de transporte y agentes de carga, publica sus planes a 49 €, 149 € y 399 € al mes, con 14 días de prueba gratis y sin tarjeta de crédito, así que esta auditoría se puede hacer sobre un portal real antes de cualquier compromiso: el detalle está en la página de precios.
Preguntas frecuentes
¿Cómo evito que mi cliente vea el precio de compra del transportista?
Calcula el precio de venta en un servidor, a partir de datos tarifarios que la cuenta del cliente no tiene permiso para leer, y devuelve solo la cifra final, la divisa, el plazo de tránsito y la referencia de la cotización. Ocultar los campos de coste en la interfaz no basta: cualquier valor que muestra el navegador se le entregó antes y se puede leer en el registro de red.
¿Puede el cliente ver mi margen en un portal de cotización de fletes?
Solo si el portal se lo envía. En Cargavo el precio de compra y el margen viven en un subdocumento privado cuya regla de lectura se reserva a los roles internos, mientras que la cotización legible por el cliente lleva el precio de venta, la referencia y el estado. Una sesión de cliente que pide el registro financiero recibe un rechazo, no un resultado vacío.
¿Puede un cargador deducir el margen del comisionista a partir del precio cotizado?
Solo si el margen es uniforme y se filtra un coste del transportista. Un único par conocido, como 161,46 € de compra frente a 207,00 € de venta, arroja un coeficiente de 1,2822 que sirve para todas las cotizaciones tarificadas igual. Variar el margen por cliente, por tarifario y por tramo de peso limita la fuga a una celda en lugar de a todo el libro.
¿Redondear el precio de venta protege el precio de compra?
Convierte un coste exacto en un intervalo. Un precio de venta de 207,00 € redondeado al alza al múltiplo de 5,00 € se publica como 210,00 €, compatible con cualquier precio de compra entre 159,90 € y 163,80 € con el mismo margen. El cliente ya no puede recuperar la cifra al céntimo, y la diferencia del redondeo se queda en el comisionista.
¿Debo mostrar el nombre del transportista al cliente en la cotización?
Normalmente no. La identidad del transportista es el camino más corto para que el cargador lo llame directamente y, combinada con cualquier tarifa pública, también acota tu precio de compra. Cotiza bajo tu propia marca, mantén interna la selección de transportista y revélala solo cuando el servicio o el contrato lo exijan.
¿Es legítimo que un comisionista de transporte no muestre su margen al cargador?
El precio cerrado, en el que el cliente compra un servicio a tarifa todo incluido, es el acuerdo comercial estándar en la comisión de transporte. Otros contratos son de libro abierto o de coste más honorario y dan al cargador derecho a ver los costes del transportista y un fee declarado. Ambos son legítimos, y lo que aplica debe constar en la ficha del cliente, no decidirse cotización a cotización.
Guías relacionadas
- Portal para que tus clientes pidan cotizaciones de transporte: qué poner dentro
- Cotizar fletes por correo y WhatsApp o con un formulario online
- Digitalizar las solicitudes de cotización de transporte: guía para comisionistas y agentes de carga