Todos los artículos
Deep dive8 min de lectura

El reembolso de una app de pago nunca llega a tu servidor, así que la propia app tiene que detectarlo

Los reembolsos de apps de pago por adelantado esquivan todas las notificaciones que escucha tu servidor. Google da al comprador dos horas para devolverla y desinstala la app, Apple puede reembolsar dentro de 90 días según tu contrato, y ninguna de las dos pide pruebas. Esto es lo que te dice cada tienda, lo que cuesta y cómo comprobarlo desde la app.

Un smartphone sobre un escritorio de madera junto a un recibo de tienda roto y unas monedas, que ilustra el reembolso de una app de pago

Puntos clave

  • El reembolso de una app de pago cubre el precio de la descarga de la propia app, no una compra dentro de la app, y ni Apple ni Google documentan una notificación al servidor para ello.
  • La ayuda de Play Console de Google indica que el comprador tiene hasta dos horas tras comprar una app de pago para devolverla con reembolso total, y que solo puede devolver cada app una vez.
  • La política de reembolsos de Google Play indica que la app se desinstala como parte del reembolso, y que quien vuelve a comprar la misma app no puede obtener un segundo reembolso.
  • El tipo REFUND de App Store Server Notifications V2 cubre consumibles, no consumibles, suscripciones de renovación automática y suscripciones sin renovación. La compra de la app no figura en esa lista.
  • El Apple Developer Program License Agreement, Schedule 2, sección 6.3, permite a Apple reembolsar al comprador que cancela dentro de los 90 días posteriores a la descarga, y el desarrollador se lo reintegra a Apple.
  • La documentación de StoreKit de Apple incluye un revocationDate en AppTransaction, el registro firmado de la compra de la app, que la app puede consultar en el dispositivo.
  • Ni CONSUMPTION_REQUEST ni orders.reviewrefund de Google Play están documentados para compras de descarga de apps, así que el reembolso de una app de pago se decide sin las pruebas del desarrollador.

Las apps de pago por adelantado se reembolsan por una puerta lateral que casi ninguna herramienta de reembolsos vigila. Cuando un comprador devuelve la app en sí, y no algo comprado dentro de ella, Apple y Google retiran el dinero de tu liquidación sin enviar a tu servidor ni una sola notificación. Google, al menos, desinstala la app. En iOS, desarrolladores en los foros de la propia Apple cuentan que los compradores reembolsados siguen usándola. Si vendes una app de pago, su reembolso es el único que solo verás como una línea negativa en un informe, salvo que la app lo compruebe en el dispositivo.

Reglas de reembolso de apps de pago en Google Play y el App Store

Ambas tiendas tratan la compra de la descarga como un producto propio con sus propias reglas. Esto es lo que dice la documentación de cada una.

ReglaGoogle PlayApp Store
Devolución rápida en autoservicioHasta dos horas después de la compra, reembolso totalNinguna documentada
Plazo de solicitud más largoEl comprador puede solicitarlo dentro de 48 horas; después, debe contactar al desarrolladorApple puede reembolsar dentro de 90 días desde la descarga, según el Schedule 2 del contrato de desarrollador
Cuántas vecesUna vez por app. Una nueva compra no puede volver a reembolsarseNo documentado
Qué pasa con la appSe desinstala como parte del reembolsoNo documentado. Los desarrolladores cuentan que los compradores reembolsados conservan el acceso
El desarrollador puede reembolsarSí, solo reembolsos totales, desde Play ConsoleNo
Notificación a tu servidorNinguna documentadaNinguna documentada
Solicitud de pruebas al desarrolladorNinguna documentadaNinguna documentada

Cómo funciona la devolución de dos horas en Google Play

La ayuda de Play Console de Google lo dice sin rodeos: tras comprar una app de pago, el usuario tiene hasta dos horas para devolverla con reembolso total, y solo puede devolver una app una vez. La política de reembolsos para consumidores de Google añade que, dentro de 48 horas, el comprador puede obtener un reembolso según la compra, que la app se desinstala como parte del reembolso y que quien compra la misma app otra vez no puede obtener un reembolso por ella. Pasadas 48 horas, Google remite a los compradores al desarrollador.

Cómo reembolsa Apple una app de pago

En el App Store, el comprador lo pide a Apple a través de reportaproblem.apple.com, elige un motivo y selecciona la app. Apple indica que habrá una actualización en 24 a 48 horas. Tú no puedes reembolsar una compra del App Store. Tu contrato fija el límite exterior. La sección 6.3 del Schedule 2 del Apple Developer Program License Agreement establece que, si un comprador quiere cancelar dentro de los noventa días posteriores a la descarga, o la app no se ajusta a tus especificaciones o a la ley aplicable, Apple puede reembolsar el precio completo, y tú reintegras a Apple ese importe o le concedes un crédito por él.

