El ROAS de tu app sigue contando las compras que Apple y Google reembolsaron, así que puja por ROAS neto
Los reembolsos rara vez vuelven a las plataformas de anuncios, así que el ROAS sigue atribuyendo compras que Apple y Google ya devolvieron. Aquí verás dónde pierden los reembolsos Firebase, Google Ads y AdAttributionKit, cuánto cuesta y cómo calcular el ROAS neto de una app.

Puntos clave
- El evento app_store_refund que Firebase recopila automáticamente solo se activa cuando Google Play reembolsa una compra dentro de la app. Google lo marca como exclusivo de Android, así que los reembolsos del App Store nunca reducen los ingresos de in_app_purchase que Firebase registró.
- Google Ads registra automáticamente las compras dentro de la app de Google Play en apps Android e informa el valor de la compra como valor de conversión. En las suscripciones, solo registra la primera compra y el valor del primer pago.
- Los ajustes de conversión de Google Ads pueden corregir el valor de una conversión o retirarla a cero, y Google indica que las conversiones online solo se pueden ajustar si se enviaron con un ID de transacción.
- AdAttributionKit de Apple tiene tres ventanas de conversión tras el primer inicio, días 0 a 2, 3 a 7 y 8 a 35, y el valor de conversión detallado solo aparece en el primer postback.
- El ROAS neto son los ingresos atribuidos a anuncios menos los reembolsos de esas compras, divididos entre el gasto publicitario. Una campaña con mayor ROAS bruto puede quedar por debajo en ROAS neto si sus compradores piden más reembolsos.
- Las señales de reembolso llegan al servidor del desarrollador, no a la red publicitaria. Apple envía una App Store Server Notification de tipo REFUND, y Google Play informa de las anulaciones mediante notificaciones para desarrolladores en tiempo real y la Voided Purchases API, que cubre los últimos 30 días.
- Solo dos flujos de reembolso permiten al desarrollador aportar pruebas: el CONSUMPTION_REQUEST de Apple, que se responde en 12 horas, y la revisión de contracargos de Google Play mediante orders.reviewrefund, que se responde en 24 horas.
Los paneles de anuncios registran una compra dentro de la app en el momento en que ocurre, y la mayoría nunca la revierte. Cuando Apple o Google reembolsan después esa compra, el dinero sale de tu pago pero sigue en los ingresos de la campaña, así que el ROAS sigue atribuyendo el mérito al anuncio que la vendió. El ROAS neto, ingresos después de reembolsos divididos entre el gasto publicitario, es la cifra que te dice qué campañas rindieron de verdad. Tienes que calcularlo tú, porque la señal de reembolso llega a tu servidor, no a la red publicitaria.
Por qué el ROAS infla los ingresos cuando se dejan fuera los reembolsos
El ROAS divide los ingresos atribuidos entre el gasto publicitario. Los ingresos suelen registrarse una sola vez, en el momento de la compra, mediante un SDK en el dispositivo o una importación de conversiones desde la tienda. Un reembolso es un evento posterior que ocurre fuera del dispositivo, entre el cliente y Apple o Google. Si nada lo devuelve a la misma campaña, la compra sigue contando.
Eso no tendría importancia si los reembolsos fueran raros y estuvieran repartidos por igual. Normalmente no lo están. Una creatividad que promete más de lo que la app ofrece, una oferta mostrada al público equivocado o una fuente de tráfico llena de tarjetas robadas concentran los reembolsos en campañas concretas. El ROAS bruto oculta justo esa diferencia.
¿Qué es el ROAS neto?
El ROAS neto es el mismo cociente con los reembolsos restados de la línea superior: ingresos atribuidos a una campaña, menos los reembolsos de esas mismas compras, divididos entre lo que costó la campaña. Algunos equipos también restan la comisión de la tienda y los impuestos. Restes lo que restes, los reembolsos son la parte que cambia qué campaña gana.
Dónde se pierden los reembolsos entre la tienda y tu panel de anuncios
Firebase registra los reembolsos de Google Play, no los del App Store
La lista de eventos recopilados automáticamente de Google incluye in_app_purchase, que se activa cuando un usuario completa una compra dentro de la app, incluida una suscripción inicial, procesada por el App Store de Apple o Google Play. Su equivalente de reembolso, app_store_refund, se activa cuando Google Play reembolsa una compra dentro de la app, y Google lo marca como exclusivo de Android. Ni app_store_refund ni los eventos automáticos de suscripción se exportan a BigQuery.
La misma página indica que Analytics no mide automáticamente los ingresos ni los reembolsos de las apps de pago, y que los ingresos informados pueden diferir de los de Google Play Developer Console. En iOS, nada resta automáticamente un reembolso del App Store de una compra que Firebase ya registró.
Google Ads registra el valor de la compra como valor de conversión
En las apps Android que usan facturación integrada, Google Ads puede registrar las compras dentro de la app de quienes hicieron clic en tu anuncio, sin código en la app. Google indica que el valor de la compra se informa automáticamente como valor de conversión. En las suscripciones, solo se registra la primera compra como conversión, y solo se registra el valor del primer pago. El artículo de ayuda no menciona los reembolsos.
Google Ads sí tiene una herramienta de corrección. Los ajustes de conversión te permiten corregir el valor de una conversión sin cambiar el recuento, o retirarla, lo que fija su valor en 0.00 y afecta a las estrategias de puja por CPA y por ROAS. Google indica que las conversiones online solo se pueden ajustar si usaste un ID de transacción, y que una conversión retirada no se puede volver a ajustar. Esa página no menciona las conversiones de apps, así que confirma que tu configuración de conversiones admite ajustes antes de apoyarte en ellos.
Los postbacks publicitarios de Apple se cierran antes de que lleguen muchos reembolsos
AdAttributionKit tiene tres ventanas de conversión que empiezan cuando el usuario abre la app por primera vez: días 0 a 2, días 3 a 7 y días 8 a 35. La app puede actualizar su valor de conversión hasta que termina cada ventana. Después, Apple envía el postback tras un retraso aleatorio, de 24 a 48 horas para el primero y de 24 a 144 horas para el segundo y el tercero. Si la app bloquea un valor antes de tiempo, el sistema ignora las actualizaciones posteriores en esa ventana.
El valor de conversión detallado solo aparece en el primer postback. Los posteriores llevan, como mucho, un valor aproximado. Una compra del día 1 que Apple reembolsa el día 10 ya se informó en un postback que no puede cambiar.
| Superficie de medición | Qué registra en la compra | Qué pasa cuando la compra se reembolsa |
|---|---|---|
| Firebase in_app_purchase, Android e iOS | ID de producto, precio, valor, moneda, cantidad | Android: se activa app_store_refund. iOS: no hay evento automático de reembolso |
| Google Ads, conversiones de Google Play, Android | El valor de la compra como valor de conversión, solo el primer pago en suscripciones | No se describe. Los ajustes pueden corregir o retirar conversiones online enviadas con un ID de transacción |
| Postbacks de AdAttributionKit, iOS | Un valor de conversión por ventana, detallado solo en el primero | Fijo una vez que se prepara el postback de esa ventana |
| Tu propio servidor | Cada transacción, vinculada a tu ID de usuario | Notificación REFUND de Apple, señales de compras anuladas de Google Play |
Cuándo llegan los reembolsos de apps y quién los decide
Los reembolsos no siguen un único calendario. Algunos llegan horas después de la compra y otros meses más tarde, por eso el ROAS de una cohorte sigue bajando cuando el informe de la campaña ya parecía definitivo.
| Vía de reembolso | Plazo, en palabras de la propia tienda | Quién decide | Señal en tu servidor |
|---|---|---|---|
| Solicitud de reembolso en Google Play | En las primeras 48 horas, el cliente lo pide a Google. Después, Google lo remite al desarrollador | Google, luego tú | Compra anulada mediante RTDN y la Voided Purchases API |
| Reembolso del desarrollador en Google Play | Cuando lo emitas | Tú | Compra anulada, si revocas el acceso |
| Denuncia de cargo no autorizado en Google Play | Dentro de los 120 días posteriores a la transacción | Compra anulada | |
| Reembolso de Apple | Se solicita en reportaproblem.apple.com, respuesta en 24 a 48 horas | Apple | Notificación REFUND con revocationReason |
| Solicitud de consumo de Apple | Respondes en 12 horas | Apple, con tus datos | CONSUMPTION_REQUEST |
| Revisión de contracargos de Google Play | Respondes en 24 horas mediante orders.reviewrefund | El banco, tras revisar tus pruebas | Compra anulada si el contracargo se mantiene |
Cuánto dinero cuesta un ROAS que ignora los reembolsos
Toma dos campañas con el mismo presupuesto. Las cifras de abajo son un ejemplo, no una referencia del sector.
| Concepto | Campaña A | Campaña B |
|---|---|---|
| Gasto publicitario | $10,000 | $10,000 |
| Ingresos por compras atribuidas | $14,000 | $12,500 |
| ROAS bruto | 1.40 | 1.25 |
| Parte reembolsada de esos ingresos | 18% | 4% |
| Ingresos después de reembolsos | $11,480 | $12,000 |
| ROAS neto | 1.15 | 1.20 |
El ROAS bruto te dice que pases dinero a A. El ROAS neto dice que B conservó más de cada dólar. Si tu puja funciona con el valor bruto, el algoritmo sigue buscando más compradores como los de A, porque nada le dice nunca que pidieron que les devolvieran el dinero.
El gasto publicitario es solo la primera factura. Un cliente reembolsado también deja esto atrás:
- Pagos a terceros. Los acuerdos con afiliados, creadores e influencers que pagan por compra suelen pagar sobre la venta, no sobre la venta menos los reembolsos, salvo que el contrato diga lo contrario.
- Cómputo, llamadas a API y almacenamiento. Un usuario reembolsado usó tus servidores, tus API de pago de terceros y tu almacenamiento hasta que se le revocó el acceso. Esas facturas no se reembolsan.
- Costes de contracargos. Desde el 3 de agosto de 2026, Google traslada al desarrollador el precio de la compra con contracargo más las comisiones bancarias, así que una fuente de tráfico Android con muchas disputas cuesta más que los ingresos que pierde.
- Peor segmentación. La puja basada en valor entrenada con compras reembolsadas sale a buscar más personas parecidas a las que recuperaron su dinero.

