Cómo migrar de Excel a Odoo sin perder datos: guía práctica
Migrar de Excel a Odoo sin pérdidas requiere seguir este orden: primero los datos maestros (plan de cuentas, impuestos y condiciones de pago), luego los contactos, después los productos y, por último, las facturas abiertas. Cada entidad se importa como un archivo .xlsx separado. Saltarse este orden provoca errores de referencia que obligan a reimportar todo desde el principio.
Por qué el orden de importación determina el éxito de tu migración a Odoo
Odoo es una base de datos relacional. Cada registro apunta a otros: una factura referencia a un cliente, un cliente referencia a un tipo de IVA, un albarán referencia a un producto. Si intentas importar facturas antes de que existan los clientes en la base de datos, Odoo devuelve un error de referencia y descarta toda la importación en bloque.
Es el error más frecuente que encontramos en IBERSYA Consultoría S.L. cuando acompañamos a PYMEs en la transición de hojas de cálculo a su implantación de Odoo: el equipo importa lo que parece más urgente (las facturas del ejercicio en curso) y el sistema no puede relacionarlas con ningún cliente porque los contactos todavía no existen.
Según la documentación oficial de Odoo 18, el sistema acepta archivos .xlsx y .csv para importar cualquier objeto de negocio. El reto no es técnico: es el orden y la calidad de los datos de origen.
El 54,6 % de las empresas españolas ya utilizan algún sistema ERP, según el ONTSI (2025), lo que significa que casi la mitad todavía gestionan sus datos en hojas de cálculo. Para esas empresas, la migración desde Excel es el primer obstáculo práctico, y los proyectos que la afrontan sin un plan previo se retrasan semanas. Puedes ver cuánto cuesta en conjunto un proyecto de este tipo en nuestra guía sobre cuánto cuesta implantar Odoo en una PYME.
Cómo preparar tus Excel antes de importar a Odoo
El tiempo invertido en limpiar los datos antes de la importación es el que más impacto tiene en el resultado final. Una hora de limpieza en Excel evita cuatro horas de corrección de errores en Odoo.
Normalizar el formato de los campos críticos
NIF/CIF: Odoo valida los NIF/CIF españoles cuando el módulo de localización l10n_es está activo. El formato correcto es sin guiones ni espacios: B47123456 para empresas, 12345678Z para personas físicas. Un NIF mal formateado crea un contacto que no pasa la validación fiscal posterior y bloquea la emisión de facturas.
Fechas: Usa el formato ISO AAAA-MM-DD (2026-01-15, no 15/01/26 ni 15-ene-2026). Odoo lo requiere en importaciones CSV. En archivos .xlsx, usa celdas de tipo Fecha y Odoo las interpreta directamente. Un formato incorrecto importa fechas como texto y deja los asientos sin fecha real.
Importes: Sin símbolo de moneda, sin puntos de miles, con separador decimal consistente con la configuración de tu Odoo. Si tu Odoo usa coma como decimal, escribe 1234,56. Si usa punto, 1234.56. Una inconsistencia en este campo importa todos los importes como cero sin aviso.
Texto: Normaliza mayúsculas en nombres de empresa. Odoo usa el nombre como clave de búsqueda: IBERSYA S.L. y Ibersya sl generan dos contactos distintos si no son cadenas de texto idénticas.
Eliminar duplicados antes de importar
Los Excel de PYMEs acumulan duplicados con el tiempo: el mismo cliente dado de alta dos veces con grafías distintas, el mismo producto con referencias ligeramente diferentes. Según el Gartner Data Quality Report (2024), entre el 15 y el 25 % de los registros en bases de datos corporativas contienen algún tipo de duplicado o inconsistencia.
En Odoo, los duplicados importados no se detectan automáticamente a menos que el campo ID externo esté configurado. Antes de importar, usa Datos → Quitar duplicados de Excel aplicado a la columna NIF/CIF para contactos, y a la columna de referencia para productos. Los registros con NIF vacío deben completarse o eliminarse.
Organizar un archivo separado por entidad
Odoo importa una entidad por archivo. No es posible importar clientes, productos y facturas en un mismo archivo. Necesitas archivos independientes en este orden estricto:
- Condiciones de pago, categorías y tipos de IVA — si no están ya configurados
- Contactos (clientes y proveedores en el mismo archivo)
- Productos y servicios
- Stock inicial (si hay inventario físico)
- Facturas abiertas (saldo pendiente de cobro o pago)
Columnas que Odoo espera para importar contactos
Accede a Contactos → ⚙ → Importar registros en Odoo 18. El archivo debe contener como mínimo:
| Columna en Excel | Campo en Odoo | Notas |
|---|---|---|
ID externo | External ID | Ej: contact_B47123456. Evita duplicados en reimportaciones. |
Nombre | Nombre | Razón social completa |
NIF | NIF | Sin guiones. Obligatorio para facturar. |
Tipo empresa | Empresa | True para empresas, False para personas físicas |
Email | Obligatorio para envíos automáticos | |
Teléfono | Teléfono | Formato: +34600000000 |
Calle | Calle | Dirección fiscal |
Código postal | Código postal | 5 dígitos |
Ciudad | Ciudad | — |
País | País | España o código ISO ES |
Es cliente | Es cliente | True / False |
Es proveedor | Es proveedor | True / False |
Condición de pago | Condición de pago | Nombre exacto tal como aparece en Odoo |
IBAN | IBAN | Para domiciliaciones bancarias |
El ID externo es el campo más importante y el más ignorado en primeras migraciones. Asigna a cada contacto un identificador único (por ejemplo, el NIF con un prefijo: contact_B47123456). Si en el futuro necesitas corregir datos y reimportar el archivo, Odoo actualizará el registro existente en lugar de crear uno nuevo. Sin ID externo, cada reimportación multiplica los duplicados.
¿Tienes más de 300 contactos con datos inconsistentes? En IBERSYA realizamos la migración de datos a Odoo incluyendo auditoría, limpieza, mapeado de columnas y verificación de saldos. Cuéntanos el estado de tus datos.
Columnas que Odoo espera para importar productos
Para productos y servicios, accede a Inventario → Productos → ⚙ → Importar registros (o desde Ventas → Productos):
| Columna en Excel | Campo en Odoo | Notas |
|---|---|---|
ID externo | External ID | Ej: product_REF001 |
Referencia interna | Referencia interna | SKU o código de catálogo |
Nombre | Nombre | — |
Tipo de producto | Tipo | service / consu / product |
Precio de venta | Precio | Sin IVA |
Coste | Coste | Sin IVA. Solo para productos físicos. |
IVA cliente | IVA (ventas) | Nombre exacto en Odoo: IVA 21% |
IVA proveedor | IVA (compras) | Nombre exacto: IVA 21% (Compras) |
Unidad de medida | UdM | Unidades, horas, kg… Debe existir en Odoo |
Categoría | Categoría interna | Opcional pero útil para contabilidad analítica |
El nombre del impuesto debe coincidir exactamente con el que aparece en Contabilidad → Configuración → Impuestos. Si tu Odoo tiene 21% IVA y el Excel pone IVA 21%, el producto se importa sin impuesto asignado y todas las facturas posteriores quedarán sin IVA.
Cómo importar las facturas abiertas: el saldo inicial
Las facturas abiertas son las que tienen saldo pendiente de cobro o pago en la fecha de inicio de uso de Odoo. Son el dato más crítico para que el libro mayor arranque cuadrado y el cierre contable del primer ejercicio sea correcto.
Recomendación: importa las facturas en estado borrador primero, verifica que los totales coinciden con el balance de situación de Excel, y valídalas en bloque solo cuando los importes cuadren.
| Columna en Excel | Campo en Odoo | Notas |
|---|---|---|
ID externo | External ID | Ej: inv_FAC2024001 |
Tipo | Tipo | out_invoice (venta) / in_invoice (compra) |
Cliente/Proveedor | Contacto | Nombre idéntico al importado, o su ID externo |
Fecha de factura | Fecha | AAAA-MM-DD |
Fecha de vencimiento | Vencimiento | AAAA-MM-DD |
Nº factura original | Referencia | Conserva la numeración original |
Descripción línea | Descripción | — |
Cantidad | Cantidad | — |
Precio unitario | Precio unitario | Sin IVA |
IVA | Impuesto | Nombre exacto del impuesto en Odoo |
Cuenta contable | Cuenta | Código PGC: 430, 400, 700… |
Odoo procesa importaciones de facturas en lotes de 200-300 filas para archivos .xlsx. Con más registros, divide el archivo en partes e impórtalas secuencialmente. Los archivos muy grandes pueden generar errores de tiempo de espera agotado sin indicar qué filas fallaron. Una vez importadas y validadas las facturas, la configuración de la conciliación bancaria automática ahorra tiempo desde el primer día: el proceso completo está en nuestra guía de conciliación bancaria automática en Odoo.
Errores frecuentes al migrar de Excel a Odoo
Importar sin el módulo de localización española activo. El módulo l10n_es añade el plan de cuentas PGC, los tipos de IVA españoles y los campos NIF/CIF. Si se importan contactos antes de activarlo, los datos de NIF y los impuestos no se mapean correctamente y hay que reimportar todo. Verificar en Ajustes → Aplicaciones que Contabilidad - España está instalado antes de empezar.
Nombres de impuestos inconsistentes. IVA 21%, 21% IVA e IVA (21%) son tres strings distintos para Odoo. El sistema no los reconoce como equivalentes. Antes de preparar los archivos de importación, consultar en Contabilidad → Configuración → Impuestos los nombres exactos que existen en la instalación.
No asignar ID externo desde el primer día. En la primera importación parece innecesario porque “solo se hace una vez”. El problema llega cuando hay que corregir un dato en 400 clientes y reimportar: Odoo crea 400 duplicados en lugar de actualizar los existentes. Añadir el ID externo desde el inicio no tiene coste; corregir los duplicados después sí lo tiene.
Importar el histórico completo de facturas cobradas. Importar cuatro años de facturas ya cobradas no aporta valor operativo y ralentiza consultas y reportes. El histórico puede mantenerse como archivo Excel externo. Solo importar las facturas con saldo pendiente en la fecha de inicio.
Fechas en formato local en archivos CSV. Si exportas el Excel a CSV y las fechas están en formato 15/01/2026 (DD/MM/AAAA), Odoo las interpreta como texto y rechaza los registros sin avisar del motivo. Convertir siempre a AAAA-MM-DD antes de guardar como CSV.
No hacer una importación de prueba en un entorno de test. Odoo permite duplicar la base de datos desde los ajustes del servidor. Antes de importar en producción, hacer una prueba completa en un entorno de test con un subconjunto representativo de datos (50 clientes, 20 productos, 10 facturas) detecta el 90 % de los problemas de mapeado sin comprometer los datos reales.
Preguntas frecuentes sobre migrar de Excel a Odoo
¿Puedo importar facturas históricas de Excel a Odoo?
Sí, pero con condiciones. Odoo permite importar facturas en estado borrador o validado desde archivos .xlsx, pero los clientes y las condiciones de pago referenciados deben existir previamente en la base de datos. El formato de fecha debe ser AAAA-MM-DD y los importes sin símbolo de moneda. Para el histórico de más de dos años, recomendamos importar solo los saldos abiertos (facturas pendientes de cobro) y archivar el histórico completo en Excel.
¿Cómo se importan los saldos iniciales de clientes en Odoo?
Los saldos iniciales de clientes se registran en Odoo como facturas abiertas en la fecha de inicio de uso del sistema. Cada fila del Excel debe contener: nombre del cliente (idéntico al contacto ya importado), fecha de factura, fecha de vencimiento, importe sin IVA, tipo de IVA y número de factura original. Importarlas en estado borrador y validarlas en bloque tras verificar que los totales cuadran con el balance de situación.
¿Qué hago si aparecen registros duplicados tras importar en Odoo?
Los duplicados en la importación de Odoo se deben en casi todos los casos a no haber usado el campo ‘ID externo’ (External ID). Si ya tienes duplicados, filtra por nombre o NIF desde la vista lista del módulo correspondiente, selecciona los duplicados y usa la opción ‘Fusionar’ (disponible en Contactos) o elimina los incorrectos manualmente. Para evitarlos en futuras importaciones, añade siempre una columna ‘ID externo’ con un identificador único en tu Excel.
¿Es mejor importar todos los datos históricos o empezar desde cero en Odoo?
Para la mayoría de PYMEs, la opción más eficiente es importar solo los datos operativos activos: contactos vigentes, productos activos, facturas pendientes de cobro o pago, y stock actual. El histórico completo de los últimos cinco años puede mantenerse en Excel como archivo de consulta. Importar histórico completo multiplica el tiempo de migración sin aportar valor operativo.
¿Cuánto tiempo tarda migrar de Excel a Odoo en una PYME de 30 empleados?
Con los datos limpios y bien estructurados, la importación técnica de clientes, productos y facturas abiertas para una PYME de 30 empleados lleva entre 1 y 2 jornadas de trabajo. El cuello de botella real es la limpieza de datos previa: normalizar NIF, eliminar duplicados y homogenizar formatos puede llevar entre 3 y 10 días según el estado de los Excel de origen.
En IBERSYA acompañamos a PYMEs de 15 a 80 empleados en el proceso completo de migración desde Excel a Odoo: auditoría del estado de los datos, limpieza, importación por fases y verificación de saldos. Si quieres dar el salto sin detener la operación, cuéntanos el tamaño y el estado de tus datos.