Coste de ventas en WooCommerce: cómo activar el precio de coste e introducir tus costes
WooCommerce guarda el coste de los productos vendidos en cada pedido desde la versión 10.3. Viene desactivado, no se rellena nada hacia atrás y hay tres cosas en él que sorprenden de verdad. Aquí lo tienes todo en una página.
Actualizado 2026-10-23
Qué es el campo y por qué llegó tan tarde
WooCommerce siempre ha sabido lo que vendiste. Hasta finales de 2025 no tenía ni idea de lo que esos productos te costaron, y por eso «cuánto he ganado de verdad» era una pregunta que se respondía en una hoja de cálculo o pagando una suscripción mensual.
Con WooCommerce 10.3, publicado el 22 de octubre de 2025 después de dos ciclos beta, el coste de los productos vendidos pasó a formar parte del núcleo. Con él pasan dos cosas, y solo la segunda es interesante:
- en el producto puedes guardar un coste: una única cifra neta por unidad;
- en cada línea del pedido, WooCommerce guarda el coste tal como era en el momento de la venta.
La segunda es la parte que ningún plugin podía añadir bien a posteriori. Un coste guardado en el pedido es un hecho histórico: un pedido de marzo sigue diciendo lo que costaba la mercancía en marzo, aunque tu proveedor haya subido los precios dos veces. Un coste consultado en la ficha actual del producto es solo la suposición de hoy aplicada a las ventas del año pasado.
La función es opcional y no hace nada hasta que la activas.
Paso uno: activa la función
WooCommerce → Ajustes → Avanzado → Características → Precio de coste de los productos vendidos.
Es una casilla, no cambia ningún dato por sí sola y es un ajuste de WooCommerce, no de un plugin de informes. Si la opción no está en esa lista, tu tienda tiene una versión anterior a la 10.3: mira WooCommerce → Estado y actualiza primero.
Dejarla desactivada tiene un precio que se paga en silencio: mientras la función está desactivada, los pedidos nuevos no guardan ningún coste, y ese hueco no se puede rellenar después. Seis meses de pedidos con el interruptor apagado son seis meses que ningún informe de beneficios podrá explicar nunca.
Paso dos: introduce el coste en un producto
El campo está en la pestaña General del editor de productos, justo debajo de los campos de precio, y se llama Precio de coste. Hay tres detalles que importan:
- es neto, como los demás campos de precio: sin impuestos;
- es por unidad, no por línea del pedido;
- vacío no es cero. Un campo vacío significa «no lo sabemos», y un buen informe lo tratará así en lugar de suponer en silencio que la mercancía era gratis.
Introduce el coste que pagas de verdad por la mercancía. Si incluyes o no el transporte de entrada, los aranceles o el embalaje lo decides tú, pero toma la misma decisión para todos los productos: un margen calculado con dos definiciones distintas de coste no es comparable con nada.
Paso tres: deja que lleguen los pedidos
Desde el momento en que el coste está en el producto, cada pedido nuevo lo guarda. Los pedidos que ya están en la base de datos conservan lo que guardaron en su momento, que en los pedidos antiguos no es nada.
No hay relleno hacia atrás, y es a propósito, no un olvido. También significa que la pregunta útil después de configurarlo no es «por qué mi historial está vacío», sino «de qué periodo tengo datos completos».
Introducir costes sin abrir 500 productos
El escritorio del núcleo te da un campo de coste por producto y ningún editor masivo. Hay dos cosas que lo hacen manejable.
La primera: no necesitas todos los productos. Ordena tu catálogo por ingresos y empieza por arriba. En la mayoría de las tiendas, cincuenta productos traen la gran mayoría de la facturación, así que una tarde de tecleo lleva tu cobertura del 0 % a alrededor del 80 %, y la cobertura es lo que hace que merezca la pena leer el resto del informe.
La segunda: el coste se puede escribir con un script. Desde WP-CLI, una llamada por producto:
wp eval '$p = wc_get_product( 123 ); $p->set_cogs_value( 41.50 ); $p->save();'
Para hacerlo desde una hoja de cálculo, exporta id,cost como CSV y recórrelo en un pequeño script
que llame a esos mismos dos métodos. La API REST lleva el mismo valor como objeto cost_of_goods_sold
en products y variations, si prefieres trabajar por HTTP.
Todo el camino (plantilla de la hoja, un script listo, un modo de prueba y una lista de lo que no arregla) está en importación masiva de costes.
Todo eso escribe en tu tienda, así que pruébalo antes en un sitio de pruebas y haz una copia de seguridad. Es tu script y son tus datos: no hace falta ningún plugin de informes, y Merchgain no puede hacerlo por ti, a propósito.
Productos variables: heredar, sustituir o sumar
Una variación hereda el coste de su padre salvo que tenga uno propio. Si lo tiene, un interruptor más decide qué significa: el coste de la variación sustituye al del padre o se suma a él.
El modo de suma es el que hay que recordar, porque es útil de verdad y fácil de pasar por alto. Una camiseta con un coste de 24 y una variación marcada para sumar 3 cuesta 27: lo correcto cuando la variación es un recargo, como un bordado o una impresión extragrande, y no una mercancía distinta.
Viene con una trampa: la columna de búsqueda de WooCommerce guarda el valor introducido, no el efectivo, así que una variación que simplemente hereda el coste del padre parece una variación sin ningún coste. Cualquier lista de «productos sin coste» que no tenga en cuenta al padre estará llena de falsas alarmas. Los detalles, en costes en productos variables.
Tres trampas que la documentación no menciona
Las tres se leyeron en el código fuente de WooCommerce, y las tres cambian cifras en una pantalla. Conviene conocerlas antes de montar una hoja de cálculo sobre estos datos. La versión completa, con la única línea de código de la que salen las tres, está en tres trampas en los datos de coste de WooCommerce.
Un coste cero se guarda como si no hubiera coste
Cuando el coste de una línea del pedido se guarda como cero, el núcleo borra el valor en lugar de guardar un cero. Así que una muestra gratis y un producto al que nadie le puso coste son la misma ausencia en la base de datos, y ningún plugin puede distinguirlos. Los regalos siempre aparecerán en una lista de costes que faltan. La explicación completa.
Un reembolso reescribe el coste guardado de todo el pedido
Al crear un reembolso, WooCommerce recalcula el coste de cada línea del pedido original con el coste de cada producto tal como está hoy. Si tu precio de compra ha cambiado entre medias, el historial guardado cambia con él, y si se vació el coste, el recálculo da cero, lo que borra el valor para siempre. Por qué cambia el beneficio histórico.
Desactivar la función puede hacer perder datos en el siguiente guardado
Comprobado en WooCommerce 10.3.0: desactivar la función no borra nada por sí solo. El riesgo es el siguiente guardado: con la función desactivada, el coste se calcula como cero, y guardar un cero borra el valor, así que editar un pedido antiguo o hacer un reembolso sobre él puede borrar su historial de costes. Qué hace desactivarla.
Qué puede hacer un informe con él
El núcleo guarda el coste y ahí se queda: WooCommerce 10.3 no trajo ningún informe de COGS, y el anuncio de la versión invitaba expresamente a los desarrolladores a crearlos. Análisis de WooCommerce tampoco lo lee (por qué el coste no está en Análisis). Fuera de la tienda, los descuentos automáticos de Google para anuncios de Shopping quieren ese mismo coste en tu feed de productos (qué necesita esa configuración). Esto es lo que Merchgain hace con los mismos datos:
Beneficio bruto, ingresos, coste de los productos y margen del periodo (las mismas cifras por producto y por categoría más abajo en la pantalla) y, debajo, la línea que decide si algo de ello sirve:
Se conoce el coste del 75 % de los ingresos. El beneficio y el margen de arriba se calculan solo sobre esa parte; hay 1.023.995,02 $ de ingresos sin coste guardado.
Esa frase es la diferencia entre un informe con el que puedes actuar y un informe de aspecto preciso que se equivoca en silencio en una cuarta parte. Puedes ver la pantalla completa con datos de demostración antes de instalar nada.
Cuando la función sigue desactivada, un informe no tiene nada que mostrar, y decirlo es mejor que cuatro ceros:
La lista corta
- WooCommerce 10.3 o posterior: mira WooCommerce → Estado.
- Activa Ajustes → Avanzado → Características → Precio de coste de los productos vendidos.
- Decide una vez qué incluye para ti el «coste» y apúntalo en algún sitio.
- Introduce los costes de arriba abajo por ingresos, no por orden alfabético.
- En las variaciones, elige un criterio por producto: heredar, sustituir o sumar.
- No esperes que el historial se rellene. Juzga el informe por el periodo posterior a introducir los costes.
- Exporta un CSV al final de cada mes. Los reembolsos y los cambios de coste pueden reescribir los costes guardados; una exportación mensual es el único registro que nada puede cambiar después.
Si algo de aquí no coincide con lo que ves en tu propia tienda, merece un correo: leemos todos los mensajes, y las respuestas de esta web se corrigen cuando resultan estar equivocadas.