Sincronizar precios B2B del ERP a la tienda online es el flujo más complejo de una integración eCommerce porque los modelos de precios del ERP y de la tienda son fundamentalmente diferentes. El ERP gestiona precios con listas de precios, descuentos por volumen, descuentos por cliente, rappels, promociones temporales y condiciones especiales negociadas. La tienda online tiene un precio base por producto y, como mucho, precios específicos por grupo de clientes y por cantidad.

El resultado de una sincronización mal hecha: un cliente B2B entra en tu tienda, ve un precio diferente al que tiene pactado con tu comercial, y llama para quejarse. O peor: hace un pedido al precio incorrecto y luego hay que rectificar la factura. La sincronización de precios B2B debe ser exacta, actualizada y coherente con lo que el ERP calcula internamente.

Cómo funciona el modelo de precios en un ERP

La mayoría de ERPs (SAP, Odoo, Business Central, Sage) gestionan precios con una combinación de estos elementos:

Listas de precios (Price Lists)

Una lista de precios es un conjunto de precios asociado a un grupo de clientes o a condiciones comerciales. Ejemplos típicos:

  • PVP — precio público, el más alto
  • Tarifa Distribuidor — precio para distribuidores con descuento del 30-40% sobre PVP
  • Tarifa Instalador — precio para instaladores, descuento del 20-25%
  • Tarifa Gran Cuenta — precio negociado para clientes grandes
  • Tarifa Exportación — precios para mercados internacionales, en otra moneda

Cada cliente B2B tiene asignada una lista de precios principal. Un distribuidor ve precios de «Tarifa Distribuidor». Un instalador ve precios de «Tarifa Instalador». El ERP aplica la lista correcta automáticamente cuando el comercial crea un pedido.

Descuentos por volumen (escalados)

Además de la lista de precios base, el ERP puede aplicar descuentos adicionales por cantidad:

  • 1-9 unidades: precio de lista
  • 10-49 unidades: -5%
  • 50-99 unidades: -10%
  • 100+ unidades: -15%

Estos escalados pueden ser globales (aplican a todos los productos) o por familia de producto. El ERP calcula el precio final automáticamente según la cantidad del pedido.

Descuentos por cliente (condiciones especiales)

Un cliente concreto puede tener un descuento adicional negociado por el comercial: «Industrias López tiene un 5% extra sobre Tarifa Distribuidor en la familia de cables». Esto se registra en el ERP como una condición especial del Business Partner. Es el nivel más granular de precio.

Promociones temporales

Precios especiales válidos durante un período: «campaña de verano, 10% extra en ventilación industrial del 1 al 31 de julio». El ERP gestiona estas promociones con fechas de inicio y fin.

Cómo funciona el modelo de precios en un eCommerce

La tienda online tiene un modelo más simple:

  • Precio base: un precio por producto (con o sin IVA según configuración)
  • Precios por grupo de clientes: en PrestaShop, specific_prices por customer group. En Shopify Plus, Price Lists por Company. En WooCommerce, plugins de precios por rol.
  • Descuentos por cantidad: limitado. PrestaShop lo soporta con specific_prices por quantity. Shopify lo soporta con quantity rules en B2B.
  • Precios por cliente individual: posible pero complejo. En PrestaShop, specific_prices por customer_id. Escala mal con miles de clientes.

El mapeo: de ERP a eCommerce

El middleware debe traducir el modelo complejo del ERP al modelo más simple de la tienda. Las decisiones clave:

Opción A: Calcular el precio final en el middleware

El middleware lee las listas de precios del ERP, aplica las reglas (descuentos por volumen, por cliente, promociones) y calcula el precio final para cada combinación producto-cliente-cantidad. Luego envía ese precio calculado a la tienda como specific_price. Ventaja: la tienda siempre muestra el precio correcto. Desventaja: el volumen de datos puede ser enorme (50.000 productos x 200 clientes = 10 millones de precios).

Opción B: Mapear listas de precios a grupos de clientes

Cada lista de precios del ERP se mapea a un grupo de clientes en la tienda. «Tarifa Distribuidor» → grupo «Distribuidores» en PrestaShop. Se sincronizan los precios de cada lista como precios del grupo. Los descuentos por cliente individual se gestionan como precios específicos adicionales. Es más manejable pero menos preciso si hay muchas condiciones especiales.

Opción C: Consulta de precio en tiempo real

La tienda no almacena precios B2B. Cuando un cliente B2B accede a una ficha de producto, la tienda consulta al ERP (vía el middleware) el precio exacto para ese cliente, ese producto y esa cantidad. Ventaja: siempre exacto. Desventaja: latencia adicional en la navegación, dependencia de la disponibilidad del ERP.

En la práctica, la opción B es la más utilizada por su equilibrio entre precisión y rendimiento. Para clientes grandes con condiciones muy específicas, se complementa con precios individuales (opción A parcial).

Paso a paso: implementar la sincronización

Paso 1: Inventariar las listas de precios del ERP

Documenta cuántas listas de precios tienes, qué clientes están asignados a cada una y cuántos productos tiene cada lista. Si tienes 5 listas con 10.000 productos cada una, son 50.000 precios a sincronizar. Si tienes 50 listas, son 500.000.

Paso 2: Crear los grupos de clientes en la tienda

Crea un grupo de clientes en el eCommerce por cada lista de precios del ERP. Asigna cada cliente B2B al grupo correspondiente. El middleware mantiene este mapeo actualizado: si un cliente cambia de lista en el ERP, se mueve al grupo correcto en la tienda.

Paso 3: Sincronizar precios por grupo

El middleware lee los precios de cada lista del ERP y los envía a la tienda como precios específicos del grupo. Frecuencia recomendada: una vez al día si los precios no cambian frecuentemente. En tiempo real si hay cambios frecuentes o campañas activas.

Paso 4: Gestionar descuentos por volumen

Si el ERP tiene escalados de precio por cantidad, el middleware los traduce a las funciones de la tienda. En PrestaShop: specific_prices con from_quantity. En Shopify: quantity price breaks. Si la tienda no soporta escalados nativos, se pueden implementar con JavaScript en el frontend que consulte los rangos al middleware.

Paso 5: Gestionar condiciones especiales por cliente

Los clientes con descuentos individuales negociados requieren precios específicos por customer_id. Si son pocos (10-20 clientes gran cuenta), se gestionan como precios individuales. Si son muchos, se crean listas de precios específicas en el ERP para cada uno y se mapean a «grupos de un solo miembro» en la tienda.

El error más común

El error más común en sincronización de precios B2B es no gestionar el IVA correctamente. El ERP trabaja con precios sin IVA. La tienda puede mostrar precios con o sin IVA según el grupo de clientes (B2B sin IVA, B2C con IVA). El middleware debe saber si el precio que envía es con o sin IVA, y la tienda debe estar configurada para interpretarlo correctamente. Un error aquí significa que el cliente ve precios un 21% más caros o más baratos de lo que debería.

Segundo error frecuente: no sincronizar las actualizaciones. Los precios cambian: nuevas tarifas anuales, promociones, ajustes de coste. Si la sincronización se configura una vez y no se mantiene, a los 3 meses los precios de la tienda están desactualizados. El middleware debe tener un flujo de actualización periódico y alertas cuando detecta cambios en las listas de precios del ERP.

La sincronización de precios B2B es técnicamente compleja pero absolutamente necesaria. Sin ella, tu tienda online B2B no es más que un catálogo bonito que no refleja las condiciones comerciales reales de tus clientes.