Apple y Google te permiten extender la fecha de renovación de una suscripción tras una caída, y sus límites no se parecen en nada
Cuando tu app se cae, puedes extender la fecha de renovación de una suscripción en lugar de esperar las solicitudes de reembolso. Así funcionan las extensiones de 90 días de Apple y el aplazamiento de facturación de Google Play, dónde pone el límite cada tienda y cuánto te cuesta cada opción.

Puntos clave
- La App Store Server API permite a un desarrollador extender entre 1 y 90 días la fecha de renovación de una suscripción autorrenovable activa y pagada, para compensar una caída, un evento cancelado o una transmisión en directo interrumpida.
- Apple permite dos extensiones de la fecha de renovación por cliente en 365 días. Una extensión no se puede revertir una vez que entra en vigor, y Apple envía al cliente un email con la nueva fecha de renovación.
- Apple no extiende una suscripción que esté en un periodo de oferta gratuita, en reintento de facturación, en un periodo de gracia cuya fecha de vencimiento ya pasó o que ya haya vencido. La suscripción necesita al menos un periodo pagado previo.
- Los días añadidos con una extensión de la fecha de renovación de Apple no cuentan para el año de servicio pagado que eleva la participación del desarrollador en los ingresos por suscripción del 70% al 85%.
- purchases.subscriptionsv2.defer de Google Play retrasa la siguiente fecha de cobro de una suscripción desde un día hasta un año por llamada. El usuario mantiene el acceso completo sin que se le cobre, y Google envía una notificación SUBSCRIPTION_DEFERRED.
- Una extensión de la fecha de renovación no devuelve dinero, así que el desarrollador conserva el pago, pero paga el cómputo, el almacenamiento y las llamadas a APIs de los días añadidos sin una renovación que los cubra. Un reembolso devuelve el precio y nada del dinero ya gastado en atender a ese cliente.
- Si una caída impidió entregar una compra dentro de la app y Apple envía un CONSUMPTION_REQUEST, el deliveryStatus honesto es UNDELIVERED_SERVER_OUTAGE, y Apple exige que consumptionPercentage sea 0 para cualquier estado distinto de DELIVERED.
Una caída le da a cada suscriptor el argumento de reembolso más limpio que existe, y no puedes impedir que lo use. Lo que sí puedes hacer es devolver los días perdidos antes de que nadie los pida. Las dos tiendas de apps te permiten extender la fecha de renovación de una suscripción para que el cliente reciba tiempo gratis en lugar de dinero. Apple limita cada extensión a 90 días y permite dos al año. Google te deja aplazar la facturación hasta un año por llamada. El papeleo, las notificaciones y la factura de fondo son lo bastante distintos como para que un solo plan ante caídas no sirva para ambas.
Qué hace una caída con tu exposición a reembolsos
Los reembolsos los deciden las tiendas, no tú. En la App Store, el cliente se lo pide a Apple y Apple decide. Puedes recibir una notificación CONSUMPTION_REQUEST y tener 12 horas para enviar datos de consumo mediante Send Consumption Information. Esa es toda tu voz en el asunto.
En Google Play, un comprador puede obtener un reembolso dentro de las 48 horas posteriores a la compra sin que nadie te pregunte. Después de eso, las solicitudes te llegan a ti. El único flujo de Google que pide tus pruebas es un contracargo marcado para revisión del desarrollador, que respondes mediante orders.reviewrefund en un plazo de 24 horas. La decisión del banco sobre un contracargo es definitiva.
Así que ninguna tienda te da forma de bloquear un reembolso. Lo que controlas es si un suscriptor sigue sintiéndose estafado cuando el servicio vuelve. Tiempo extra en la suscripción, concedido rápido y anunciado con claridad, es la herramienta que ambas tiendas crearon justo para eso.
Cómo extender la fecha de renovación de una suscripción en la App Store
La App Store Server API tiene dos endpoints para esto. Extend a Subscription Renewal Date actúa sobre una suscripción, que identificas por su originalTransactionId. Extend Subscription Renewal Dates for All Active Subscribers actúa sobre todos los suscriptores elegibles de un productId, y puedes limitarlo con storefrontCountryCodes cuando la caída solo afectó a algunas regiones.
Cada solicitud lleva tres cosas: extendByDays, un número de 1 a 90; un extendReasonCode; y un requestIdentifier que generas tú. El código de motivo 3 significa un problema o caída del servicio. El código 1 es satisfacción del cliente, el código 2 es otros motivos y el código 0 es no declarado.
Qué suscripciones extiende Apple
Solo califican las suscripciones autorrenovables activas con al menos un periodo pagado previo. Apple omite estas:
- Suscripciones en un periodo de oferta gratuita, como una prueba gratuita.
- Suscripciones inactivas en estado de reintento de facturación.
- Suscripciones en un periodo de gracia de facturación cuya fecha de vencimiento ya pasó.
- Suscripciones que ya recibieron dos extensiones de la fecha de renovación en los últimos 365 días.
- Suscripciones vencidas.
En Familia viene incluido sin coste. Cuando Apple extiende una suscripción comprada que admite En Familia, las suscripciones de los miembros de la familia también se extienden. No puedes apuntar directamente a la suscripción de un miembro de la familia.
La solicitud masiva es lenta, así que vigila las notificaciones
Apple dice que una solicitud para extender a todos los suscriptores activos puede tardar horas, o incluso días, según cuántos suscriptores tengas. Una respuesta 200 solo significa que Apple la está procesando. App Store Server Notifications V2 te dice cómo fue:
| Notificación | Subtipo | Qué significa |
|---|---|---|
| RENEWAL_EXTENDED | ninguno | Se extendió la fecha de renovación de una suscripción |
| RENEWAL_EXTENSION | FAILURE | Falló la extensión de una suscripción |
| RENEWAL_EXTENSION | SUMMARY | La solicitud masiva completa terminó |
Por cada FAILURE, toma el originalTransactionId de la transacción firmada en el payload y reinténtalo con el endpoint de suscripción individual. Si prefieres consultar, Get Status of Subscription Renewal Date Extensions indica si la solicitud terminó y cuántas extensiones tuvieron éxito o fallaron.
Cómo funciona el aplazamiento de facturación de Google Play
La versión de Google es purchases.subscriptionsv2.defer, que se llama una vez por token de compra. El cuerpo de la solicitud contiene un deferralContext con tres campos. El etag viene de purchases.subscriptionsv2.get, y la llamada falla si no coincide con el etag más reciente de la suscripción. El deferDuration indica cuánto mover la fecha. Y validateOnly, cuando es true, ejecuta la solicitud como prueba sin tocar la suscripción.
La guía de facturación de Google fija el rango entre un día y un año por llamada a la API. Para ir más allá, vuelve a llamar antes de que llegue la nueva fecha de vencimiento. En una suscripción con renovación automática, el aplazamiento mueve la siguiente fecha de renovación. En un plan prepago, mueve la hora de vencimiento. En una suscripción con complementos, todos los elementos se aplazan la misma duración. La respuesta lista el nuevo expiryTime de cada elemento.
Durante el aplazamiento el usuario sigue suscrito con acceso completo y no se le cobra el tiempo extra. Google envía una notificación para desarrolladores en tiempo real SUBSCRIPTION_DEFERRED. El antiguo purchases.subscriptions.defer está obsoleto, así que el código nuevo debe usar el método v2.
Google no avisa a tu cliente, así que tienes que hacerlo tú
Apple envía un email al cliente tras cada extensión correcta. La guía de facturación de Google no describe ningún mensaje al usuario. Si el objetivo es adelantarte a las solicitudes de reembolso, el suscriptor tiene que saber que existe ese tiempo extra. Avísale tú, en la app y por email, y di cuántos días y por qué.
Apple y Google, lado a lado
| Apple App Store | Google Play | |
|---|---|---|
| API | Extend a Subscription Renewal Date, más un endpoint masivo | purchases.subscriptionsv2.defer |
| Duración por solicitud | De 1 a 90 días | De 1 día a 1 año |
| Frecuencia | Dos veces por cliente en 365 días | Sin límite indicado; vuelve a llamar antes de la nueva fecha de vencimiento |
| Opción masiva | Una llamada por productId, opcionalmente por storefront | Una llamada por token de compra |
| Prueba gratuita | No elegible | La guía de Google no lo trata |
| Notificación | RENEWAL_EXTENDED, RENEWAL_EXTENSION | SUBSCRIPTION_DEFERRED |
| Aviso al cliente | Apple envía un email | Depende de ti |
| Reversible | No | La guía de Google no lo trata |
Lo que cuesta una extensión frente a un reembolso
Un reembolso y una extensión sacan el dinero de lugares distintos. Un reembolso devuelve lo que el cliente pagó por el periodo. Todo lo que ya gastaste en atender a ese cliente queda gastado: cómputo por cada sesión, llamadas a la API del modelo, almacenamiento y cualquier pago a un creador cuyo contenido usó.
Una extensión conserva el pago. Lo que cuesta es el servicio que prestas sin una renovación que lo pague. Cada día añadido, un suscriptor activo sigue generando las mismas facturas. Para un usuario ligero eso es casi nada. Para un usuario intensivo de una función de IA, 30 días extra pueden significar 30 días de llamadas al modelo sin ingresos que los compensen. Ajusta la extensión a la caída, no a la disculpa que te gustaría ofrecer.
| Lo que pierdes | Reembolso | Extensión de la fecha de renovación |
|---|---|---|
| El pago de la suscripción | Se devuelve al cliente | Se conserva |
| Costes ya gastados en atender al cliente | Perdidos | Perdidos |
| Cómputo, almacenamiento y llamadas a APIs durante los días añadidos | Ninguno, el acceso termina | Los pagas tú, aún sin renovación |
| La suscripción después | Termina si el reembolso revoca el acceso | Activa, se renueva en la nueva fecha |
El coste de comisión en Apple
Apple paga el 70% de cada renovación durante el primer año de servicio pagado de un suscriptor y el 85% a partir de entonces. La página de suscripciones de Apple dice que los días de extensión de renovación se excluyen de los días de servicio pagado. Así que una extensión de 30 días retrasa 30 días el paso de ese suscriptor al 85%. Si estás en el App Store Small Business Program, ya recibes el 85% y este coste no se aplica.
El coste de los contracargos en Google Play
Para pedidos realizados después del 3 de agosto de 2026, un contracargo que gana el titular de la tarjeta le cuesta a un desarrollador de Google Play el precio de compra menos la comisión de servicio de Play, más las comisiones del banco. Una caída es justo el tipo de evento que lleva a un cliente molesto a su banco. Un aplazamiento que le llegue primero sale más barato que una disputa que no puedes revertir.

