Holded es un programa de gestión en la nube para pymes y autónomos: en una misma cuenta están la facturación, la contabilidad, el inventario, los proyectos, el CRM y el equipo. Nació en Barcelona en 2016 y, desde 2021, forma parte del grupo noruego Visma. En España es uno de los ERP más usados por empresas pequeñas, en parte porque se contrata por meses y no exige instalar nada.
Lo que mucha gente no sabe es que Holded tiene una API: una puerta por la que otro programa puede leer y escribir en la cuenta. Con ella, casi todo lo que hoy alguien copia a mano de un sitio a otro puede hacerse solo. Esta entrada cuenta qué es esa puerta, qué se puede automatizar con ella y qué no.
Qué hay dentro de Holded
Conviene empezar por los módulos, porque la API llega hasta donde llegan ellos:
- Ventas: presupuestos, proformas, pedidos, albaranes, facturas, facturas recurrentes y abonos.
- Compras: pedidos de compra, albaranes de entrada, facturas de proveedor, gastos y rectificativas.
- Contactos: clientes y proveedores, con sus datos fiscales, grupos y etiquetas.
- Inventario: productos, variantes, almacenes, tarifas y movimientos de stock.
- Contabilidad y tesorería: cuentas, asientos, pagos, impuestos y bancos.
- Proyectos, CRM y equipo: tareas, oportunidades, empleados, fichajes y nóminas.
Cada módulo guarda sus datos en Holded. El problema de muchas empresas no es que falte información, sino que para usarla fuera de Holded hay que exportarla a mano, y para meter la que viene de otros programas hay que teclearla.
Qué es la API de Holded
La API es la forma oficial de que un programa externo hable con Holded sin pasar por la pantalla. Se activa generando una clave desde la configuración de la propia cuenta, y esa clave tiene permisos por recurso: un programa puede, por ejemplo, leer facturas de compra y no tocar nada más.
La versión actual es la v2. Con ella, un programa puede:
- Leer cualquier listado o documento: facturas, compras, contactos, productos, stock, pagos, asientos, empleados o fichajes.
- Escribir: crear un pedido de compra con su numeración, dar de alta un contacto con su NIF y su tipo de IVA, subir una factura de proveedor con su PDF, mover stock o registrar un pago.
- Recibir avisos por webhook: Holded llama a una dirección cuando se crea, se cambia, se borra o se aprueba una factura, un pedido, un contacto, un producto, un pago o un movimiento de stock. Un documento en borrador puede cambiar muchas veces; el aviso de «aprobado» marca el momento en que la cifra es definitiva.
Hay una cuota mensual de llamadas que depende del plan y que se puede consultar desde la propia API, y un límite de peticiones por minuto que su documentación fija en cien. Para una pyme es más que de sobra si la integración está bien hecha: se sincroniza solo lo nuevo y se guarda lo que ya se ha leído.
Qué se puede automatizar
Son cuatro familias, y en todas lo que cambia es que nadie teclea.
Un panel con los datos de Holded. Ventas del mes y del año, margen, ticket medio, clientes activos, stock por debajo del mínimo, cobros pendientes. Se lee de Holded por la API y se enseña en una pantalla que dirección abre cuando quiere, en vez de pedir un listado y montarlo en una hoja de cálculo. Lo contamos en cuadro de mando y herramientas que tu ERP no tiene.
Documentos que se crean solos. Un pedido de compra que se genera cuando el stock baja de un umbral, con su numeración y su proveedor, listo para enviar. Una factura de proveedor que llega por correo y entra en Holded con el contacto creado, el NIF en su sitio, el país, el tipo de IVA correcto y el PDF adjunto. Un pedido de la tienda online que aparece en Holded como pedido de venta. Es lo mismo que haría una persona, sin la persona.
Declaraciones que salen del ERP. Las facturas de Holded tienen el valor y el país de cada operación. Si una herramienta les añade lo que falta, como el peso y el código arancelario de cada producto, puede preparar declaraciones como el Intrastat sin que nadie vuelva a buscar cada mes lo que ya buscó el anterior.
Holded conectado con tus otros programas. Una tienda online, un CRM, un programa de logística o una aplicación interna que no está en el catálogo de integraciones de Holded, o cuya integración no hace lo que tu empresa necesita. Con la API se construye la pieza que falta, en las dos direcciones si hace falta.
Y en todas ellas, los webhooks evitan el «cada cinco minutos pregunto si hay algo nuevo»: Holded avisa cuando pasa algo, y la herramienta reacciona.
Lo que la API no hace
Es la parte que menos se cuenta y la que más decide si una integración sale bien. Son cosas que hemos comprobado contra cuentas reales:
- Los listados largos van por páginas, con un cursor que hay que seguir hasta el final. Una integración que no lo sabe lee solo el primer bloque y pierde datos sin ningún error.
- Los importes llegan como texto, no como números, y no todos los módulos usan el mismo separador decimal: los documentos de venta y compra usan punto y los registros de nómina, coma. Si se convierten mal, un importe puede quedar a cero sin avisar.
- Los contactos no se pueden filtrar por fecha de cambio. Para saber cuáles se han modificado hay que recorrerlos todos o suscribirse al aviso de contacto actualizado. Las facturas y las compras sí se filtran por fecha.
- Actualizar un contacto por la v2 reemplaza el contacto entero. Si se envía solo el campo que cambia, se borran los demás.
- Las líneas de una factura de compra no siempre dicen qué producto son. Si la línea no se creó desde el catálogo, llega sin referencia. Un sistema que impute coste por producto necesita una tabla de correspondencia y alguien que resuelva lo que no casa.
- Hay datos que la API no publica: las vacaciones, las ausencias, los equipos y los centros de trabajo del módulo de equipo se ven en la pantalla, pero no hay forma de leerlos desde fuera. Los empleados, los fichajes y las nóminas, sí.
- La v2 redondea el precio y el coste de producto a dos decimales. Si vendes a un precio por unidad por debajo del céntimo, la versión anterior de la API lo conserva y la nueva no.
Ninguna de estas cosas impide automatizar. Lo que hacen es separar una integración hecha deprisa, que parece funcionar y se equivoca en silencio, de una hecha por alguien que ha pasado por ahí.
Lo que hemos hecho nosotros
Para una distribuidora del sector médico que trabaja con Holded construimos un panel de dirección conectado por la API, pedidos de compra que se crean solos en Holded con su numeración y salen al proveedor, y un Intrastat que lee las facturas, los packing lists y los albaranes, y recuerda los códigos y los pesos de cada producto.
Y nosotros mismos usamos Holded: nuestras facturas de compra entran por la API con el contacto, el NIF, el país, el tipo de IVA y el PDF, y por el camino salieron varias de las lecciones de la lista anterior.
Si trabajas con Holded y hay algo que haces a mano, lo contamos con más detalle en desarrollos e integraciones con Holded. Nos cuentas el caso y te decimos qué es posible antes de empezar.
