Todos los artículos
Playbook7 min de lectura

Si a un cliente le cobran dos veces la misma suscripción, casi siempre pagó en dos plataformas, y solo uno de esos reembolsos te toca a ti

Cuando a un cliente le cobran dos veces la misma suscripción, lo normal es que haya comprado un plan en el App Store y otro en Google Play o en tu web. Te explicamos quién puede reembolsar cada cargo, cuánto te cuesta y cómo evitar el segundo cobro.

Un iPhone y un teléfono Android uno junto al otro sobre un escritorio, al lado de un extracto bancario con dos cargos idénticos, que muestran a un cliente al que le cobraron dos veces la misma suscripción

Puntos clave

  • Un cliente al que le cobran dos veces la misma suscripción casi siempre la compró en dos tiendas distintas, como el App Store y Google Play, y cada tienda cobra y reembolsa su propia compra por separado.
  • Los desarrolladores no pueden reembolsar compras del App Store. Decide Apple, ya sea a través de reportaproblem.apple.com o de la hoja de reembolso que una app puede abrir con beginRefundRequest de StoreKit, y Apple indica que tarda hasta 48 horas en aprobar o rechazar la solicitud.
  • En Google Play, el desarrollador puede reembolsar un pedido desde Order management en Play Console o con la API orders.refund, que no permite reembolsar pedidos de más de 3 años.
  • Reembolsar el pedido más reciente de una suscripción de Google Play elimina la suscripción de inmediato y cancela las renovaciones futuras. Reembolsar un pedido anterior deja la suscripción activa.
  • Apple envía un CONSUMPTION_REQUEST ante solicitudes de reembolso de cualquier tipo de producto, incluidas las suscripciones de renovación automática, y el desarrollador tiene 12 horas para responder con Send Consumption Information si el cliente dio su consentimiento.
  • En los pedidos de Google Play realizados después del 3 de agosto de 2026, un contracargo le cuesta al desarrollador el precio de compra, menos la comisión de servicio de Play, más la comisión de contracargo del banco.
  • Asignar un appAccountToken a las compras de Apple y un ID de cuenta ofuscado a las de Google Play permite que tu servidor vea a un mismo cliente detrás de dos suscripciones antes de que llegue el segundo cobro.

Nada en los sistemas de facturación de Apple o de Google impide que una persona les pague a ambos por tu suscripción en el mismo mes. Cuando a un cliente le cobran dos veces la misma suscripción, eso es casi siempre lo que pasó. Se suscribió en un iPhone, luego otra vez en una tablet Android o en tu web, y tu app no reconoció el primer plan. El cliente ve dos cargos y te escribe. El problema es que solo puedes reembolsar uno de ellos por tu cuenta, y solo si no se compró a través de Apple. Así funciona cada lado, esto es lo que te cuesta el duplicado y así te aseguras de que no vuelva a pasar.

Por qué a los clientes les cobran dos veces la misma suscripción

Cada tienda es dueña de su propia compra. Apple cobra la suscripción del App Store, Google cobra la de Google Play y tu procesador de pagos cobra el plan web. Ninguno sabe que los otros existen. Tu servidor es el único lugar donde las dos compras pueden encontrarse, y solo si ambas llevan un ID que las vincule a la misma cuenta.

Los caminos habituales hacia un doble cobro son estos:

  • El cliente cambia de teléfono, de iOS a Android o al revés, y se vuelve a suscribir porque la app nueva le muestra un muro de pago.
  • El cliente se suscribe en tu web, instala la app y no ha iniciado sesión, así que la app le vende además una suscripción de la tienda.
  • El cliente desinstala la app y da por hecho que eso terminó el plan. La ayuda de Google dice que desinstalar una app no cancela su suscripción de Google Play, y un plan del App Store se sigue renovando hasta que se cancela en la cuenta de Apple.

"Está claro que tu app y tu web no se hablan"

Esa es la queja que vas a leer en el correo de soporte, y desde el punto de vista del cliente es justa. Pagó por un solo producto. Que le pidan pagarlo otra vez parece una trampa, aunque haya sido un accidente por ambas partes. La forma más rápida de calmar las cosas es decir con claridad qué compra puedes reembolsar tú y cuál tiene que reclamar ante Apple.

