FrancodesystemsFran<code>systems
EcommerceIntegración a medida

Integración Holded Shopify

Facturación, stock y devoluciones de Shopify a Holded en tiempo real.

HoldedHolded
Shopify

Tiempo de implantación · 5-10 días laborables

Diagnóstico

El problema

Una tienda Shopify con 200+ pedidos al mes pierde entre 6 y 10 horas semanales generando facturas manualmente desde el panel. El equipo administrativo copia números de pedido, importes, datos fiscales y conceptos a Holded uno a uno, y cualquier descuido se traduce en un libro de facturación que la asesoría devuelve con correcciones. Paralelamente, el stock entre Shopify y el ERP siempre va con desfase: vendes productos sin existencias, dejas de vender lo que sí tienes, y atiendes reclamaciones que ensucian la reputación. Los plugins gratuitos o módulos a precio único no resuelven nada de esto en cuanto la tienda crece: rompen con cambios de tema, no manejan bien IVA intracomunitario, no contemplan devoluciones parciales y dejan huérfanos los pedidos con descuentos por línea.

Propuesta

La solución

Cada pedido de Shopify genera automáticamente la factura correspondiente en Holded con su cliente, su serie, su tipo de IVA y su forma de pago. El stock se sincroniza bidireccionalmente entre ambas plataformas con resolución de conflictos por timestamp. Las devoluciones y reembolsos disparan facturas rectificativas en Holded y ajustan stock únicamente sobre las unidades efectivamente retornadas. Toda la operación es idempotente: si Shopify reintenta un webhook, no duplicamos nada.

Scope

Qué automatizamos

  • Pedido Shopify → cliente + factura en Holded con serie correcta (B2C, B2B, intracomunitario, exportación)
  • Cliente nuevo Shopify → contacto Holded con NIF validado contra VIES si aplica
  • Producto Shopify ↔ producto Holded sincronizado (SKU, precio, IVA, categoría)
  • Stock bidireccional con resolución de conflictos por timestamp
  • Refund Shopify → factura rectificativa Holded + ajuste de stock parcial
  • Multidivisa con contravalor EUR registrado al tipo de cambio del propio pedido
  • Multi-IVA: detección automática de B2C UE (IOSS), B2B intracomunitario (0% con VIES), exportación (0%)
  • Descuentos por línea, gastos de envío, impuestos y propinas mapeados a conceptos Holded
  • Pedidos con Shopify POS marcados con su tienda física para reporting por canal
Quién lo usa

Casos de uso reales

Estos son los perfiles que más nos piden la integración HoldedShopify y qué consiguen al final.

Caso 01

Tienda DTC con 500 pedidos/mes

Antes: El equipo administrativo dedicaba 2 jornadas al cierre mensual cuadrando pedidos Shopify con facturas Holded y reconciliando devoluciones.

Después: Cierre mensual en una mañana. Cero discrepancias entre Shopify, Holded y banco. Asesoría deja de mandar correcciones.

Caso 02

Marca con B2B y B2C en la misma tienda

Antes: Mezclaban facturas con IVA y sin IVA según el cliente, y mandar facturas intracomunitarias requería revisar cada pedido a mano.

Después: Detección automática de NIF intracomunitario válido contra VIES y serie de facturación correcta sin intervención humana.

Caso 03

Multi-tienda Shopify + Shopify POS

Antes: Tres canales (online, tienda física, marketplace) que generaban tres líneas contables descoordinadas y stock siempre desactualizado.

Después: Inventario unificado, facturas con canal de origen identificado y reporting limpio por tienda en Holded.

Antes / Después

Qué cambia exactamente

El día a día sin la integración y con ella, lado a lado.

Sin la integración

  • 6-10 h/semana copiando pedidos a Holded a mano
  • Stock con 24-48 h de desfase y ventas de productos agotados
  • Devoluciones parciales mal contabilizadas o pendientes de cierre
  • IVA intracomunitario revisado pedido a pedido
  • Asesoría devuelve el cierre con correcciones cada mes

Con la integración

  • Facturas generadas en segundos tras el pedido, sin intervención manual
  • Stock unificado y actualizado en tiempo real entre canales
  • Rectificativas automáticas con ajuste de stock parcial preciso
  • VIES y matriz de IVA aplicadas según país y NIF del comprador
  • Cierre mensual limpio: la asesoría no tiene que corregir nada
Arquitectura

Cómo lo construimos

Conectamos vía webhooks de Shopify (orders/create, orders/updated, refunds/create, inventory_levels/update) que entran a una cola BullMQ con Redis. Los workers son idempotentes con dedupe por X-Shopify-Webhook-Id, llaman a la API REST de Holded con backoff exponencial y registran cada operación en logs estructurados auditable. Si Holded o Shopify están caídos, los jobs reintentan durante 24 horas y, si fallan definitivamente, alertan al equipo para resolución manual sin perder datos. El servicio corre fuera del Shopify (en VPS dedicado o en tu propia infra) para que no se rompa con cada update de tema o de la app de Shopify.

flow.ts
webhook shopify.event
queue.enqueue(jobId)
worker.handle() // idempotente
holded.api.call() // retries con backoff
log.emit({ status: 'ok' })
FAQ

Preguntas frecuentes

¿Qué pasa con las devoluciones parciales?

Generamos una factura rectificativa en Holded con la cantidad exacta devuelta y ajustamos stock únicamente de las unidades retornadas, no del pedido entero. Si Shopify hace varios refunds parciales sobre el mismo pedido, cada uno genera su propia rectificativa numerada correctamente.

¿Soporta multi-divisa?

Sí. Tomamos el tipo de cambio del propio pedido Shopify (no del día) y lo registramos en Holded en la divisa de venta con su contravalor en EUR. Esto evita discrepancias con el cobro real recibido en tu pasarela.

¿Cómo gestionáis el IVA intracomunitario?

Detectamos el país del comprador y, si tiene NIF intracomunitario, lo validamos en VIES en el momento del pedido. Aplicamos 0% con NIF válido B2B, IOSS para B2C UE bajo 150€, tipos locales en B2C con tu sucursal y 0% en exportaciones extracomunitarias. Quedan registrados los modelos fiscales correspondientes.

¿Y si Shopify o Holded están caídos?

La cola retiene los webhooks y reintenta con backoff exponencial durante 24 h. Si pasado ese tiempo sigue fallando, alerta al equipo por email o Slack para resolución manual. Ningún pedido se pierde nunca: la cola está persistida.

¿Tengo que instalar una app en Shopify?

No. Trabajamos con webhooks nativos y la Admin API estándar. Eso significa que tu tema, tus apps actuales y tu checkout siguen funcionando exactamente igual. Cero footprint en la tienda.

¿Funciona con Shopify Plus, multi-store y Markets?

Sí. Cada store o market puede ir a su propia serie de facturación en Holded, con sus propios mapeos de IVA por país. Es la configuración típica que hacemos para marcas con presencia internacional.

Francodesystems

¿Hablamos de tu integración con Shopify?

Llamada de 30 minutos sin compromiso. Salimos con alcance y precio.