¿Una tasa de reembolsos alta en una campaña es fraude o una promesa incumplida?
A menudo es la promesa. El revocationReason de Apple te dice de qué lado cayó un reembolso. Un 0 significa que el App Store reembolsó la transacción por otros motivos, por ejemplo una compra accidental. Un 1 significa que la reembolsó por un problema real o percibido dentro de tu app. Una acumulación de 1 en una campaña suele apuntar a la creatividad del anuncio o al onboarding al que lleva. Una acumulación de denuncias de cargos no autorizados en Google Play apunta a la fuente de tráfico.
Cómo calcular el ROAS neto de una app
No necesitas una herramienta nueva para empezar. Necesitas unos cuantos cruces que tus datos probablemente aún no hacen.
- Guarda la campaña en el usuario. Almacena el resultado de atribución junto a tu propio ID de usuario en la instalación, para que cualquier transacción posterior se pueda rastrear hasta una campaña.
- Guarda la transacción en el usuario. Define un appAccountToken en las compras de iOS y un ID de cuenta ofuscado en las compras de Google Play, para que cada evento de la tienda se asocie a tu usuario sin adivinar.
- Escucha los reembolsos en el servidor. Procesa la notificación REFUND de Apple desde App Store Server Notifications V2 y las notificaciones de compras anuladas de Google Play. Consulta la Voided Purchases API como respaldo, ya que solo devuelve anulaciones de los últimos 30 días.
- Informa del bruto y el neto lado a lado, por cohorte de compra. Imputa cada reembolso a la campaña y la fecha de compra que lo generaron, no al día en que apareció el reembolso.
- Envía correcciones donde la plataforma las acepte. Si tus conversiones de Google Ads llevan un ID de transacción, corrige o retira las reembolsadas. Donde una plataforma no admita correcciones, mueve su presupuesto según las cifras netas.
- Responde a tiempo las dos solicitudes de pruebas. RefundHalt responde el CONSUMPTION_REQUEST de Apple dentro del plazo de 12 horas y la revisión de contracargos de Google Play dentro de 24 horas, para que los reembolsos que puedes impugnar reciban tu versión de los hechos.
¿Los reembolsos deben contar en la fecha de compra o en la de reembolso?
Para decidir sobre campañas, en la fecha de compra. Un reembolso es un hecho sobre una compra, y la compra pertenece a una campaña. Finanzas lo registra en la fecha del reembolso, por eso tu informe de ROAS y tu pago no coincidirán en ningún día concreto. Mantén ambas vistas y etiquétalas.
¿Cuándo es definitivo el ROAS neto de una cohorte?
Se asienta por etapas. La ventana de reembolso de autoservicio de Google se cierra a las 48 horas, Apple indica a los clientes que esperen una respuesta a su solicitud de reembolso en 24 a 48 horas, y una denuncia de cargo no autorizado en Google Play puede llegar dentro de los 120 días posteriores a la transacción. Trata las primeras cifras como provisionales y vuelve a revisar la misma cohorte más adelante.
Preguntas frecuentes
- ¿Firebase resta los reembolsos de los ingresos por compras dentro de la app?
- Solo en Google Play. El evento app_store_refund que Firebase recopila automáticamente se activa cuando Google Play reembolsa una compra dentro de la app, y Google lo marca como exclusivo de Android. No hay un equivalente automático para los reembolsos del App Store, y Google indica que Analytics no mide automáticamente los ingresos ni los reembolsos de las apps de pago.
- ¿Google Ads elimina de las conversiones las compras dentro de la app reembolsadas?
- El propio artículo de Google sobre las conversiones de Google Play no dice que lo haga. Indica que el valor de la compra se informa como valor de conversión y no menciona los reembolsos. Los ajustes de conversión de Google Ads pueden corregir o retirar una conversión, y Google indica que las conversiones online solo se pueden ajustar si se enviaron con un ID de transacción.
- ¿Pueden los postbacks de AdAttributionKit reflejar un reembolso?
- Solo si el reembolso ocurre antes de que se prepare el postback de esa ventana de conversión. Las ventanas cubren los días 0 a 2, 3 a 7 y 8 a 35 tras el primer inicio, y cuando una ventana termina o el valor se bloquea, Apple ignora las actualizaciones posteriores en esa ventana.
- ¿Cómo calculo el ROAS neto de una app?
- Toma los ingresos atribuidos a una campaña, resta los reembolsos de esas mismas compras y divide entre el gasto publicitario de la campaña. Imputa cada reembolso a la cohorte de compra que lo generó, usando la notificación REFUND de Apple y las señales de compras anuladas de Google Play como registro de reembolsos.
- ¿Puedo impugnar los reembolsos que bajan mi ROAS?
- Solo de dos tipos. El CONSUMPTION_REQUEST de Apple te permite enviar datos de consumo en 12 horas, y la revisión de contracargos de Google Play mediante orders.reviewrefund te da 24 horas. Los reembolsos de Google Play en 48 horas, los reembolsos de soporte y las compras anuladas se deciden sin ti, y los contracargos bancarios son definitivos.
Fuentes y lecturas adicionales
- Firebase Help: [GA4] Automatically collected events
- Google Ads Help: Measure app conversions with Google Play
- Google Ads Help: About conversion adjustments
- Apple Developer Documentation: Receiving postbacks in multiple conversion windows
- Apple Developer Documentation: notificationType
- Apple Developer Documentation: revocationReason
- Google Play Developer API: Voided Purchases API
- Google Play Help: Apps, games, and in-app purchases refund policies
- Google Play Help: Learn about Google Play refund policies
- Apple Support: Request a refund for apps or content that you bought from Apple
RefundHalt
El piloto automático de reembolsos para App Store y Google Play
Seguir leyendo
El order ID del recibo del App Store te dice qué compró el cliente y si Apple ya se lo reembolsó
El endpoint Look Up Order ID de Apple convierte el order ID del recibo del App Store de un cliente en transacciones firmadas, con fechas y motivos de reembolso. Cómo usarlo ante correos de reembolso, qué no puede hacer y cómo se compara con el order ID de Google Play.
Los reembolsos del pago web en iOS ahora te llegan a ti y no a Apple, y las disputas bancarias también
Las apps de iPhone en EE. UU. ya pueden enviar a los compradores a un pago web. Apple dice que no puede ayudar con los reembolsos de esas ventas, así que la atención de reembolsos, los contracargos y las comisiones de disputa de $15 pasan a ser cosa tuya. Esto es lo que cambia, lo que cuesta y cómo mantener las disputas bajas.