Suscripciones en WooCommerce y VeriFactu: cómo facturar renovaciones sin duplicados
Una suscripción no genera únicamente un cobro periódico. WooCommerce crea pedidos de renovación, programa acciones, ejecuta pasarelas, gestiona reintentos y permite pagos manuales, renovaciones anticipadas, cambios de plan y reembolsos. La integración fiscal debe reconocer cada escenario antes de expedir una factura o generar un registro de facturación.
Una suscripción, un pedido de renovación y una factura son objetos distintos
WooCommerce Subscriptions mantiene una suscripción con su calendario, estado, productos y método de pago. Cuando llega una fecha de cobro crea un pedido de renovación relacionado. Ese pedido registra el intento económico, pero todavía puede quedar pendiente, fallar, cobrarse automáticamente, pagarse manualmente o tener un importe cero.
El sistema de facturación debe decidir qué evento de WooCommerce representa realmente la expedición fiscal en la operativa del negocio. No debe emitir únicamente porque se haya creado un pedido de renovación.
No confundas «pedido creado» con «factura expedida». El momento correcto depende del tipo de operación, del criterio fiscal aplicable y de cómo esté diseñado el servicio recurrente. Webyseo puede configurar el flujo técnico, pero el criterio tributario debe validarlo el cliente con su asesor.
El disparador de la factura no puede elegirse copiando un estado genérico
En algunas tiendas el evento operativo puede estar vinculado al pago confirmado; en otras, la obligación de facturar puede derivar de la prestación del servicio o de un pago anticipado. Por eso no es correcto establecer como regla universal que toda renovación se factura al crear el pedido, ni que siempre deba esperarse al estado Completado.
Servicio y devengo
Hay que identificar qué se vende, cuándo se presta y si el cobro es anticipado o posterior.
Pasarela y confirmación
Stripe, PayPal, Redsys u otras pasarelas pueden confirmar el cobro mediante procesos asíncronos.
Estado WooCommerce
El estado debe ser una consecuencia de la operativa, no el único fundamento de la emisión fiscal.
Qué significa cada estado dentro de una renovación
La siguiente tabla no sustituye el criterio fiscal. Sirve para diseñar una integración que no convierta cada cambio de estado en una factura nueva.
Un reintento no es una nueva venta
WooCommerce Subscriptions puede dejar una suscripción en espera, crear o reutilizar el pedido de renovación y programar reintentos mediante Action Scheduler. El cliente también puede pagar manualmente el pedido fallido y, cuando la pasarela lo permite, actualizar su método para futuras renovaciones.
El riesgo aparece cuando el plugin de facturación escucha varios eventos —creación del pedido, cambio de estado, webhook de la pasarela y reintento programado— y los interpreta como operaciones independientes.
Factura en el primer intento fallido
Se genera un documento definitivo aunque el pago no haya concluido y luego se emite otro cuando el cliente paga.
Una factura por cada callback
La pasarela reenvía un webhook o WooCommerce repite la acción y la integración no comprueba si el pedido ya tiene documento fiscal.
Crear otro pedido para cobrar
Se abandona el pedido de renovación original y se pierde la relación entre suscripción, pago e historial.
Reactivar sin revisar la factura
El cobro se recupera, pero el documento queda ausente, duplicado o vinculado al intento equivocado.
Cómo impedir que cron, webhook y reintento generen varias facturas
La integración debe ser idempotente: repetir el mismo evento no puede producir un segundo documento. El patrón técnico recomendado es identificar cada emisión por el pedido de renovación y comprobar el resultado antes de crear el documento fiscal.
Clave única de emisión
Pedido de renovación + tipo de documento + entidad que factura.
Bloqueo atómico
Evitar que dos procesos asignen simultáneamente serie y número al mismo pedido.
Referencia persistente
Guardar en WooCommerce el ID del documento, estado de envío y resultado del SIF.
Reintento recuperable
Si hay timeout, consultar primero si el documento ya existe antes de volver a emitir.
Un timeout no demuestra que la emisión haya fallado. Puede haberse creado la factura en el SIF y haberse perdido únicamente la respuesta. Repetir a ciegas es una causa frecuente de duplicados.
Renovaciones manuales, anticipadas y reactivaciones
No todas las renovaciones llegan por el mismo camino. WooCommerce permite que el cliente pague manualmente un pedido de renovación, renueve antes de la fecha prevista o se vuelva a suscribir después de una cancelación o expiración.
Pago desde Mi cuenta
Debe utilizarse el mismo pedido pendiente o fallido y comprobar que la factura solo se expide una vez.
Renovación anticipada
Cambia la próxima fecha de pago y puede crear un cobro antes del calendario previsto. Necesita una prueba específica.
Resuscripción
Puede crear una nueva suscripción vinculada a la anterior. No debe reutilizarse indiscriminadamente el historial fiscal anterior.
Cambios de plan, cantidades y prorrateos
WooCommerce Subscriptions permite cambiar entre productos de suscripción, subir o bajar de plan y modificar cantidades. Según la configuración, el cambio puede producir un pago inmediato, un crédito temporal, una modificación de la siguiente fecha o un nuevo pedido.
La integración debe validar qué documento corresponde al importe inmediato, cómo se trata el valor no consumido y qué ocurre con el siguiente ciclo. No basta con copiar las líneas de la suscripción anterior.
Los prorrateos son un caso fiscal específico. La fórmula de WooCommerce describe el cálculo comercial, pero la factura y su tratamiento tributario deben validarse según la operación real.
Reembolsar el pago no genera automáticamente la factura rectificativa correcta
WooCommerce puede devolver total o parcialmente el importe de un pedido. Esa acción económica debe coordinarse con el sistema de facturación. Si ya se expidió una factura y procede corregirla, la solución debe generar la rectificativa correspondiente, mantener la serie específica y relacionar la corrección con el documento original.
- Reembolso total: comprobar importe, impuestos y documento correctivo.
- Reembolso parcial: identificar líneas, descuentos y base/IVA que se rectifican.
- Cancelación futura: detener renovaciones no corrige automáticamente periodos ya facturados.
- Pago recuperado: no rectificar una factura válida si el mismo pedido termina pagándose correctamente.
Consulta también la guía específica sobre facturas rectificativas y VeriFactu en WooCommerce.
Muchas renovaciones pueden ejecutarse al mismo tiempo
Action Scheduler procesa tareas en segundo plano y puede ejecutar varias renovaciones cercanas en el tiempo. A esto se suman ventas puntuales, pagos manuales, reintentos y webhooks. El sistema debe garantizar que cada registro reciba una numeración coherente y que la huella del registro se encadene correctamente.
Procesamiento controlado
La emisión fiscal debe pasar por una cola o mecanismo equivalente, no depender de llamadas simultáneas sin control.
Asignación exclusiva
Serie y número necesitan un bloqueo transaccional o una API que garantice unicidad.
Trazabilidad técnica
Cada intento debe registrar pedido, acción, respuesta, documento, error y posibilidad de reintento.
Matriz mínima de pruebas para WooCommerce Subscriptions
Probar solo una renovación correcta no es suficiente. La implantación debe cubrir estados alternativos y caminos de recuperación.
| Escenario | Qué debe comprobarse | Riesgo si falla |
|---|---|---|
| Alta inicial | Pedido padre, primera factura, impuestos, cliente y próxima fecha. | Duplicar el primer ciclo o separar la suscripción de su factura. |
| Renovación automática correcta | Un pedido, un cobro, una factura y un registro. | Factura duplicada o ausencia de documento. |
| Pago fallido | No emitir otra factura por el intento; mantener relación con el pedido. | Documentar una operación fallida o duplicar al recuperar el pago. |
| Reintento automático | Mismo pedido/referencia, idempotencia y actualización de estado. | Una factura por reintento. |
| Pago manual del fallido | Recuperar el pedido previo y emitir solo una vez. | Nueva factura sin relación con el intento original. |
| Webhook repetido | La segunda llamada debe devolver el documento existente. | Doble numeración y doble remisión. |
| Timeout del SIF | Consultar antes de reemitir y registrar el estado incierto. | Duplicado remoto. |
| Reembolso parcial | Rectificativa, impuestos, vínculo y nuevo saldo. | Descuadre fiscal y contable. |
| Renovación anticipada | Documento, pago y nueva fecha de próximo ciclo. | Dos cobros/facturas para el mismo periodo. |
| Upgrade / downgrade | Prorrateo, pedido de cambio y siguiente renovación. | Importes o periodos incorrectos. |
| Renovación de importe cero | Regla fiscal definida; no asumir que cero elimina toda obligación. | Registros inconsistentes. |
| Staging | Pasarelas en prueba, renovaciones controladas y correos no reales. | Cobros o emails de producción durante las pruebas. |
Qué revisar antes de activar el flujo real
Pasarela compatible
Renovaciones automáticas, cambios de método, webhooks y reembolsos probados.
Action Scheduler saludable
Sin acciones fallidas acumuladas, retrasos, bloqueos o colas fuera de control.
HPOS y plugins
Compatibilidad comprobada en la versión real de WooCommerce y del SIF.
Regla de expedición
Documentada y validada para pagos automáticos, manuales y anticipados.
Idempotencia
Una referencia fiscal única por pedido de renovación y tipo de documento.
Logs y recuperación
Posibilidad de diagnosticar timeout, webhook, error remoto y reintento.
Rectificativas
Flujo total y parcial probado desde WooCommerce hasta el sistema fiscal.
Staging controlado
Renovaciones y pasarelas en modo prueba sin afectar suscripciones reales.
Revisamos la arquitectura, definimos los disparadores, configuramos la solución SIF y ejecutamos la matriz de pruebas antes de pasar a producción.
Dudas sobre suscripciones y VeriFactu
¿Cada pedido de renovación debe generar una factura?
No debe asumirse de forma automática. El pedido representa el ciclo de renovación, pero la expedición fiscal debe responder a la operación real y al criterio validado para la actividad.
¿Qué ocurre si el pago falla?
WooCommerce puede mantener el pedido pendiente o fallido, programar reintentos o permitir el pago manual. La integración debe evitar emitir varias facturas para el mismo pedido y recuperar el flujo cuando el cobro termina correctamente.
¿Un reintento debe crear otro pedido de renovación?
El comportamiento depende del proceso utilizado, pero fiscalmente la integración debe reconocer que se está intentando cobrar el mismo ciclo y aplicar controles de idempotencia.
¿Cancelar la suscripción exige una factura rectificativa?
No por sí sola. Cancelar evita ciclos futuros. Solo habrá que corregir documentos anteriores cuando exista una devolución, error o modificación que fiscalmente lo requiera.
¿Qué pasa con una renovación anticipada?
Puede crear un pago antes de la fecha prevista y desplazar el siguiente ciclo. Debe probarse para evitar que el sistema facture también la renovación programada original.
¿Los upgrades y downgrades generan otra factura?
Pueden generar pagos inmediatos, créditos o prorrateos. El documento correcto depende del importe y de la operación resultante; no conviene automatizarlo sin revisar la configuración.
¿Puedo probar renovaciones en staging?
Sí, pero con pasarelas en modo prueba y controlando Action Scheduler. WooCommerce Subscriptions desactiva por defecto determinadas renovaciones automáticas en entornos de staging para evitar cobros reales.
¿Webyseo decide cuándo debe emitirse fiscalmente la factura?
Webyseo analiza y configura el flujo técnico. El criterio tributario sobre devengo, pagos anticipados y tratamiento de cada operación debe validarlo el cliente con su asesor fiscal.
Recursos relacionados
Auditoría, configuración, pruebas y puesta en producción en WooCommerce.
Ver servicio → Facturas rectificativasCómo gestionar devoluciones y correcciones sin perder trazabilidad.
Ver guía → Errores de implantaciónEstados, duplicados, series, webhooks y pruebas previas a producción.
Revisar errores → Código QRQué contiene el QR tributario y qué sucede cuando se escanea.
Ver artículo →Fuentes técnicas y normativas
- WooCommerce: pedidos padre y pedidos de renovación.
- WooCommerce: proceso de renovación y pagos fallidos.
- WooCommerce: pruebas del sistema de reintentos.
- WooCommerce: cambios, upgrades y downgrades.
- Reglamento de obligaciones de facturación.
- AEAT: huella, integridad y encadenamiento.
- AEAT: procedimientos y facturas rectificativas.
- AEAT: plazos de adaptación de 2027.
Alcance: este artículo explica arquitectura e implantación técnica. No sustituye el asesoramiento fiscal sobre el momento de expedición, devengo, pagos anticipados o tratamiento de una operación concreta.




Deja tu comentario