Por qué tu servidor nunca se entera del reembolso de una app de pago

Todas las señales de reembolso que envían ambas tiendas están pensadas para compras dentro de la app. Apple describe su notificationType como el evento de In-App Purchase o de compra externa que originó la notificación. Su tipo REFUND cubre un consumible, un no consumible, una suscripción de renovación automática o una suscripción sin renovación. Get Refund History devuelve las compras dentro de la app reembolsadas a un cliente. La descarga de la app no está en ninguna de esas listas.

Con Google pasa lo mismo. Las notificaciones para desarrolladores en tiempo real cubren suscripciones, productos únicos y compras anuladas, y el productType de una compra anulada es una suscripción o una compra única. La Voided Purchases API indica que se aplica a pedidos únicos dentro de la app y a suscripciones, y solo abarca los últimos 30 días.

¿El reembolso de una app de pago genera un CONSUMPTION_REQUEST?

No. La documentación de Apple dice que envía CONSUMPTION_REQUEST cuando un cliente pide el reembolso de un In-App Purchase consumible o de una suscripción de renovación automática. Es uno de los dos únicos flujos de reembolso, entre ambas tiendas, que piden pruebas al desarrollador. El otro es la revisión de contracargos de Google Play, que se responde mediante orders.reviewrefund dentro de 24 horas y llega por el mismo flujo de notificaciones de compras dentro de la app. Ninguno está documentado para descargas de apps. El reembolso de una app de pago se decide sin nada que puedas aportar.

¿El comprador reembolsado sigue usando la app?

En Google Play, la política dice que la app se desinstala. En iOS, los foros de Apple tienen hilos de desarrolladores que preguntan justo esto. Uno de marzo de 2025 dice: «Cuando un usuario reembolsa una app de pago por adelantado, sigue teniendo acceso a la app». Otro, de 2022, sospecha de compradores que compran, instalan, piden el reembolso y siguen como si nada. Un tercero, de junio de 2025, pregunta si App Store Server Notifications V2 informa siquiera de reembolsos a nivel de app. Ninguno de los tres tiene respuesta de Apple.

Lo que te cuesta en dinero el reembolso de una app de pago

El lado de la liquidación es previsible. La ayuda de Play Console de Google dice que devuelve su tarifa de servicio cuando reembolsas, así que lo que se descuenta de tu liquidación es tu parte, no el precio de venta. Un reembolso emitido después de que Google te haya pagado sale de una liquidación futura, y si tu saldo sigue en negativo durante al menos 48 horas, Google puede cargarlo en tu cuenta bancaria. Por parte de Apple, el contrato dice que reintegras un importe igual al precio. En la práctica, RevenueCat informó en 2022 de que Apple descontaba la cifra posterior a la comisión que aparece como Extended Partner Share, así que Apple no se quedaba con su parte.

Los costes que no vuelven son los que pagaste para atender a ese comprador. Un ejemplo ilustrativo. Una app de fotos de pago de $6.99 aplica sus filtros con un modelo en la nube y sincroniza proyectos con almacenamiento en la nube. Pagaste un anuncio que trajo al comprador.

Partida de costeRecuperado en Google PlayRecuperado en el App Store
Tu parte de los $6.99Retirada de tu liquidaciónRetirada de tu liquidación
Tarifa de servicio o comisión de la tiendaGoogle te la devuelveNo se cobra, según el informe de RevenueCat
Inferencia en la nube y llamadas a API ya consumidasNoNo
Almacenamiento de proyectos sincronizadosNoNo
Gasto publicitario para captar al compradorNoNo
Costes de servidor continuos si el comprador sigue usando la appTerminan, la app se desinstalaContinúan hasta que tu app lo compruebe

Esa última fila es donde iOS sale caro. Un comprador reembolsado que conserva la app sigue llamando a tu backend, y cada petición de inferencia, sincronización y llamada a API posterior al reembolso es un coste sin ingreso detrás. En una app de pago sin costes de servidor, un reembolso es una venta perdida. En una con backend, puede convertirse en una factura que no para de crecer.

Cómo detectar el reembolso de una app de pago dentro de la app

Como el servidor no recibe nada, la comprobación tiene que empezar en el dispositivo y luego avisar a tu servidor.

En iOS, lee revocationDate en AppTransaction