Quién puede reembolsar cada cargo

Aquí es donde fallan la mayoría de las respuestas de soporte. Solo puedes prometer lo que controlas.

Dónde se compró el duplicadoQuién decide el reembolsoCómo deja de renovarse el planTu participación
App StoreSolo Apple, a través de reportaproblem.apple.com o de tu hoja de reembolso en la appEl cliente lo cancela en su cuenta de AppleCONSUMPTION_REQUEST, responde en 12 horas si el cliente dio su consentimiento
Google Play, dentro de las 48 horas posteriores a la compraEl cliente puede pedírselo a Google, o puedes reembolsarlo túReembolsar el último pedido cancela las renovaciones futurasNinguna en el reembolso de autoservicio de Google
Google Play, después de 48 horasTú, desde Play Console o con orders.refundReembolsar el último pedido cancela las renovaciones futurasDecides tú
Tu webTú, a través de tu procesador de pagosLo cancelas tú desde tu ladoDecides tú

¿Puede un desarrollador reembolsar una suscripción del App Store?

No. Apple gestiona todos los reembolsos del App Store. Lo que sí puedes hacer es acortar el camino. beginRefundRequest de StoreKit abre la hoja de reembolso de Apple dentro de tu app, con los datos de la compra y una lista de motivos ya cargados. La documentación de Apple indica que el App Store tarda hasta 48 horas en aprobar o rechazar la solicitud. Fuera de la app, el cliente inicia sesión en reportaproblem.apple.com, elige "Solicitar un reembolso", indica un motivo y selecciona la suscripción.

Reembolsar tú mismo el lado de Google Play

En Google Play mandas tú. En Play Console, abre Order management, selecciona el pedido y reembólsalo. La ayuda de Play Console es concreta sobre las suscripciones: si reembolsas el pedido más reciente, la suscripción se elimina de inmediato y se cancelan las renovaciones futuras. Si reembolsas un pedido anterior, la suscripción sigue activa. Si lo automatizas, la API orders.refund hace lo mismo, acepta un indicador revoke para cortar el acceso en el acto y rechaza pedidos de más de 3 años.

Cuánto te cuesta una suscripción duplicada

El duplicado nunca fue un ingreso que pudieras quedarte. La pregunta de dinero es cuánto más te cuesta además del reembolso.

El caso limpio

Supón que un cliente pagó $9.99 al mes tanto en el App Store como en Google Play durante tres meses antes de darse cuenta. Son $29.97 en cargos duplicados. Si reembolsas tú los tres pedidos de Google Play, devuelves $29.97 y el problema se acaba ese mismo día. Si en cambio el cliente lleva el lado del App Store ante Apple, Apple decide cuánto reembolsar y tú solo te enteras por las notificaciones de tu servidor. En cualquier caso, se devuelven los ingresos de una plataforma por esos tres meses.

El caso caro

La pérdida real llega cuando el cliente se cansa del soporte y llama a su banco. Un contracargo es definitivo una vez que el banco decide. Google Play te da una sola oportunidad de defenderte, una revisión del contracargo que respondes en 24 horas mediante orders.reviewrefund. En los pedidos de Google Play realizados después del 3 de agosto de 2026, un contracargo perdido te cuesta el precio de compra, menos la comisión de servicio de Play, más la comisión de contracargo del banco. Un reembolso de $29.97 que podías emitir en un minuto se convierte en $29.97 más una comisión que no controlas.

Lo que sigues pagando mientras tanto

Mientras los dos planes están activos, tu backend atiende a una sola persona pero ve dos suscripciones. Si cuentas puestos, sincronizas datos o llamas a APIs de terceros de pago por suscripción, puede que estés pagando dos veces por cómputo, almacenamiento y llamadas a APIs para un solo cliente. Fusionar los dos registros pone fin a eso.

Un desarrollador revisa la bandeja de soporte al cliente en un portátil junto a un smartphone mientras resuelve el reembolso de una suscripción duplicada

