Ir al contenido

El Lado Oscuro de las Unidades de Medida: Por Qué Definir el SAT Desde el Principio Te Salva de una Estrella de la Muerte Contable

📌 Contexto
23 de julio de 2026 por
BloVox

📌 Contexto

Imaginá esto: estás en la Estrella de la Muerte, a punto de probar el superláser por primera vez. El ingeniero jefe te pregunta: "¿Darth, qué unidad de medida usamos para el rayo? ¿'Pieza', 'Unidad' o 'Equipo'?" Y vos, apurado por destruir el primer planeta, decís: "Poné 'Unidades' nomas, total es lo mismo."

Error. Error gravĂ­simo.

Seis meses después, cuando querés cambiar esa unidad porque resulta que un superláser no es exactamente una "unidad" genérica, descubrís que Odoo te dice: "No se puede cambiar la unidad de medida porque el producto ya tiene asientos contables registrados." Y tenés 10 mil facturas timbradas con el CFDI incorrecto.

Bienvenido al lado oscuro de las unidades de medida en Odoo.

En este artículo vamos a explorar por qué definir correctamente las unidades de medida (UoM) desde el día uno no es un lujo de perfeccionistas, sino una cuestión de supervivencia fiscal. Y cómo un caso real con una distribuidora médica nos enseña que mejor hacerlo bien la primera vez que tener que llamar a los Jedi de Vauxoo para que te rescaten.

¿Para quién es este artículo? Funcional / intermedio. Consultores, implementadores, administradores de Odoo y cualquier alma que haya tenido que lidiar con un CFDI rechazado por SAT.


🎯 El Desafío

Historia de usuario:

Como administrador de Odoo en una empresa de distribución, necesito que la unidad de medida de cada producto esté correctamente configurada según el catálogo del SAT desde la primera vez, para no tener que rehacer productos, migrar lotes y explicarle al SAT por qué mi factura dice "Unidades" cuando debería decir "Equipo".

El flujo del desastre (lo que NADIE deberĂ­a hacer):

  1. Llega el momento de la implementación. Están apurados. Configuran todo con "Unidades" (SAT H87) porque "después lo ajustamos".
  2. Cargan 500 productos: mangueras, bombas de infusiĂłn, equipos de ultrasonido, medios de contraste. Todo con la misma UoM.
  3. Pasan los meses. Se emiten facturas, se timbran CFDI, se registran asientos contables, se mueve el inventario. Todo feliz.
  4. Un día, un cliente grande les exige facturar con la unidad correcta. Resulta que los equipos médicos deberían ser "Equipo" (SAT 11), no "Unidades".
  5. Van a cambiar la UoM en Odoo y... PUM. Mensaje de error: "No se puede cambiar la unidad de medida porque el producto ya tiene movimientos contables y de inventario."
  6. Pánico. Llamadas. Café frío. El SAT no acepta devoluciones de facturas con unidad incorrecta por una regla que cambió hace tres actualizaciones.

El impacto real:

ProblemaConsecuencia
Facturas timbradas con UoM incorrectaRiesgo de rechazo en contabilidad electrĂłnica o auditorĂ­a SAT
CFDI sin clave SAT correctaEl cliente no puede deducir el gasto → cliente enojado → revisión
Productos que no se pueden modificarHoras de trabajo para recrear productos, migrar lotes, reconfigurar

Soluciones que NO funcionan (o duelen):

  • "Lo dejamos asĂ­ nomas": Funciona hasta que el SAT audita o un cliente exige la clave correcta. Entonces duele el doble.
  • "Cambiamos la UoM en la DB directamente": TĂ©cnicamente posible, pero las facturas ya emitidas quedaron con la UoM vieja. Y si corrĂ©s un SQL sin pensar en los uom_id de lĂ­neas de factura y stock.move, te vas a enterar por quĂ© los Sith tambiĂ©n lloran.
  • "Recreamos todo desde cero": SĂ­, funciona, pero perdĂ©s el historial, los lotes vinculados, las relaciones con Ăłrdenes de venta cerradas, y el equipo de contabilidad te va a mirar con la misma cara que Leia cuando Han la congela en carbonita.

