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.

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.
| Regla | Google Play | App Store |
|---|---|---|
| Devolución rápida en autoservicio | Hasta dos horas después de la compra, reembolso total | Ninguna documentada |
| Plazo de solicitud más largo | El comprador puede solicitarlo dentro de 48 horas; después, debe contactar al desarrollador | Apple puede reembolsar dentro de 90 días desde la descarga, según el Schedule 2 del contrato de desarrollador |
| Cuántas veces | Una vez por app. Una nueva compra no puede volver a reembolsarse | No documentado |
| Qué pasa con la app | Se desinstala como parte del reembolso | No documentado. Los desarrolladores cuentan que los compradores reembolsados conservan el acceso |
| El desarrollador puede reembolsar | Sí, solo reembolsos totales, desde Play Console | No |
| Notificación a tu servidor | Ninguna documentada | Ninguna documentada |
| Solicitud de pruebas al desarrollador | Ninguna documentada | Ninguna 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 coste | Recuperado en Google Play | Recuperado en el App Store |
|---|---|---|
| Tu parte de los $6.99 | Retirada de tu liquidación | Retirada de tu liquidación |
| Tarifa de servicio o comisión de la tienda | Google te la devuelve | No se cobra, según el informe de RevenueCat |
| Inferencia en la nube y llamadas a API ya consumidas | No | No |
| Almacenamiento de proyectos sincronizados | No | No |
| Gasto publicitario para captar al comprador | No | No |
| Costes de servidor continuos si el comprador sigue usando la app | Terminan, la app se desinstala | Continú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.

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
- Play Console Help: Issue refunds and cancellations
- Google Play Help: Apps, games and in-app purchases refund policies
- Google Play Developer API: Voided Purchases API
- Android Developers: Real-time developer notifications reference
- Android Developers: Play Integrity API integrity verdicts
- Apple Developer Documentation: notificationType (App Store Server Notifications V2)
- Apple Developer Documentation: AppTransaction
- Apple Developer Documentation: Supporting business model changes by using the app transaction
- Apple Developer Program License Agreement, Schedule 2 section 6.3
- Apple Support: Request a refund for apps or content that you bought from Apple
- Apple Developer Forums: How to detect refund for paid app? (March 2025)
- Apple Developer Forums: AppTransactionId support and app-level refunds (June 2025)
- RevenueCat: Does Apple keep its commission after you refund a purchase?
RefundHalt
El piloto automático de reembolsos para App Store y Google Play
Seguir leyendo
Si tu app sigue usando App Store Server Notifications V1, Apple nunca te consulta sobre los reembolsos de suscripciones
Apple dejó obsoleto App Store Server Notifications V1 en junio de 2023, y nunca recibió el CONSUMPTION_REQUEST de suscripciones, REFUND_DECLINED ni REFUND_REVERSED. Esto es lo que se pierde un servidor V1, lo que cuesta y cómo pasar a V2 sin perder ningún reembolso.
Un reembolso en la suscripción mensual con compromiso de 12 meses de Apple puede cerrar el año entero, o solo uno de sus meses
La suscripción mensual con compromiso de 12 meses de Apple divide los reembolsos en dos. Si se reembolsa un mes pasado, la facturación continúa. Si se reembolsa el mes en curso, el compromiso termina en el acto. Así llega cada caso a tu servidor, lo que cuesta y lo que debes enviar a Apple.