Cuándo una extensión no es la herramienta adecuada
La compra no era una suscripción
Las extensiones de la fecha de renovación solo se aplican a suscripciones. Si una caída rompió un consumible o un desbloqueo único, vuelve a entregar el artículo. Si Apple envía un CONSUMPTION_REQUEST por él, informa de lo que pasó. El campo deliveryStatus de Apple tiene un valor para esto, UNDELIVERED_SERVER_OUTAGE, y Apple dice que cualquier estado distinto de DELIVERED debe ir con consumptionPercentage en 0.
El cliente ya usó las dos extensiones de Apple
El límite de Apple es de dos extensiones por cliente en 365 días. Dos caídas en un año las agotan, y una tercera te deja sin nada que ofrecer a través de la tienda. Lleva la cuenta de cuántas extensiones ha usado cada originalTransactionId, para que las notificaciones FAILURE de la solicitud masiva no te pillen por sorpresa.
El cliente está en una prueba gratuita
Apple no extiende una suscripción en un periodo de oferta gratuita. Un usuario de prueba perdió días gratis, no pagados, así que el riesgo de reembolso es bajo. Si quieres compensarlo, un mensaje dentro de la app cuesta menos que cualquier llamada a la API.
Una lista de verificación para la próxima caída
- Registra cuándo empezó y terminó la caída, y qué productos y regiones afectó.
- Elige un número de días que cubra el tiempo perdido. En Apple, usa el código de motivo 3 y quédate entre 1 y 90.
- En Apple, envía una solicitud masiva por productId, limitada con storefrontCountryCodes cuando solo se vieron afectadas algunas regiones.
- Escucha las notificaciones RENEWAL_EXTENSION FAILURE y reintenta cada una con el endpoint de suscripción individual.
- En Google Play, recorre los tokens de compra activos, lee cada etag, ejecuta primero con validateOnly y luego aplaza de verdad.
- Avisa tú mismo a los suscriptores de Google Play del tiempo extra, ya que Google no lo hará.
- Actualiza el vencimiento de los derechos de acceso a partir de RENEWAL_EXTENDED y SUBSCRIPTION_DEFERRED, no de tus propios cálculos de fechas.
- Guarda registros de uso por cuenta, para que si aun así llega una solicitud de reembolso o un contracargo, tus pruebas estén listas en menos de 12 horas para Apple y 24 horas para Google.
Preguntas frecuentes
- ¿Cuántas veces puedo extender la fecha de renovación de una suscripción de la App Store?
- Dos veces por cliente en 365 días. Cada extensión puede ser de 1 a 90 días, y una suscripción que ya recibió dos extensiones en los últimos 365 días no es elegible para otra.
- ¿Apple avisa al cliente cuando extiendo su suscripción?
- Sí. Tras una extensión correcta de la fecha de renovación, Apple envía al cliente un email con la fecha de renovación actualizada. La guía de facturación de Google Play no describe ningún mensaje así, así que en Android deberías avisar tú a los suscriptores.
- ¿Cuánto tiempo puedo aplazar una suscripción de Google Play?
- La guía de facturación de Google indica de un día a un año por llamada a purchases.subscriptionsv2.defer. Para aplazar más, vuelve a llamar a la API antes de que llegue la nueva fecha de vencimiento. El usuario mantiene el acceso completo y no se le cobra el tiempo aplazado.
- ¿Puedo deshacer una extensión de la fecha de renovación de Apple?
- No. Apple dice que, una vez que una extensión de renovación de suscripción entra en vigor, no hay forma de revertirla. Revisa el producto, el número de días y los storefronts antes de enviar la solicitud.
- ¿Una extensión de la fecha de renovación afecta a mi participación del 85% en los ingresos de Apple?
- Sí. Apple excluye los días de extensión de renovación de los días de servicio pagado, así que una extensión retrasa el momento en que un suscriptor pasa del 70% al 85% tantos días como hayas añadido. Los desarrolladores del App Store Small Business Program ya reciben el 85%.
- ¿Puedo extender una suscripción que está en prueba gratuita?
- En la App Store, no. Apple excluye las suscripciones en un periodo de oferta gratuita, junto con las que están en reintento de facturación, en un periodo de gracia vencido o ya vencidas. Solo califican las suscripciones activas con al menos un periodo pagado.
Fuentes y lecturas adicionales
- Apple Developer: Extending the renewal date for auto-renewable subscriptions
- Apple Developer: Extend a Subscription Renewal Date
- Apple Developer: Extend Subscription Renewal Dates for All Active Subscribers
- Apple Developer: extendReasonCode
- Apple Developer: Auto-renewable subscriptions
- Apple Developer: deliveryStatus
- Google Play Developer API: purchases.subscriptionsv2.defer
- Google Play Billing: Manage subscriptions and one-time purchases
- Google Play Billing: Subscription lifecycle
- Play Console Help: Updates to refund protection and chargeback cost responsibility
RefundHalt
El piloto automático de reembolsos para App Store y Google Play
Seguir leyendo
Las solicitudes de reembolso excesivas pueden costarte más que los propios reembolsos, porque ambas tiendas las tratan como una señal de calidad
La directriz 5.6.4 de Apple cita las solicitudes de reembolso excesivas como señal de que una app no cumple los estándares de calidad, y el acuerdo de distribución de Google le permite retirar apps de desarrolladores nuevos por su tasa de reembolsos. Esto es lo que dice cada tienda, lo que cuesta una retirada y cómo mantenerte a salvo.
Verifica las notificaciones del servidor de App Store antes de actuar sobre un reembolso, porque cualquiera puede enviar datos a tu URL de webhook
Una notificación de reembolso no es más que una petición HTTPS hasta que compruebas su firma. Así se verifican las notificaciones del servidor de App Store y los mensajes RTDN de Google Play, qué firma cada tienda y cuánto te cuesta un reembolso falsificado o rechazado por error.