Todos los artículos
Playbook8 min de lectura

El abuso reiterado de reembolsos te cuesta dos veces, así es como las tiendas te dejan defenderte

El cliente que reembolsa una y otra vez no es un accidente. El abuso de reembolsos te cuesta el dinero devuelto más el cómputo que ya gastaste, y ambas tiendas te entregan una señal de identidad, el appAccountToken de Apple y el ID de cuenta ofuscado de Google, para unir el patrón.

Un torniquete en un vestíbulo de tránsito en penumbra con una figura que lo cruza una y otra vez, ilustrando el abuso reiterado de reembolsos

Puntos clave

  • Solo dos flujos de reembolso permiten a un desarrollador presentar pruebas contra el abuso de reembolsos: el CONSUMPTION_REQUEST de Apple, con una ventana de 12 horas, y la revisión de contracargos de Google Play mediante la Review Refund API, con una ventana de 24 horas.
  • El appAccountToken de Apple es un UUID que tú generas y adjuntas a una compra, y StoreKit lo vincula a la transacción resultante, de modo que tu servidor puede rastrear cada reembolso hasta la cuenta exacta que lo hizo.
  • El ID de cuenta ofuscado de Google Play es una cadena con hash, limitada a 64 caracteres, que la propia Google usa para detectar actividad irregular, como muchos dispositivos comprando en una sola cuenta en un lapso breve.
  • Guardar datos personales en texto plano en el ID de cuenta ofuscado de Google hace que se bloqueen tus compras, así que el campo debe ser un valor cifrado o un hash de un solo sentido, nunca un correo electrónico sin procesar.
  • El campo voidedReason de Google Play marca friendly_fraud y fraud como motivos distintos de un reembolso ordinario de tipo remorse, lo que te permite enviar a los abusadores reincidentes a una cola de revisión en lugar de una ruta automática de reembolsar y olvidar.
  • Google dice que bloqueó más de 2000 millones de dólares en transacciones fraudulentas y abusivas en 2022, y los campos de identidad que alimentan ese sistema solo funcionan si los rellenas en cada compra.
  • Cada compra reembolsada que conserva su acceso es cómputo, almacenamiento y gasto de API que sigues pagando sobre un dinero que ya devolviste, y un reembolsador reincidente multiplica esa factura a propósito.

Un solo reembolso es un costo de hacer negocios. La misma cuenta reembolsando por cuarta vez, después de usar lo que compró cada vez, es abuso de reembolsos, y es un patrón que solo puedes ver si cada compra lleva una identidad que tú controlas. Apple y Google te dan esa identidad, y ambos te dan una ventana estrecha para ponerla delante de la tienda antes de que se decida un reembolso o un contracargo. Pierde la ventana, o nunca adjuntes la identidad, y un reembolsador reincidente se ve exactamente igual que un cliente descontento por primera vez. Aquí te explicamos cómo distinguirlos, y cuánto vale esa diferencia en dinero.

Por qué el abuso de reembolsos es un problema de identidad, no de reembolsos

La tienda decide el reembolso. No puedes impedir que un cliente lo pida, y en la mayoría de los flujos no puedes impedir que la tienda lo conceda. Lo que sí puedes hacer es decidir si una cuenta determinada ya hizo esto antes, y si el contenido que compró fue realmente entregado y usado. Ambas son preguntas sobre identidad: cuál de tus usuarios está detrás de esta transacción, y cuál es su historial. Si tus compras no llevan un identificador estable de vuelta a tus propios registros de usuario, no puedes responder ninguna de las dos, y cada reembolso llega sin contexto.

Esa es la verdadera brecha. La mecánica del reembolso está fijada por la política. Las pruebas que aportas son enteramente tuyas para construir, y empiezan en el momento de la compra, no en el momento del reembolso.

Las dos ventanas donde las pruebas cambian el resultado

Hay exactamente dos flujos donde algo que envías puede mover una decisión. El CONSUMPTION_REQUEST de Apple se dispara cuando un cliente pide un reembolso de un consumible o una suscripción de renovación automática, y tienes 12 horas para responder. La revisión de contracargos de Google Play se dispara cuando un usuario disputa un cargo con su banco, y tienes 24 horas para responder mediante la Review Refund API. Cualquier otro reembolso, el reembolso de autoservicio de 48 horas de Play, un reembolso concedido por soporte, un reembolso automático por compra no reconocida, se decide sin ti.

Ambos canales de prueba son mucho más sólidos cuando la transacción ya lleva tu identificador. La información de consumo de Apple puede incluir el appAccountToken junto con el historial y el gasto de la cuenta, y la revisión de Google puede apoyarse en el ID de cuenta ofuscado que ha estado observando desde la compra. Una cuenta sin identificador es una cuenta sin historial que presentar.

Los dos campos de identidad, uno al lado del otro

