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.

Puntos clave
- Apple declaró obsoletos App Store Server Notifications V1 y el endpoint verifyReceipt el 5 de junio de 2023. Ambos siguen funcionando, no reciben funciones nuevas y no tienen fecha de retirada anunciada.
- La documentación de V1 de Apple incluye CONSUMPTION_REQUEST solo para compras dentro de la app consumibles. Las solicitudes de consumo para suscripciones con renovación automática se añadieron a App Store Server Notifications V2 en abril de 2024.
- REFUND_DECLINED y REFUND_REVERSED solo existen en App Store Server Notifications V2, así que un servidor V1 nunca se entera de que Apple rechazó un reembolso o lo revirtió.
- En V1, un reembolso de Apple de una suscripción con renovación automática llega como CANCEL. En V2 llega como REFUND, con revocationDate y revocationReason en la transacción firmada.
- Apple reintenta una notificación V2 fallida cinco veces durante aproximadamente una semana, a las 1, 12, 24, 48 y 72 horas. Una notificación V1 fallida recibe tres reintentos, a las 6, 24 y 48 horas, y no se puede recuperar con Get Notification History.
- Cuando una app cambia a V2 en App Store Connect, las notificaciones nuevas llegan en formato V2 de inmediato, mientras que las notificaciones V1 que ya están en reintento pueden seguir llegando durante unas 78 horas.
La versión 1 de App Store Server Notifications sigue entregando reembolsos, pero deja fuera la única notificación que te permite defender un reembolso de suscripción. Apple declaró V1 obsoleta el 5 de junio de 2023, junto con el endpoint verifyReceipt, y desde entonces ha añadido todas las funciones de reembolso solo a V2. Si la configuración de App Store Connect todavía dice Version 1, Apple puede decidir un reembolso de suscripción sin enviar nunca un CONSUMPTION_REQUEST a tu servidor. No pierdes una disputa. Nunca te invitan a ella.
Qué significa la obsolescencia de App Store Server Notifications V1 de Apple
Obsoleto no significa apagado. Un ingeniero de Apple escribió en los foros de desarrolladores en junio de 2023 que verifyReceipt y las notificaciones V1 seguirán funcionando hasta que se anuncie una fecha de retirada, que esa fecha aún no estaba fijada y que se avisará a los desarrolladores con antelación. Más de tres años después, App Store Connect todavía ofrece "Version 1 (deprecated)" como opción al configurar la URL del servidor.
Lo que sí significa la obsolescencia es una congelación. Todos los cambios en el registro de cambios de notificaciones de Apple desde junio de 2023 son cambios de V2: campos nuevos en la transacción firmada, tipos de notificación nuevos, los datos de compromiso de 12 meses añadidos en abril de 2026. Un servidor V1 no ve nada de eso.
Qué señales de reembolso nunca recibe un servidor V1
Así llegan los mismos eventos de reembolso a un servidor V1 y a un servidor V2, según la documentación de Apple para cada versión.
| Evento de reembolso | Version 1 | Version 2 |
|---|---|---|
| El cliente pide a Apple el reembolso de un consumible | CONSUMPTION_REQUEST | CONSUMPTION_REQUEST |
| El cliente pide a Apple el reembolso de una suscripción con renovación automática | No figura en la documentación de V1 | CONSUMPTION_REQUEST, desde abril de 2024 |
| Apple reembolsa una suscripción con renovación automática | CANCEL | REFUND |
| Apple reembolsa un consumible, un no consumible o una suscripción sin renovación | REFUND | REFUND |
| Apple rechaza un reembolso que el cliente inició en tu app | No disponible | REFUND_DECLINED |
| Apple revierte un reembolso que ya había concedido | No disponible | REFUND_REVERSED |
| Recuperas notificaciones perdidas durante una caída | No disponible | Get Notification History |
¿V1 sigue recibiendo CONSUMPTION_REQUEST?
Sí, para consumibles. La referencia de V1 de Apple describe CONSUMPTION_REQUEST como la notificación que se envía cuando un cliente inicia una solicitud de reembolso de una compra dentro de la app consumible. Un ingeniero de Apple confirmó en los foros en 2023 que las solicitudes de consumo de V1 se envían para los reembolsos que cumplen los requisitos. La carencia está en las suscripciones. El registro de cambios de Apple fecha las solicitudes de consumo de suscripciones el 11 de abril de 2024, en V2, y la documentación de Send Consumption Information indica que Apple envía la solicitud a tu endpoint V2.
Por qué CANCEL en V1 es fácil de malinterpretar
En V1, cuando Apple reembolsa una suscripción, el tipo de notificación es CANCEL, a menudo acompañado de DID_CHANGE_RENEWAL_STATUS. Muchos servidores tratan cualquier cancelación como un cliente que desactiva la renovación automática, lo que mantiene el acceso hasta que termina el periodo. V2 elimina la ambigüedad. Un reembolso llega como REFUND, y un cliente que desactiva la renovación llega como DID_CHANGE_RENEWAL_STATUS con el subtipo AUTO_RENEW_DISABLED.
Lo que cuesta en dinero quedarse en V1
Apple decide cada reembolso del App Store. El CONSUMPTION_REQUEST es el único momento en que tus datos de uso llegan a esa decisión, y Apple te pide que respondas en un plazo de 12 horas. En V1, los reembolsos de suscripciones se saltan ese paso.
Veamos un ejemplo con cifras ilustrativas. Supón que tu app vende una suscripción mensual de $9.99 que incluye generaciones de imágenes con IA. Un suscriptor hace 400 generaciones en un mes, y cada una te cuesta dinero real en inferencia del modelo. Luego pide un reembolso a Apple.
| Concepto de coste | Servidor V1 | Servidor V2 |
|---|---|---|
| Tu parte del pago | Se devuelve si Apple lo aprueba | Se devuelve si Apple lo aprueba |
| Cómputo, llamadas a API y almacenamiento usados ese mes | Ya pagados, no recuperables | Ya pagados, no recuperables |
| Oportunidad de mostrar a Apple las 400 generaciones | Ninguna | Un CONSUMPTION_REQUEST, 12 horas |
| Saber que Apple rechazó el reembolso | Nunca | REFUND_DECLINED |
| Saber que un reembolso se revirtió | Nunca | REFUND_REVERSED |
El pago que pierdes es tu parte, no el precio de venta. Apple paga el 70% del precio de una suscripción, menos los impuestos aplicables, durante el primer año de servicio de pago de un suscriptor, y el 85% después de ese año o para los miembros del App Store Small Business Program. La factura de cómputo no se reduce con él. La inferencia, las llamadas a API de terceros y el almacenamiento de archivos se pagaron cuando el cliente los usó.
Las dos notificaciones de resultado que faltan también cuestan dinero. Sin REFUND_REVERSED, un servidor que revocó el acceso por un reembolso nunca lo restaura cuando Apple revierte el reembolso, así que un cliente que paga se queda bloqueado y escribe a soporte. Sin REFUND_DECLINED, no puedes distinguir un reembolso que sigue pendiente de uno que Apple rechazó.