Cómo gestionar un doble cobro desde soporte

Responde rápido y en un solo mensaje. Cada ida y vuelta adicional aumenta las probabilidades de una disputa bancaria.

  • Busca las dos compras por la cuenta del cliente, no por el correo desde el que escribió.
  • Pregúntale qué plan quiere conservar. Normalmente es el del dispositivo que usa ahora.
  • Si el duplicado está en Google Play o en tu web, reembólsalo tú y dile que ya está hecho.
  • Si el duplicado está en el App Store, envíalo a reportaproblem.apple.com, o al botón de reembolso de tu app si lo tienes, y dile que lo cancele en los ajustes de su cuenta de Apple.
  • Si después Apple envía un CONSUMPTION_REQUEST y el cliente dio su consentimiento, respóndelo en 12 horas con datos de uso precisos. A Apple le resulta fácil aprobar un plan duplicado que nunca se usó.

Cómo evitar el segundo cobro antes de que ocurra

Prevenir sale más barato que cualquier reembolso, y las herramientas ya existen en ambas tiendas.

Vincula cada compra a tu ID de cuenta

En iOS, genera un UUID por cuenta y pásalo como opción de compra appAccountToken. Apple devuelve el mismo valor en la transacción y en la información de renovación de la suscripción. Si una compra se hizo fuera de tu app, el endpoint Set App Account Token te permite asociar o actualizar el token más tarde. En Android, pasa a setObfuscatedAccountId un ID de cuenta con hash de 64 caracteres o menos, nunca datos personales en claro.

Comprueba los derechos de acceso antes de mostrar un muro de pago

Antes de que aparezca el muro de pago, pregúntale a tu propio servidor si la cuenta con sesión iniciada ya tiene un plan activo en cualquier plataforma. Muestra primero un aviso para iniciar sesión, y el muro de pago solo a las cuentas sin plan activo.

Vigila si una cuenta tiene dos planes activos

Ejecuta una comprobación diaria de las cuentas con más de una suscripción activa entre tiendas. Detectarlo en la primera semana significa reembolsar un mes en lugar de tres, y enviar un correo breve en lugar de enfrentarte a un contracargo.

RefundHalt asocia las suscripciones del App Store y de Google Play a tus propios ID de cuenta, así que un cliente que paga dos veces aparece como una sola persona con dos planes antes de que lo detecte su banco.

Preguntas frecuentes

¿Por qué a un cliente le cobraron dos veces la misma suscripción?
Normalmente porque la compró en dos plataformas, como el App Store y Google Play, o en una tienda y en tu web. Cada tienda cobra su propia suscripción y no sabe nada de la otra, así que ambas se renuevan hasta que se cancela una.
¿Puedo reembolsarle a un cliente una suscripción del App Store?
No. Solo Apple puede reembolsar compras del App Store. Puedes abrir la hoja de reembolso de Apple dentro de tu app con beginRefundRequest de StoreKit, o dirigir al cliente a reportaproblem.apple.com. Apple indica que tarda hasta 48 horas en aprobar o rechazar la solicitud.
¿Cómo reembolso una suscripción duplicada de Google Play?
Reembolsa el pedido desde Order management en Play Console, o llama a la API orders.refund. Reembolsar el pedido más reciente elimina la suscripción de inmediato y cancela las renovaciones futuras. La API no puede reembolsar pedidos de más de 3 años.
¿Reembolsar una suscripción también la cancela?
En Google Play, reembolsar el pedido más reciente cancela las renovaciones futuras, pero reembolsar un pedido anterior deja la suscripción activa. En el App Store, el reembolso lo decide Apple y el cliente cancela la suscripción desde su cuenta de Apple.
¿Cómo evito que los usuarios se suscriban dos veces entre iOS y Android?
Asocia tu propio ID de cuenta a cada compra, con appAccountToken en Apple y un ID de cuenta ofuscado en Google Play. Luego comprueba en tu servidor si hay un plan activo en cualquier plataforma antes de mostrar un muro de pago, y pide al usuario que inicie sesión primero.

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.