🔍 Análisis Técnico

La Fuerza del Catálogo SAT

El SAT mexicano (Servicio de Administración Tributaria) tiene un catálogo llamado c_ClaveUnidad (Anexo 20 del CFDI 4.0). Son ~200+ claves que definen cómo se mide lo que estás vendiendo. Y no es optativo: si timbras un CFDI, la clave de unidad es obligatoria.

Las claves que más duelen cuando no se definen bien:

Clave SATNombre¿Para qué?Ejemplo
H87PiezaĂŤtems individuales, partes, componentes, consumiblesManguera para paciente, sensor, filtro, medio de contraste
XUNUnidadMedida genérica (comodín, pero no recomendado)Cualquier cosa que no sabés cómo clasificar
11EquipoUnidad funcional completa, maquinaria, equipamientoEquipo de rayos X, ultrasonido, monitor de signos vitales
EAElementoSimilar a pieza pero más específicoComponente electrónico individual
C62CientoPara lotes de 100 unidades"100 piezas" como bloque

La Trampa Jedi: "Total es lo mismo"

Uno de los errores más comunes que vemos es pensar que H87 (Pieza) y 11 (Equipo) son "más o menos lo mismo". No lo son.

  • VendĂ©s una manguera → H87 (Pieza). Es una pieza individual.
  • VendĂ©s un equipo de ultrasonido completo → 11 (Equipo). Es una unidad funcional que incluye mĂşltiples componentes.

Son categorías SAT distintas. Si facturás un equipo médico como "Unidades" (XUN o H87), el SAT puede:

  • Rechazar la factura en revisiones de contabilidad electrĂłnica
  • No permitir al cliente deducir el gasto (porque "Unidad" no es la clave correcta para equipo)
  • Generar una discrepancia en tus balances cuando cruzan informaciĂłn

¿Y la diferencia entre H87 y XUN? En la práctica, H87 (Pieza) es más específico. Las empresas que usan XUN (Unidad) como comodín suelen tener problemas después porque el SAT exige especificidad. La frase "que después lo ajustamos" es la frase más peligrosa del universo, justo después de "esta Estrella de la Muerte es totalmente segura, no tiene ningún punto débil".

Cómo viene Odoo estándar

Odoo trae el catálogo SAT de unidades precargado (en el módulo l10n_mx), pero tiene varias UoM default:

UoM OdooTipoClave SAT (default)
Unit(s)ReferenciaH87
Dozen(s)Mayor—
Hour(s)Tiempo—
Kilogram(s)PesoKGM
Meter(s)LongitudMTR

El problema no es que Odoo no tenga el catálogo — el problema es que durante la implementación, nadie se toma el tiempo de definir qué UoM le corresponde a cada categoría de producto.

MĂłdulos involucrados:

MĂłduloPropĂłsito
l10n_mxLocalización mexicana: catálogos SAT, UoM precargadas
l10n_mx_ediCFDI 4.0: timbrado fiscal con los catálogos oficiales
productGestiĂłn de productos: su UoM define cĂłmo se venden y facturan
accountContabilidad: los asientos contables se graban con la UoM del producto en ese momento

ConfiguraciĂłn crĂ­tica (y la que NADIE revisa):

  • uom_id en product.template: la UoM de venta. Esta es la que se usa en facturas (y por ende en CFDI).
  • uom_po_id: la UoM de compra. Puede ser diferente (ej: comprás por caja, vendĂ©s por pieza). En ese caso, el tipo de UoM debe tener factor de conversiĂłn.
  • CategorĂ­a de UoM: agrupa UoMs que se pueden convertir entre sĂ­. No podĂ©s tener "Pieza" y "Kilogramo" en la misma categorĂ­a (son magnitudes diferentes).

đź’ˇ La SoluciĂłn

La Regla de Oro (que todos ignoran hasta que arde)

