---
title: "Configurar un plan de compromiso de 12 meses"
description: "Configura la suscripción mensual de Apple con un compromiso de 12 meses en App Store Connect y Adapty, agrégala a un paywall personalizado y pruébala en el sandbox."
---

> **AI agents**: to search Adapty docs faster and with fewer tokens, install the Adapty skills: `npx adapty skills install --yes`

:::important
Para ofrecer un plan de compromiso necesitas una suscripción anual de App Store, un [paywall personalizado](paywalls) y el SDK de Adapty v4.3 o posterior. Los flows no pueden mostrar el plan.
:::

Para que los suscriptores se comprometan con un año completo y paguen mensualmente, añade un [plan de compromiso de 12 meses](app-store-12-month-commitment) a tu producto anual en App Store Connect y en Adapty.

## Antes de empezar \{#before-you-begin\}

Antes de implementar los planes de compromiso, asegúrate de que:

- **Segmenta el mercado correcto**: Los planes de compromiso no están disponibles en Estados Unidos. En Alemania, Israel, Sudáfrica y Türkiye, los suscriptores pueden cancelar con efecto inmediato a través del Soporte de Apple.
- **Segmenta la versión de SO correcta**: Los suscriptores necesitan iOS 26.4 o posterior, o la misma versión de iPadOS, macOS, tvOS o visionOS. Compila tu app con Xcode 26.5 o posterior.
- **Segmenta el rango de precios correcto**: La suma de los 12 pagos mensuales debe estar entre 1x y 1,5x el valor de la suscripción anual por adelantado.
- **Usa el SDK de Adapty v4.3 o posterior**: En versiones de la app con un SDK anterior, los usuarios solo podrán comprar el plan por adelantado.
- **Actualiza el código que lee los IDs de producto**: Los webhooks, integraciones, exportaciones de datos y la API del lado del servidor informan las compras de planes de compromiso como `<product_id>:monthly`. Si tu código procesa IDs de producto, actualiza la lógica antes de la primera compra con plan de compromiso.

## 1. Configuración de App Store Connect \{#1-app-store-connect-configuration\}

1. Abre una suscripción anual en App Store Connect, o [crea una nueva suscripción](app-store-products) con duración de **1 año**.
2. En la sección **Availability**, añade los mismos países en **1 Year Upfront** y en **Monthly with 12-Month Commitment**. Apple solo ofrece facturación por compromiso donde la facturación por adelantado está disponible. Lo inverso no es obligatorio: puedes ofrecer el plan por adelantado en países sin el plan por compromiso.
3. En la sección **Subscription Prices**, establece el precio por adelantado para tu territorio base si la suscripción aún no tiene uno. Apple requiere el precio por adelantado aunque solo muestres el plan por compromiso a los usuarios.
4. Establece el precio mensual para tu territorio base. El precio mensual debe ser entre 1/12 y 1/8 del precio por adelantado. Por ejemplo, con un precio por adelantado de €59,99, el precio mensual puede ser de €5,00 a €7,49.

App Store Connect calcula los precios para el resto de países a partir de los precios de tu territorio base.