Apple y Google resolvieron el mismo problema casi de la misma manera, con nombres distintos y reglas distintas. Ambos te permiten estampar una compra con un valor que apunta de vuelta a tu propio registro de usuario. Ninguno está activo por defecto. Ambos son inútiles si no los estableces en el momento de la compra.

Apple: appAccountToken

appAccountToken es un UUID que generas y pasas cuando comienza una compra. StoreKit lo asocia con la transacción resultante, y aparece en los datos de la transacción que tu servidor verifica y en la información de consumo que devuelves durante un CONSUMPTION_REQUEST. Como es tu valor, mapea una transacción de la tienda directamente sobre la cuenta en tu base de datos, sin correo electrónico ni nombre de por medio. Tiene que ser un UUID real, y cualquier otra cosa se rechaza. Apple luego añadió un endpoint Set App Account Token que puede adjuntar o actualizar el token en transacciones pasadas, incluidas compras hechas fuera de tu app, como canjes de códigos de oferta.

Google Play: el ID de cuenta ofuscado

El equivalente de Google es setObfuscatedAccountId, una cadena opcional vinculada a la cuenta compradora. La propia documentación de Google es tajante sobre su propósito: Google Play lo usa para detectar actividad irregular, como muchos dispositivos haciendo compras en la misma cuenta en un lapso breve, y para bloquear algunas transacciones fraudulentas antes de que se completen. Está limitada a 64 caracteres, y no debe llevar datos personales en texto plano. Guarda ahí un correo electrónico sin procesar y Google bloquea la compra directamente, porque el campo espera un valor cifrado o un hash de un solo sentido. Un campo hermano, setObfuscatedProfileId, existe para apps donde una cuenta contiene varios perfiles.

CampoTiendaTipo y límiteEstablecido porPredeterminadoQué hace la tienda con él
appAccountTokenAppleUUIDTú, en la compraSin establecerVincula la transacción a tu usuario, se devuelve en los datos de transacción y de consumo
obfuscatedAccountIdGoogle PlayCadena con hash, máx. 64 caracteresTú, en la compraSin establecerDetecta actividad irregular y bloquea algún fraude antes de completarse

Cuánto cuesta realmente un reembolso de un abusador reincidente

El reembolso en sí es la parte más pequeña de la factura. Cuando una tienda concede un reembolso, devuelves los ingresos, y eso es lo visible en el libro de cuentas. Lo que no está en la línea del reembolso es todo lo que gastaste entregando el producto que ahora es gratis.

Imagina un consumible que desencadena trabajo real: una generación de imágenes, un lote de llamadas a la API de un proveedor de modelos, una exportación de video, un pago a un creador. Pagaste ese cómputo en el momento en que el cliente lo usó. El reembolso recupera el precio, pero no recupera la factura del proveedor. Un reembolsador reincidente es alguien que ha aprendido que el contenido sobrevive al reembolso, así que repite el bucle: compra, consume, reembolsa, repite. En cada ciclo, asumes el costo de entrega por segunda vez.

Luego está el propio traspaso de costos de la tienda. A partir del 3 de agosto de 2026, Google Play traslada el precio de compra y las comisiones de contracargo del banco al desarrollador para los pedidos realizados después de esa fecha. Un contracargo que antes era mayormente problema de Google se convierte en tus ingresos más una comisión, y un cargador reincidente aumenta esa cifra cada vez. Los campos de identidad son lo que te permite alimentar la Review Refund API con las pruebas para impugnar una disputa ilegítima dentro de la ventana de 24 horas.

Google plantea la escala sin rodeos: dice que bloqueó más de 2000 millones de dólares en transacciones fraudulentas y abusivas en 2022. Ese número existe porque las señales, el ID de cuenta ofuscado entre ellas, estaban rellenas. Una app que envía compras con campos de identidad vacíos renuncia a esa protección.

Una huella dactilar leída en un sensor de vidrio iluminado, que ilustra cómo los campos de identidad de la tienda vinculan una compra con la cuenta detrás del abuso de reembolsos

Cómo atrapar a los reembolsadores reincidentes antes de que la tienda decida

Etiqueta cada compra con una identidad que sea tuya

Establece appAccountToken en cada compra de StoreKit y setObfuscatedAccountId en cada compra de Play Billing, ambos generados a partir de tu propio registro de usuario. En Apple, usa un UUID real mapeado a la cuenta. En Google, aplica hash a la clave de la cuenta para que ningún dato personal viaje en texto plano. Hazlo en el momento de la compra, porque en Google es el único paso que no puedes recuperar después.

Mantén un libro de cuentas con clave en esa identidad

Guarda cada compra, entrega, evento de consumo y reembolso contra el identificador. Cuando llega un CONSUMPTION_REQUEST o una revisión de contracargo, el historial completo de la cuenta, reembolsos previos incluidos, está a una sola consulta de distancia. La información de consumo de Apple tiene campos explícitos justo para esto: consumptionStatus, deliveryStatus, playTime, accountTenure, lifetimeDollarsPurchased, y tu refundPreference.

