Qué ocurre realmente: Stripe puede confirmar un pago de forma asíncrona mientras WooCommerce depende de un webhook firmado para actualizar el pedido. Si ese evento no llega, llega tarde o es rechazado, Stripe y WordPress quedan en estados distintos.
Une el pago remoto con el pedido local
Necesitas, como mínimo, el ID del Payment Intent, el ID del evento de Stripe, el ID de pedido y las marcas de tiempo. Las notas del pedido y el historial de entrega del webhook muestran dónde se rompe la cadena.
Comprueba la entrega antes de tocar el pedido
- Estado de entrega y reintentos del webhook en Stripe.
- URL del endpoint y coincidencia entre modo live/test.
- Secreto de firma configurado en el receptor.
- Logs de WooCommerce Stripe y errores fatales durante el procesamiento.
Cuatro causas que hay que separar
- Secreto incorrecto: el endpoint recibe el evento pero rechaza la firma.
- Modo mezclado: eventos live llegan a una configuración de test o al revés.
- Endpoint bloqueado: WAF, autenticación básica o mantenimiento impiden la entrega.
- Error al procesar: el webhook llega, pero código personalizado falla al actualizar el pedido.
Secuencia de reparación
- Corrige endpoint, modo y secreto según el entorno activo.
- Resuelve el rechazo concreto o el error fatal que muestran los registros.
- Cuando la idempotencia esté confirmada, reenvía un evento fallido de prueba.
- Concilia pagos antiguos individualmente antes de cambiar estados a mano.
Cuando el problema es un 401/403
Si Stripe registra un 401 o 403, no lo trates como un simple problema de pago: sigue el diagnóstico de autenticación y firewall para webhooks. Si el cargo existe pero el pedido queda en un estado incorrecto, revisa también la conciliación entre pago completado y pedido fallido.
Evita las correcciones masivas
No marques todos los pedidos pendientes como pagados basándote en avisos de clientes. Cada pedido debe relacionarse con una transacción real de Stripe antes de modificar su estado.
Cómo verificar que ya funciona
Un nuevo pago de prueba debe actualizar el pedido automáticamente; reenviar el mismo evento no debe duplicar stock, emails ni otros efectos; y Stripe y WooCommerce deben referenciar el mismo ID de evento.