Definí las UoM por CATEGORÍA de producto, no por producto individual, y hacelo en la implementación, no después.

Esto parece obvio, pero en la práctica el 90% de las implementaciones que vemos con problemas de UoM tienen la misma historia: "Lo configuramos todo con Unidades porque estábamos apurados, y ahora no podemos cambiar."

Paso a paso desde la UI (lo que deberĂ­as hacer el dĂ­a 1):

Fase 1 — Planificación (antes de cargar un solo producto):

  1. Ir a Contabilidad → Configuración → Localización → Unidades de Medida SAT
  2. Revisar el catálogo completo de claves SAT disponibles
  3. Hacer una tabla con los tipos de productos que comercializa la empresa:
TIPO DE PRODUCTO   → CLAVE SAT   → UoM Odoo
────────────────────────────────────────────
Consumibles        → H87 (Pieza) → Pieza
Equipos            → 11 (Equipo) → Equipo (crear si no existe)
Servicios          → H87 (Pieza) → Service Unit (o crear)
Insumos x kg       → KGM (Kilogramo) → Kilogramo
Insumos x litro    → LTR (Litro) → Litro

Fase 2 — Configuración técnica:

  1. Verificar que las UoM necesarias existan en Odoo. Si no existe "Equipo" con SAT 11:
  • Ir a Inventario → ConfiguraciĂłn → Unidades de Medida
  • Crear nueva UoM con nombre "Equipo", factor 1.0
  • En el campo fiscal (l10n_mx), asignar clave SAT 11
  • Asignarla a la categorĂ­a correspondiente (o crear una nueva categorĂ­a "Equipos")
  1. Crear las categorĂ­as de producto alineadas a los tipos definidos:
CATEGORÍA DE PRODUCTO   → UoM Default
──────────────────────────────────────
Consumibles Médicos     → Pieza (H87)
Equipos Médicos         → Equipo (11)
Servicios de Instalación → Unidad de Servicio
  1. En cada categoría, setear la UoM por defecto. Así los productos nuevos heredan la UoM correcta automáticamente.

Fase 3 — Carga de productos:

  1. Al crear cada producto, la UoM viene precargada de la categorĂ­a
  2. Verificar que la UoM sea la correcta antes de guardar (especialmente para productos que se salen de la norma)
  3. No escatimar en este paso. Cada producto mal clasificado es una bomba de tiempo fiscal.

VerificaciĂłn funcional:

  • [ ] ÂżCada categorĂ­a de producto tiene su UoM default correcta?
  • [ ] ÂżCada UoM tiene su clave SAT asignada?
  • [ ] ÂżHay productos con UoM "XUN" (Unidad genĂ©rica) que deberĂ­an tener una clave más especĂ­fica?
  • [ ] ÂżLas UoM de compra y venta coinciden? Si no, Âżhay factor de conversiĂłn configurado?

ÂżY si ya estamos en el pantano? (cuando ya es tarde pero hay que arreglarlo)

Si llegaste a este artículo porque ya tenés el problema, no todo está perdido. Acá van las alternativas ordenadas de mejor a peor:

AlternativaCuándo usarlaRiesgo
1. Cambiar UoM forzado vía técnicoProductos sin movimientos contables recientes, o con cero existenciasBajo si se hace con cuidado y se actualizan las líneas existentes
2. Crear UoM con conversiónProductos donde la nueva unidad es convertible desde la anterior (ej: "Pieza" ↔ "Unidad" están en la misma categoría)Medio — requiere recalcular existencias
3. Productos nuevos + desactivar originalesProductos con historial contable, lotes, series, caducidadesBajo (es la más segura) pero más trabajo
4. SQL directo a la DBSolo como última opción y conociendo todas las tablas que tocar⚠️ Alto — puede romper facturas, movimientos, reconciliaciones