Lee voidedReason y enruta a los abusadores de forma distinta

Cuando una compra de Google se anula, el campo voidedReason te dice por qué, y friendly_fraud y fraud son valores separados de un reembolso ordinario de tipo remorse. Enruta esos a una cola de revisión y a una política más estricta, no a la misma ruta automática que un reembolso por primera vez. La propia guía de Google es un modelo de varias advertencias: advierte a un primer infractor, toma medidas más firmes con los reincidentes, y desactiva las compras para una cuenta que insiste.

Responde a la ventana siempre

Las pruebas solo cuentan dentro de las dos ventanas. Automatiza la respuesta del CONSUMPTION_REQUEST para que se dispare bien dentro de las 12 horas, y la revisión de contracargo para que se dispare dentro de las 24. Un historial perfecto que envías tarde es un historial que la tienda nunca lee.

Señal que quieres detectarDónde viveEl campo o flujo que la revela
Misma cuenta, muchos dispositivos, lapso breveGoogle PlayDetección de actividad irregular del ID de cuenta ofuscado
Esta cuenta ya ha reembolsado antesTu libro de cuentasHistorial con clave en appAccountToken o el ID de cuenta ofuscado
El contenido fue entregado y consumidoAppledeliveryStatus y consumptionStatus en la info de consumo
Una disputa es en realidad fraude de origenGoogle PlayValor friendly_fraud de voidedReason

Qué harán y qué no harán las tiendas por ti

Vale la pena ser preciso sobre la división del trabajo, porque es fácil suponer que las tiendas se ocupan del abuso, y en su mayoría no te avisan cuando no lo hacen. Google usa activamente el ID de cuenta ofuscado para bloquear algún fraude antes de que se complete una compra, y sus sistemas atrapan una gran parte a nivel de plataforma. Apple decide cada reembolso por sí misma y trata tu información de consumo como una entrada, nunca un voto. Ninguna tienda mantiene tu lista de abusadores por ti, deduce un consumible reembolsado de tu saldo, ni le dice que no a un reembolsador reincidente en tu nombre. La identidad es de la tienda para actuar en los márgenes y tuya para actuar en todo lo demás.

Esta es la misma razón por la que RefundHalt basa todo en la identidad de la compra: un reembolso, una revisión de contracargo y una solicitud de consumo para la misma cuenta se resuelven en un solo historial, de modo que un reembolsador reincidente aparece como un patrón la primera vez que repite, no después de la cuarta factura que ya pagaste.

Preguntas frecuentes

¿Qué es el abuso de reembolsos en una app?
El abuso de reembolsos es un cliente que pide reembolsos repetidamente después de recibir y usar lo que compró, de modo que conserva el contenido o el beneficio mientras recupera el dinero. En las tiendas de apps suele aparecer como la misma cuenta reembolsando consumibles o suscripciones una y otra vez, o como friendly fraud, donde un cargo legítimo se disputa con el banco.
¿Cómo vinculo una compra dentro de la app a un usuario específico?
En Apple, genera un UUID y pásalo como appAccountToken cuando comienza la compra, y StoreKit lo vincula a la transacción y lo devuelve en los datos de transacción y consumo. En Google Play, llama a setObfuscatedAccountId con un valor con hash vinculado a la cuenta. Ambos mapean una transacción de la tienda a tu propio registro de usuario sin exponer datos personales.
¿Pueden Apple o Google decirme que una cuenta es un reembolsador reincidente?
No directamente. Google usa el ID de cuenta ofuscado para detectar actividad irregular y bloquear algún fraude antes de la compra, y Apple te permite enviar el historial de la cuenta durante una solicitud de consumo, pero ninguna tienda te entrega una lista de reembolsadores reincidentes. Eso lo construyes tú mismo a partir de tu propio libro de cuentas con clave en los campos de identidad.
¿Por qué Google bloquea mi compra cuando establezco el ID de cuenta?
Porque el ID de cuenta ofuscado no debe contener datos personales en texto plano. Guardar algo como una dirección de correo electrónico sin procesar en él hace que Google Play bloquee la compra. Usa un valor cifrado o un hash de un solo sentido, y mantenlo dentro del límite de 64 caracteres.
¿Impugnar reembolsos mediante la solicitud de consumo detiene el abuso?
Puede reducirlo. El CONSUMPTION_REQUEST es uno de solo dos flujos donde tus pruebas llegan a la tienda antes de que decida, y el historial de la cuenta más los datos de entrega y consumo ayudan a Apple a identificar el abuso de devoluciones y el friendly fraud. Sin embargo, no es un bloqueo. Apple sigue decidiendo, y el abuso que llega por flujos no impugnables no se ve afectado.

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.