Para instrucciones completas, consulta la guía de Apple sobre cómo [ofrecer suscripciones mensuales con un compromiso de 12 meses](https://developer.apple.com/help/app-store-connect/manage-subscriptions/set-availability-for-an-auto-renewable-subscription#offer-monthly-subscriptions-with-12-month-commitment).

## 2. Configuración en Adapty \{#2-adapty-configuration\}

Para mostrar el plan de compromiso en paywalls personalizados, actívalo en el producto anual en Adapty. Si no usas paywalls personalizados, puedes omitir este paso.

1. Abre el producto anual. Si todavía no existe, [créalo y conéctalo](create-product#create-product-and-connect-existing-store-products) a la suscripción que configuraste en App Store Connect. No crees un nuevo producto desde Adapty: eso generaría una suscripción separada sin el plan de compromiso.
2. Abre la pestaña **App Store** y selecciona **Offer monthly payments with a 12-month commitment**.

3. En el pop-up, en la lista **Monthly price, USD**, selecciona el precio a plazos que coincida con App Store Connect. La lista solo contiene puntos de precio de App Store dentro del rango permitido. Este precio es un valor de referencia: Adapty no lo envía a App Store Connect.

## 3. Configura las ofertas \{#3-set-up-offers\}

En App Store Connect, cada plan de facturación tiene sus propias ofertas introductorias, ofertas promocionales, ofertas de recuperación y códigos de oferta. Una oferta para el plan anticipado no se aplica al plan de compromiso.

- **Pruebas gratuitas y otras ofertas introductorias**: En App Store Connect, configura la oferta para el plan de compromiso. Adapty aplica las [ofertas introductorias](app-store-offers#introductory-offers) automáticamente. Cuando finaliza la oferta introductoria, comienza el compromiso de 12 meses del suscriptor.
- **Ofertas promocionales y de recuperación**: Configura las [ofertas promocionales](app-store-offers#promotional-offers) o [de recuperación](app-store-offers#win-back-offers) para el plan de compromiso en App Store Connect. Luego [añade las ofertas en Adapty](create-offer) y establece su **App Store plan** como **Monthly with 12-month commitment**. Una fila de paywall solo muestra las ofertas correspondientes a su propio plan de facturación. Si no usas paywalls personalizados, no es necesario añadir las ofertas en Adapty.
- **Códigos de oferta**: Configura los códigos de oferta para el plan de compromiso en App Store Connect.

## 4. Añadir a un paywall personalizado \{#add-to-a-custom-paywall\}

:::warning
Apple requiere que muestres tanto el precio en cuotas como el total anual antes de la compra.
:::

1. En el paywall personalizado, [añade el producto anual](add-product-to-paywall) y establece su **Billing plan** en **Monthly**. Para vender también el plan anticipado en el mismo paywall, añade el producto anual de nuevo con el plan de facturación **Upfront**.
   - Para ofrecer una oferta anticipada a los usuarios que compran el plan anticipado en su lugar —en una versión anterior del SDK, o donde el plan de compromiso no aplica— selecciónala en **Fallback offer**.
2. En tu app, muestra el precio de `product.subscriptionPricingTerms`. Para los usuarios que pueden comprar el plan de compromiso, el SDK de Adapty devuelve su precio. Para todos los demás, el SDK devuelve el precio del plan anticipado:
   - Para saber qué plan devolvió el SDK, comprueba `product.subscriptionPricingTerms?.billingPlan`. El valor es `.monthly` para el plan de compromiso y `.upFront` para el plan anticipado.
   - Para mostrar el precio por cuota, usa `subscriptionPricingTerms.localizedBillingPrice` y `subscriptionPricingTerms.billingPeriod`.
   - Para mostrar el total anual, usa `subscriptionPricingTerms.commitmentInfo.localizedPrice` y `subscriptionPricingTerms.commitmentInfo.period`. Para el plan de compromiso, `product.localizedPrice` y `product.subscriptionPeriod` devuelven los mismos valores anuales.

Los usuarios no pueden comprar el plan de compromiso en los siguientes casos:

- **Versión de SO o país no compatibles**: el dispositivo Apple del usuario ejecuta una versión del sistema anterior a la 26.4, o el plan no está disponible en su país de App Store. El SDK de Adapty devuelve en su lugar el precio del plan con pago inicial.
- **Suscripción inicial existente**: StoreKit informa de que el usuario ya está suscrito. Para cambiar de plan, los suscriptores utilizan sus ajustes de suscripción de Apple.
- **[Compra in-app promocionada](making-purchases#in-app-purchases-from-the-app-store)**: el usuario selecciona el producto en el App Store y, a continuación, el SDK de Adapty inicia la compra en tu app. Para este tipo de compras, el SDK solo admite el plan con pago inicial.

Para dejar de ofrecer el plan de compromiso, en tus paywalls personalizados configura el **Billing plan** del producto anual como **Upfront**, o elimina la fila **Monthly**. No puedes desmarcar la casilla **Offer monthly payments with a 12-month commitment** en Adapty. Los suscriptores actuales siguen renovando en un nuevo compromiso cada año, a menos que hagas clic en **Remove Monthly Billing** para la suscripción anual en App Store Connect. Los suscriptores que ya se comprometieron siguen pagando hasta que finalice su compromiso.

## 5. Prueba el plan en un sandbox \{#5-test-the-plan-in-a-sandbox\}

Sigue la [guía de pruebas en sandbox](test-purchases-in-sandbox) con dos cuentas sandbox:

- **Una cuenta de un país donde ofreces el plan de compromiso**: El paywall debe mostrar el plan de compromiso con el precio mensual junto al precio total. Tras la compra, el perfil del usuario sandbox debe tener el nivel de acceso del producto anual.
- **Una cuenta de EE. UU.**: El paywall solo debe mostrar el plan por adelantado.

Si tu código procesa IDs de producto procedentes de webhooks o de la API server-side, verifica que recibe las compras de planes con compromiso como `<product_id>:monthly`.

Para probar la lógica de compra en local, utiliza [StoreKit Testing en Xcode](local-sk-files) 26.5 o posterior. Las compras en StoreKit Testing no llegan a Adapty.

## Solución de problemas \{#troubleshooting\}

- **Falta la casilla para pagos mensuales**: La casilla **Offer monthly payments with a 12-month commitment** solo aparece en un producto **Annual** con un ID de producto de App Store. Permanece inactiva hasta que el producto tenga un **Price (USD)**.
- **Los usuarios no ven una prueba gratuita ni otra oferta para el plan de compromiso**: En App Store Connect, cada oferta pertenece a un plan de facturación. [Configura la oferta](#3-set-up-offers) para el plan de compromiso. Para una oferta promocional o de recuperación, también establece el **App Store plan** de la oferta en Adapty como **Monthly with 12-month commitment**.
- **Todos los usuarios ven el precio único**: Verifica los dos puntos siguientes:
  - La app está compilada con Xcode 26.5 o posterior. Con una versión anterior de Xcode, el SDK de Adapty siempre devuelve los precios del plan único.
  - En el paywall personalizado, el **Billing plan** del producto anual es **Monthly**.
- **Algunos usuarios ven el precio único**: Esos usuarios [no pueden comprar el plan de compromiso](#4-add-to-a-custom-paywall).
- **El paywall muestra el total anual en lugar del precio por cuota**: Para el plan de compromiso, `product.localizedPrice` devuelve el total anual. Para mostrar el precio por cuota, usa `subscriptionPricingTerms.localizedBillingPrice`.