Cómo migrar de V1 a V2 sin perder ningún reembolso
Pasar a V2 es un cambio en el servidor más un ajuste. La propia guía de Apple en los foros, de un App Store Commerce Engineer en diciembre de 2025, explica qué ocurre el día que haces el cambio.
Crea el endpoint V2 antes de cambiar el ajuste
- Acepta un POST cuyo cuerpo lleve un signedPayload. Los payloads de V2 son JWS firmados por Apple, así que verifica la firma antes de confiar en nada de su contenido. La App Store Server Library de Apple lo hace por ti.
- Traslada el manejo de CANCEL a REFUND, y trata REFUND_DECLINED y REFUND_REVERSED como casos nuevos.
- Responde a CONSUMPTION_REQUEST para suscripciones con Send Consumption Information, y solo cuando el cliente haya dado su consentimiento para compartir datos con Apple. Apple indica que sin consentimiento no debes responder.
- Devuelve HTTP 200 a 206 si todo va bien. Cualquier 40x o 50x hace que Apple reintente.
Cambia el ajuste en App Store Connect
En App Store Connect, abre tu app, elige App Information en General, busca App Store Server Notifications y configura la Production Server URL con tu endpoint V2 y Version 2 seleccionada. Haz lo mismo primero con la URL de sandbox si quieres probar, y usa Request a Test Notification para confirmar que tu servidor responde.
Mantén activo el manejador V1 durante unos tres días
Tras el cambio, las notificaciones nuevas llegan en formato V2 de inmediato, para todas las suscripciones, antiguas o nuevas. Las notificaciones V1 que ya están en reintento siguen llegando en formato V1 hasta que se entregan o se agotan. Apple sitúa el último reintento V1 posible en unas 78 horas, que son 6 más 24 más 48. Deja el manejador antiguo funcionando más allá de ese plazo y después elimínalo.
Sustituye verifyReceipt de paso
verifyReceipt quedó obsoleto el mismo día. Sigue respondiendo, pero Apple dirige a los servidores a la App Store Server API. Get Transaction Info devuelve una transacción firmada, Get Transaction History devuelve el historial de un cliente y Get Refund History enumera todas las compras reembolsadas de un cliente. Junto con las notificaciones V2, cubren lo que la mayoría de los servidores hacía con los recibos, incluido el campo cancellation_date que antes marcaba un reembolso en un recibo.
RefundHalt se conecta a App Store Server Notifications V2 y responde a cada CONSUMPTION_REQUEST dentro del plazo de 12 horas, usando el uso que tu app ya registra. Si sigues en V1, el cambio es el paso que hace posible todo eso.
Preguntas frecuentes
- ¿Se va a desactivar App Store Server Notifications V1?
- Todavía no. Apple declaró obsoletos V1 y verifyReceipt el 5 de junio de 2023, y ambos siguen funcionando. Apple ha dicho que aún no hay fecha de retirada y que avisará a los desarrolladores con antelación. Mientras tanto, V1 no recibe funciones nuevas.
- ¿Recibo notificaciones CONSUMPTION_REQUEST en V1?
- Solo para consumibles, según la documentación de V1 de Apple. Las solicitudes de consumo para suscripciones con renovación automática se añadieron a V2 en abril de 2024, y Apple las envía a tu endpoint V2. Si vendes suscripciones y te quedas en V1, no puedes responder a esas solicitudes de reembolso.
- ¿Cómo se ve un reembolso de suscripción en V1 frente a V2?
- En V1 llega como CANCEL, a menudo con DID_CHANGE_RENEWAL_STATUS. En V2 llega como REFUND, con revocationDate y revocationReason en la transacción firmada. V2 también envía REFUND_DECLINED cuando Apple rechaza un reembolso iniciado en tu app y REFUND_REVERSED cuando Apple revierte un reembolso que había concedido.
- ¿Qué pasa con las notificaciones cuando cambio de V1 a V2?
- Las notificaciones nuevas llegan en formato V2 poco después del cambio, para todas las suscripciones. Las notificaciones V1 que ya se están reintentando siguen llegando en formato V1 hasta que se entregan o agotan sus reintentos, algo que Apple sitúa en unas 78 horas después del cambio. Mantén ambos manejadores funcionando durante ese periodo.
- ¿Puedo volver a V1 después de cambiar a V2?
- Sí, mediante el endpoint Modify an App de la App Store Connect API, como describe la nota técnica TN3180 de Apple. Apple lo considera un caso poco habitual y sigue marcando V1 como obsoleta, así que volver atrás implica renunciar a las solicitudes de consumo de suscripciones y a las notificaciones de reembolso más recientes.
Fuentes y lecturas adicionales
- Apple Developer Documentation: App Store Server Notifications changelog
- Apple Developer Documentation: notification_type (Version 1)
- Apple Developer Documentation: notificationType (Version 2)
- Apple Developer Documentation: Responding to App Store Server Notifications
- Apple Developer Documentation: Send Consumption Information V1
- Apple Developer Documentation: App Store Receipts (verifyReceipt deprecated)
- Apple Developer Documentation: TN3180, Reverting to App Store Server Notifications V1
- App Store Connect Help: Enter server URLs for App Store Server Notifications
- Apple Developer Forums: When will the verifyReceipt API be deprecated? (Apple staff reply, June 2023)
- Apple Developer Forums: Switching App Store Server Notifications from V1 to V2 (Apple staff reply, December 2025)
- Apple Developer: Auto-renewable subscriptions (net revenue after one year of paid service)
RefundHalt
El piloto automático de reembolsos para App Store y Google Play
Seguir leyendo
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.
La política de reembolso de tu app no puede imponerse a Apple ni a Google, así que escribe la que refleja lo que realmente ocurre
Una política de reembolso de una app solo te obliga donde tú emites los reembolsos. Apple reembolsa ella misma cada compra del App Store, mientras que Google Play te pasa los reembolsos a ti después de 48 horas. Esto es lo que dice cada acuerdo, lo que cuesta una promesa descuidada y las cláusulas que vale la pena escribir.