AppTransaction es el registro firmado del App Store de la compra de la app por parte del cliente. La documentación de StoreKit de Apple incluye ahora una propiedad revocationDate, descrita como la fecha de revocación de la compra de la app. Lee AppTransaction.shared al iniciar, verifica el resultado y trata un revocationDate distinto de nil como una descarga reembolsada. Envía el valor firmado a tu servidor para que deje de atender esa cuenta.

  • appTransactionID se mantiene igual para una Apple Account incluso tras un reembolso o una nueva compra, según Apple, así que usa ese valor como clave de tus registros y reconocerás al comprador que vuelve a pagar.
  • AppTransaction.refresh() obtiene un registro actualizado del App Store, pero muestra una solicitud de inicio de sesión. Apple indica que solo se llame tras una acción explícita del usuario, como pulsar un botón de Restaurar.
  • El valor firmado vive en el dispositivo. La documentación de Apple no describe ninguna notificación al servidor para él, así que tu servidor solo sabe lo que la app le informa.
Un desarrollador sostiene un teléfono con un candado en pantalla frente a un portátil, comprobando el acceso tras el reembolso de una app de pago

En Android, pide a Play Integrity el veredicto de licencia

La desinstalación de Google cubre la mayoría de los casos, pero una copia puede sobrevivirla, por ejemplo una instalada manualmente desde una copia de seguridad. La Play Integrity API devuelve un appLicensingVerdict para la cuenta con sesión iniciada. LICENSED significa que el usuario tiene derecho a la app. UNLICENSED significa que no lo tiene, y Google sugiere mostrar el diálogo GET_LICENSED. UNEVALUATED significa que Google no pudo comprobarlo, por ejemplo porque el usuario no ha iniciado sesión en Google Play. Google advierte además que en algunos dispositivos antiguos el usuario conserva el derecho tras desinstalar, así que LICENSED no prueba una compra vigente en todos los dispositivos.

Haz del servidor el guardián

Las comprobaciones en el cliente se pueden parchear. Lo que vale la pena proteger es el trabajo de pago que hace tu backend, así que haz que el backend rechace las llamadas de una cuenta cuyo último informe fue un reembolso, un veredicto UNLICENSED o ningún veredicto tras el periodo de gracia que elijas. Eso es lo que impide que un reembolso se convierta en cómputo gratis.

Cuándo una app de pago debería pasarse a compras dentro de la app

La propia guía de Apple sobre cambios de modelo de negocio describe el paso de una app de pago a una app gratuita con In-App Purchases, usando originalAppVersion en AppTransaction para seguir dando las funciones premium a quienes compraron la versión de pago. La ventaja de ese cambio en materia de reembolsos es concreta. Cuando el precio está en un no consumible o en una suscripción, los reembolsos llegan como notificaciones REFUND y compras anuladas sobre las que tu servidor puede actuar, y una solicitud de reembolso de una suscripción en el App Store genera un CONSUMPTION_REQUEST. Esas son las señales que RefundHalt escucha y responde dentro de las ventanas de 12 horas y 24 horas. Una descarga de pago no te da ninguna de ellas.

Preguntas frecuentes

¿Cuánto tiempo tiene un comprador para devolver una app de pago en Google Play?
Hasta dos horas después de la compra para un reembolso total, según la ayuda de Play Console de Google, y solo una vez por app. La política de reembolsos de Google añade que el comprador puede obtener un reembolso dentro de 48 horas; pasado ese plazo, Google lo remite al desarrollador. La app se desinstala como parte del reembolso.
¿Apple notifica a mi servidor cuando alguien reembolsa mi app de pago?
No hay ninguna notificación documentada. App Store Server Notifications de Apple cubre eventos de In-App Purchase, y el tipo REFUND solo enumera consumibles, no consumibles, suscripciones de renovación automática y sin renovación. La app puede leer revocationDate en AppTransaction en el dispositivo e informar de ello a tu servidor.
¿El comprador reembolsado conserva el acceso a una app de pago de iOS?
Los desarrolladores en los foros de Apple cuentan que sí, y la documentación de Apple no describe ningún paso que retire la app tras un reembolso. Comprueba revocationDate en AppTransaction al iniciar y haz que tu servidor deje de atender a las cuentas que informen de una descarga reembolsada.
¿Puedo reembolsar yo mismo una app de pago?
En Google Play, sí. Play Console te permite emitir reembolsos totales de apps de pago, nunca parciales, y Google devuelve su tarifa de servicio. En el App Store, no. Solo Apple puede reembolsar una compra del App Store.
¿Puedo impugnar el reembolso de una app de pago con pruebas de uso?
No. CONSUMPTION_REQUEST de Apple está documentado para consumibles y suscripciones de renovación automática, y la revisión de contracargos de Google Play mediante orders.reviewrefund llega por notificaciones pensadas para productos dentro de la app y suscripciones. Ninguna de las dos tiendas documenta un flujo de pruebas para la compra de la propia app.

Fuentes y lecturas adicionales

RefundHalt

El piloto automático de reembolsos para App Store y Google Play

Seguir leyendo

La próxima solicitud de reembolso ya está en camino.

Configura RefundHalt en el tiempo que tardas en leer otro correo de soporte sobre un reembolso que no llegaste a impugnar.