La opciĂłn Jedi (recomendada para casos con historial):

  1. Identificar productos problemáticos (los que tienen UoM incorrecta)
  2. Agruparlos: sin movimientos, con movimientos pero sin existencias, con existencias
  3. Sin movimientos → cambio directo vía UI o script
  4. Con movimientos pero sin existencias → crear duplicado con UoM correcta, desactivar original
  5. Con existencias y lotes → lo más complejo: ajuste de inventario + migración de lotes al nuevo producto
  6. Validar con un CFDI de prueba antes de hacer el cambio masivo

âś… Resultados y Beneficios

Lo que pasa cuando lo hacés bien desde el principio

Mejoras funcionales:

  • No hay más facturas rechazadas por unidad de medida incorrecta
  • El catálogo de productos está alineado con las exigencias fiscales del SAT
  • Los clientes pueden deducir correctamente sus compras
  • Contabilidad duerme tranquila (y eso no tiene precio)

Impacto medible (de casos reales que hemos visto):

MétricaAntes de definir UoM correctasDespués
Facturas timbradas con error de unidad3-5%0%
Tiempo de revisión de CFDI en contabilidad2h por semana0 (automático)
Clientes reportando problemas fiscales1-2 por mes0
Trabajo de migraciĂłn cuando se necesita cambiar UoM40-80h por proyecto0 (no hace falta)

Beneficios por rol:

RolQué gana
Administración / ImplementadorConfiguras una vez, olvidás para siempre. No hay llamadas de pánico 6 meses después.
ContabilidadCFDI siempre correctos. Auditoría SAT sin sobresaltos. Nadie te pregunta "¿por qué esta factura tiene 'Unidad' si es un equipo?"
VentasFacturás con la unidad correcta desde el día 1. Los clientes no te devuelven facturas por errores de clave SAT.
Desarrolladores / ConsultoresNo tenés que hacer migraciones de emergencia ni correr scripts a las 2 AM un sábado.
El SATNo tiene opiniĂłn. Pero si pudiera, te agradecerĂ­a.

Lecciones aprendidas:

  1. La UoM no es un detalle cosmético. Es un dato fiscal. Tratarlo como "lo ponemos después" es como construir la Estrella de la Muerte y decir "el reactor lo conectamos después".
  1. Las categorías de producto son tu mejor aliado. Configurando la UoM por categoría, los productos nuevos heredan la unidad correcta automáticamente. Es el equivalente a poner un droide de protocolo que se encargue de la documentación mientras vos hacés cosas importantes.
  1. El SAT no perdona. Con la contabilidad electrónica 4.0, el SAT cruza datos automáticamente. Una clave de unidad incorrecta puede generar una discrepancia que te cueste horas de aclaración. Horas que podrías haber usado para, no sé, mirar una serie.
  1. "Después lo ajustamos" es la frase más cara del ERP. Siempre. En todos los casos. Sin excepción.

📚 Para Profundizar

  • Catálogo oficial SAT c_ClaveUnidad: SAT - Catálogos CFDI 4.0 — La fuente de verdad de todas las claves de unidad
  • DocumentaciĂłn Odoo - LocalizaciĂłn Mexicana: l10n_mx y l10n_mx_edi — CĂłmo Odoo maneja los catálogos SAT y el timbrado CFDI
  • Anexo 20 CFDI 4.0: SAT - Anexo 20 — El documento completo con todas las reglas de facturaciĂłn electrĂłnica
  • Odoo Forum - Unidades de Medida: Una bĂşsqueda rápida te muestra que no sos el Ăşnico. Cientos de consultas sobre "how to change uom on products with accounting entries"

đź’¬ ÂżTu experiencia es diferente?

¿Te pasó que tuviste que migrar productos por una UoM mal definida? ¿Encontraste un atajo que no mencionamos? ¿O simplemente querés compartir tu historia de terror con las unidades del SAT? Te leemos. Porque si algo tiene la comunidad Odoo, es que siempre hay alguien que ya pasó por lo mismo y tiene una historia peor.

Que la Fuerza (y las claves SAT) te acompañen. 🚀

📬 ¿No querés perderte ningún artículo nuevo?

Dejanos tu correo y te avisamos cuando publiquemos algo.

¡Gracias por suscribirte!