Reembolsos y disputas en Stripe: guía para un SaaS pequeño
Cómo funcionan los reembolsos en Stripe, qué pasa cuando un cliente disputa un cobro, cuándo aceptar o pelear un contracargo y cómo evitar la mayoría.
Read in English →
Un reembolso es dinero que tú decides devolver; una disputa (o contracargo) es el banco del cliente quitándotelo en su nombre. En Stripe puedes reembolsar todo o parte de un pago desde el Dashboard o la API, pero la comisión de procesamiento del pago original no se devuelve. Cuando se abre una disputa, Stripe descuenta de inmediato de tu saldo el monto disputado más una comisión por disputa, y tienes una sola oportunidad, normalmente en un plazo de 7 a 21 días, para aceptarla o presentar pruebas.
En esta guía verás cómo se comportan los reembolsos, cómo es el calendario de una disputa, cómo decidir si pelearla, qué pruebas sirven en un SaaS y cómo lograr que las disputas sean raras.
¿Cómo funcionan los reembolsos en Stripe?
Abre el pago en el Dashboard y elige Refund. Por defecto es un reembolso total; escribe un monto menor para uno parcial. Puedes reembolsar varios pagos completos a la vez seleccionándolos en la lista, pero los parciales hay que hacerlos de a uno.
Algunos comportamientos que conviene conocer:
- Comisiones. Stripe no devuelve la comisión de procesamiento del pago original: una venta reembolsada igual te cuesta esa comisión.
- Saldo. Los reembolsos salen de tu saldo disponible en Stripe. Si no alcanza, los reembolsos con tarjeta quedan pendientes hasta que haya saldo; los de otros métodos de pago fallan.
- Tiempos. Stripe envía el reembolso al banco del cliente. Cuándo aparece en su resumen depende de la red de la tarjeta y del banco.
- Fallos. En raras ocasiones un reembolso falla, por ejemplo con una cuenta cerrada. Stripe envía
refund.failedy devuelve el dinero a tu saldo, lo que puede tardar hasta 30 días. Entonces tendrás que devolverle el dinero al cliente por otra vía. - Pagos sin capturar. Si solo autorizaste el cobro y nunca lo capturaste, cancélalo en lugar de reembolsar. Cancelar no cuesta nada.
¿Un reembolso cancela la suscripción?
No. Reembolsar la factura de una suscripción devuelve el dinero, pero la suscripción sigue activa y se renovará el período siguiente. Si el cliente se va, cancela también la suscripción, desde el Dashboard o dejando que lo haga él en el portal de clientes. Tu webhook debería manejar charge.refunded según tu propia política, por ejemplo quitando el acceso cuando un pago se reembolsa completo.
¿Qué pasa cuando un cliente disputa un cobro?
La secuencia de una disputa formal es más o menos esta:
- El titular de la tarjeta le dice a su banco que no reconoce o no acepta un cobro. Las redes de tarjetas suelen permitirlo dentro de los 120 días posteriores al pago, a veces más.
- El banco retira el dinero. Stripe descuenta de tu saldo el monto disputado y una comisión por disputa, y envía
charge.dispute.created. - Recibes un plazo para responder, normalmente de 7 a 21 días según la red. Aparece en la disputa dentro del Dashboard.
- Aceptas, o presentas pruebas. Si la impugnas, se cobra aparte una comisión por disputa impugnada, que Stripe devuelve si ganas.
- El banco decide, por lo general entre 60 y 75 días después de recibir tus pruebas. Todo el proceso suele durar dos o tres meses.
La comisión por recibir una disputa no se devuelve aunque ganes, salvo algunas excepciones que Stripe detalla (como los negocios en México). Revisa los precios de Stripe para conocer los montos de tu país.
¿Qué es una consulta previa (inquiry)?
Algunas redes, sobre todo American Express y Discover, empiezan con una consulta: el banco pide información antes de abrir una disputa formal. Stripe las muestra con estados que empiezan por warning_. Respóndelas. Ignorar una consulta puede convertirla en un contracargo muy difícil de ganar, y responderla bien puede cerrarla sin ninguna comisión.
¿Y las alertas tempranas de fraude?
A veces el emisor marca un pago como probable fraude antes de cualquier disputa. Stripe envía radar.early_fraud_warning.created. No exigen respuesta, pero según datos de Stripe cerca del 40% de las alertas de Visa y Mastercard que no se reembolsan terminan en disputas por fraude. En cobros chicos, reembolsar de forma preventiva suele salir más barato que pagar la comisión de una disputa; Stripe sugiere que en general conviene cuando el cobro es más o menos del tamaño de tu comisión por disputa o menor.
¿Conviene aceptar o pelear una disputa?
Pelea cuando tengas pruebas que respondan al motivo concreto que da el banco. Acepta cuando no las tengas, o cuando el monto sea menor que el tiempo y la comisión que te costaría impugnar.
Dos reglas de la documentación de Stripe importan aquí:
- Solo tienes un envío. Stripe reenvía tu respuesta al banco de inmediato y después no puedes editarla ni sumar archivos. Junta todo antes de enviar.
- No reembolses un pago disputado. El banco ya le devolvió el dinero al titular; un reembolso encima le pagaría dos veces. Acepta o impugna la disputa.
Si tu cuenta usa Smart Disputes, Stripe puede armar y enviar automáticamente las pruebas de las disputas elegibles antes del plazo, y su comisión solo se cobra en las disputas que ganas. Revisa si está activo en la configuración de disputas.
¿Qué pruebas ayudan a un SaaS a ganar?
Que sean pertinentes al motivo de la disputa y breves. Los emisores revisan muchas respuestas y no van a buscar dentro de archivos largos. En un producto por suscripción suelen servir:
- La prueba de que el cliente aceptó los términos al registrarse, y la sección concreta sobre renovaciones o cancelaciones, no el documento entero.
- Registros de inicio de sesión y de uso posteriores al cobro, que muestren que la cuenta se usó.
- El correo y la dirección IP del cliente coincidiendo con pagos anteriores no disputados.
- Los recibos y recordatorios de renovación que enviaste.
- Tus mensajes con el cliente, recortados a lo relevante.
Tu app solo puede darte esto si lo registra. Guarda los inicios de sesión y las acciones importantes con fecha y hora, y cuándo aceptó cada usuario tus términos.
¿Cómo evitas las disputas desde el principio?
Muchas disputas en productos por suscripción empiezan por confusión y no por fraude: un nombre en el resumen que nadie reconoce o una renovación que nadie recordaba.
- Usa un descriptor reconocible en el resumen de la tarjeta, idealmente el nombre de tu producto o tu dominio.
- Haz fácil la cancelación. Quien no encuentra el botón de cancelar muchas veces llama a su banco.
- Manda recordatorios antes de las renovaciones anuales, y recibos de cada cobro.
- Responde rápido a los pedidos de reembolso. Un reembolso a tiempo cuesta menos que una disputa.
- Restringe el acceso cuando se abre una disputa, si tu política lo permite, para que la cuenta no se use gratis mientras se resuelve.
Respuestas rápidas
¿Puedo deshacer un reembolso? Algunos reembolsos con tarjeta se pueden cancelar desde el Dashboard durante un tiempo corto, siempre que no se hayan procesado como reversión. Después, no.
¿Stripe decide quién gana una disputa? No. Decide el banco del cliente; Stripe le hace llegar tus pruebas.
¿Y si gano después de haberle reembolsado yo al cliente? Ese es el problema del doble pago. No reembolses una vez que existe la disputa.
¿Mi webhook debería escuchar las disputas? Sí. Atiende charge.dispute.created y charge.dispute.closed para que tu equipo se entere a tiempo de responder. La guía de suscripciones con Stripe lista los eventos relacionados.
¿Quieres que tu flujo de cobros aguante una disputa?
Un buen resultado en una disputa empieza con lo que tu app registra mucho antes de que alguien se queje. Nuestro servicio de pagos con Stripe puede sumar los registros, webhooks y el flujo de cancelación que hacen fácil reunir esas pruebas. Puedes empezar con la revisión gratuita de tu app, leer la guía de Stripe sobre cómo funcionan las disputas o escribirnos.


