Refunds & Notifications · Article 6.7
Actualizar estado — sincronización por sondeo cuando el webhook de Stripe no llegó
Los webhooks no son perfectos. Cuando una nota de crédito aparece bloqueada en `requested` a pesar de que Stripe ha procesado el reembolso, haga clic en `Actualizar estado` para obtener el estado actual de Stripe directamente. La misma lógica de transición que el webhook; sin riesgo de disparar efectos secundarios por duplicado.
Actualizar estado es el botón de «comprobar el estado». Cuando todo funciona, el webhook entrega el veredicto de Stripe en segundos y no necesita este botón. Cuando el webhook se retrasa o se pierde (problema de red en su endpoint, cola de webhooks de Stripe con retraso, su endpoint devolvió una respuesta 5xx que agotó la ventana de reintento de 3 días de Stripe), Actualizar le permite evitar el canal de push y obtener la respuesta directamente. El resultado es el mismo que si el webhook hubiera llegado correctamente.
Step by step
Observe un estado
requestedbloqueado.El banner muestra «Reembolso en curso, esperado en 3–5 días hábiles» y permanece estático durante más de 24 horas.
Haga clic en
Actualizar estado.Desde el banner de Reembolso o la fila de la página de Notas de crédito.
Espere ~2 segundos.
El servidor llama a la API de Stripe en la cuenta conectada; resuelve el estado canónico.
La interfaz se actualiza en su lugar.
Si Stripe indica completado → el banner cambia a «Reembolso completado el [fecha]»; se envía el correo «reembolso completado»; la propuesta se cierra si corresponde. Si falló → el banner ofrece opciones de Reintentar / Marcar como reembolsado. Si sigue pendiente en Stripe → el texto del banner se actualiza para reflejar el estado reportado por Stripe.
No se requiere ninguna acción adicional si el estado cambió.
Todos los hooks posteriores se disparan automáticamente.
Banner de reembolso con el botón Actualizar estado. Después de hacer clic, un breve indicador de carga, luego ningún cambio (Stripe sigue pendiente) o actualización del banner al estado terminal.
Why this works this way
¿Por qué un botón manual en lugar de una sincronización cron diaria? Coste y latencia. Un trabajo cron que sondea Stripe diariamente por cada nota de crédito en requested añade carga estable de API a los límites de velocidad de Stripe Y genera hasta 24 h de latencia antes de una actualización de la interfaz. El botón manual coloca el coste donde realmente se necesita (el autónomo se pregunta por qué el banner está bloqueado) y proporciona resolución casi instantánea. Puede que añadamos una sincronización automatizada si los tickets de soporte muestran que sería valioso, pero el camino manual cubre ~95% de los casos.
Troubleshooting
Keep reading
Refunds & Notifications
Stripe automatic refund (Direct Charges via Connect)
When the original deposit was paid via Stripe, the refund is automatic. Clozo issues a Refund on the freelancer's connected account, watches for the `refund.updated` webhook, and flips the credit note to `succeeded` once Stripe confirms — typically within 3–5 business days for the cash to reach the client.
Refunds & Notifications
Refund stages: issued → requested → succeeded (or manual)
The credit note moves through up to four states from creation to settled. Each state corresponds to a specific point in the refund lifecycle, with predictable UI badges and email triggers.
Refunds & Notifications
Failed refunds & recovery — common Stripe failure reasons
A `failed` credit note has a `refund_failure_reason` string from Stripe. Most reasons fall into a small set; here's what each means and the recommended recovery.
Refunds & Notifications
The Credit Notes page
A first-class section in the freelancer dashboard that lists every credit note across all your proposals, with status, refund amount, linked proposal, and action buttons. Use this when you want to manage refunds without drilling into each proposal individually.