# Introductory offer no App Store Connect: teste grátis no iOS

> Introductory offer é o teste grátis ou o preço reduzido no início de uma assinatura iOS, uma vez por grupo e por conta Apple. Veja como criar e exibir.

Página original: [Introductory offer no App Store Connect: teste grátis no iOS](https://devoria.fr/pt-br/blog/introductory-offer-app-store-connect-teste-gratis-ios)
Autor: [Mehdi Azizi](https://devoria.fr/pt-br/mehdi-azizi)
Publicação: 2026-11-04
Última revisão do conteúdo: 2026-11-04


Uma introductory offer, ou oferta introdutória, é o preço inicial de uma assinatura autorrenovável: um teste grátis, um pagamento antecipado ou um pagamento conforme o uso. **Cada cliente só tem direito a ela uma vez por grupo de assinaturas**, então seu app precisa verificar a elegibilidade antes de escrever "teste grátis". Você cria a oferta na página de preços da assinatura, e o seu paywall precisa mostrar com clareza a duração da oferta e o preço cobrado depois.

No Solys e no TradaZen, o teste grátis de 7 dias fica na assinatura anual. O plano semanal não tem. Aqui estão os três tipos de oferta, quem tem direito, a criação e depois dois erros que cometi na exibição. O termo "oferta de lançamento" muitas vezes quer dizer a mesma coisa, inclusive no meu guia sobre os [erros de paywall](https://devoria.fr/pt-br/blog/paywall-ios-erros-iniciante-vendas).

## O que é uma introductory offer?

A [ajuda do App Store Connect](https://developer.apple.com/help/app-store-connect/manage-subscriptions/set-up-introductory-offers-for-auto-renewable-subscriptions/) define como um preço reduzido ou um teste grátis, por tempo limitado, para o primeiro período de uma assinatura. Ela só vale para assinaturas autorrenováveis. No fim da oferta, a assinatura é renovada pelo preço normal, a menos que a pessoa cancele antes.

A oferta aparece na sua página da App Store para as pessoas elegíveis. Na compra, **a Apple aplica a oferta automaticamente se a pessoa tiver direito**. O seu trabalho é não prometer na tela uma oferta que a Apple não vai conceder.

## Os três tipos de oferta introdutória

A [documentação do StoreKit](https://developer.apple.com/documentation/storekit/implementing-introductory-offers-in-your-app) descreve três modos de pagamento. Veja cada um com um exemplo fictício: um anual de € 39,99 e um mensal de € 6,99, que não são os preços de nenhum dos meus apps.

| Tipo                 | Exemplo fictício    | Pago no início | Depois      |
| -------------------- | ------------------- | -------------- | ----------- |
| Teste grátis         | 7 dias grátis       | € 0            | € 39,99/ano |
| Pagamento antecipado | 3 meses por € 9,99  | € 9,99 uma vez | € 39,99/ano |
| Conforme o uso       | € 2,99/mês, 3 meses | € 2,99 por mês | € 6,99/mês  |

E aqui está o que a tela deve dizer em cada caso, sempre com esses preços fictícios:

- **Teste grátis**: "7 dias grátis, depois € 39,99 por ano." Durante o teste, a assinatura já começou, mas nada é cobrado antes do fim.
- **Pagamento antecipado**: "€ 9,99 pelos 3 primeiros meses, depois € 39,99 por ano." A pessoa paga uma única vez por todo o período com desconto.
- **Pagamento conforme o uso**: "€ 2,99 por mês durante 3 meses, depois € 6,99 por mês." O preço reduzido é cobrado a cada período.

**Nos três casos, a frase traz o preço que será cobrado depois da oferta.**

## Quem tem direito à oferta introdutória?

A ajuda da Apple é clara: uma oferta possível por assinatura, mas uma única oferta introdutória por pessoa e por grupo de assinaturas. A documentação do StoreKit detalha os três casos:

- **um novo assinante** sempre tem direito;
- **um ex-assinante** que volta tem direito se nunca usou uma oferta introdutória nesse grupo;
- **um assinante atual** não tem direito, mesmo se trocar de plano dentro do mesmo grupo.

O direito segue a conta Apple que paga, não o iPhone nem a conta criada no seu app. Quem fez o teste, cancelou e reinstalou o app não tem mais direito. Mesmo assim, o produto continua anunciando a oferta: é daí que nasce a exibição enganosa.

Consequência direta: **um teste no plano semanal consumiria o direito ao teste no anual**, já que os dois estão no mesmo grupo. É por isso que meus testes ficam só no anual.

Outro limite: você pode ter uma oferta introdutória em andamento e uma oferta futura por país. Se duas ofertas se sobrepõem, a última criada substitui a outra. Em julho de 2026, no TradaZen, eu queria ao mesmo tempo um preço reduzido e um teste grátis no anual. Uma oferta por vez: era uma ou outra. Acabei criando uma segunda assinatura anual, mais barata, que leva o teste.

## Criar a oferta no App Store Connect

Você precisa do papel Account Holder, Admin, App Manager ou Marketing. Os nomes são os da ajuda da Apple:

1. Em Apps, abra o seu app e depois Subscriptions na barra lateral.
2. Escolha o grupo e depois a assinatura.
3. Na seção Subscription Prices, clique em View all Subscription Pricing e depois em Set up Introductory Offer.
4. Escolha os países ou regiões e depois as datas de início e de fim. Se você começar hoje, a oferta entra em vigor na hora.
5. Escolha Free, Pay up front ou Pay as you go, depois a duração e o preço.
6. O App Store Connect sugere preços equivalentes para os 175 países. Ajuste se precisar e confirme.

**Uma oferta criada não pode mais ser editada**: para mudar a duração ou o preço, apague-a na aba Introductory Offers e crie de novo. Uma alteração pode levar até uma hora para chegar ao sandbox. A [documentação do RevenueCat](https://www.revenuecat.com/docs/subscription-guidance/subscription-offers) também recomenda esperar até 24 horas antes de concluir que uma oferta não está sendo aplicada.

## As durações possíveis

O teste grátis dura 3 dias, 1 ou 2 semanas, 1, 2, 3 ou 6 meses, ou 1 ano, seja qual for a duração da assinatura. O pagamento antecipado cobre 1, 2, 3 ou 6 meses, ou 1 ano. O pagamento conforme o uso depende da duração da assinatura:

| Assinatura | Conforme o uso          |
| ---------- | ----------------------- |
| 1 semana   | 1 a 12 semanas          |
| 1 mês      | 1 a 12 meses            |
| 2 meses    | 2 a 12 meses, de 2 em 2 |
| 3 meses    | 3, 6, 9 ou 12 meses     |
| 6 meses    | 6 ou 12 meses           |
| 1 ano      | 1 ano                   |

Nos meus apps, escolhi 7 dias, no anual. Não é uma regra da Apple, é uma escolha de produto, para rever com as suas próprias métricas.

## Mostrar o teste só para quem tem direito

A Apple diz isso na mesma página de ajuda: se você mostra a oferta no seu app, confira se a pessoa pode mesmo aproveitá-la. **Faça duas perguntas ao seu código**: o produto tem um teste grátis, e essa pessoa ainda tem direito a ele?

A primeira se lê no produto. Atenção: uma oferta introdutória não é necessariamente grátis. No TradaZen, o anual padrão tinha um pagamento antecipado, um primeiro ano mais barato, e o teste ficava no outro anual. Os dois aparecem como "oferta introdutória". Por isso meu código lê o preço da oferta: zero é teste; acima disso, é uma oferta paga.

A segunda se pergunta à loja. Em Swift, o StoreKit 2 oferece [isEligibleForIntroOffer](https://developer.apple.com/documentation/storekit/product/subscriptioninfo/iseligibleforintrooffer), a partir do iOS 15. A Apple avisa que esse valor pode ser verdadeiro mesmo sem oferta configurada: daí a primeira pergunta. Com o RevenueCat num app Expo, é `checkTrialOrIntroductoryPriceEligibility`, que retorna elegível, inelegível, sem oferta ou desconhecido. Aqui está o princípio em TypeScript:

```ts
import Purchases, {
  INTRO_ELIGIBILITY_STATUS as S,
  type PurchasesStoreProduct,
} from "react-native-purchases";

type Essai = "oui" | "non" | "doute";

export async function essaiGratuit(p: PurchasesStoreProduct): Promise<Essai> {
  if (!p.introPrice || p.introPrice.price > 0) return "non";
  try {
    const r = await Purchases.checkTrialOrIntroductoryPriceEligibility([
      p.identifier,
    ]);
    const statut = r[p.identifier]?.status;
    if (statut === S.INTRO_ELIGIBILITY_STATUS_ELIGIBLE) return "oui";
    if (statut === S.INTRO_ELIGIBILITY_STATUS_INELIGIBLE) return "non";
    if (statut === S.INTRO_ELIGIBILITY_STATUS_NO_INTRO_OFFER_EXISTS)
      return "non";
    return "doute";
  } catch {
    return "doute";
  }
}
```

O caso "doute" (dúvida) é o que realmente importa. O RevenueCat descreve a verificação dele como uma estimativa de melhor esforço, e a folha de pagamento da Apple mostra de qualquer forma as condições reais antes da confirmação. Para um status desconhecido, o RevenueCat recomenda mostrar o preço normal, para não enganar ninguém.

Aprendi o outro lado do problema no TradaZen. A primeira versão tratava um erro de leitura como uma recusa: pessoas que tinham direito ao teste não o viam. Hoje, meus apps só tiram o teste diante de uma recusa clara da loja, inelegível ou sem oferta. Na dúvida, mantém-se o que o produto exibe. **É uma escolha minha, não a recomendação do RevenueCat**: se você prefere a prudência, siga a deles. Nos dois casos, nunca confunda "não sei" com "não".

Se você usa os paywalls do RevenueCat, cada texto pode ter uma versão para as pessoas elegíveis à oferta, segundo a [página deles sobre ofertas](https://www.revenuecat.com/docs/tools/paywalls/creating-paywalls/supporting-offers). O resto da configuração está no meu guia [RevenueCat para uma assinatura iOS](https://devoria.fr/pt-br/blog/revenuecat-assinatura-in-app-ios).

## O que a 3.1.2 exige na tela

A [guideline 3.1.2(a)](https://developer.apple.com/app-store/review/guidelines/#3.1.2a) permite o teste grátis numa assinatura, desde que você forneça as informações previstas pelo App Store Connect. A [página da Apple sobre assinaturas](https://developer.apple.com/app-store/subscriptions/) detalha: no fluxo de compra de um teste, indique com clareza a duração e o preço cobrado no final. O valor cobrado também precisa ser o elemento de preço mais visível da tela.

A rejeição que o Solys recebeu em 10 de outubro de 2026 dizia isso: o teste grátis, o preço de lançamento e os preços calculados devem ficar subordinados ao valor cobrado. **O teste pode ser anunciado, mas o preço cobrado depois precisa continuar sendo o preço mais legível da tela.** As duas rejeições e a correção estão no meu guia sobre a [guideline 3.1.2](https://devoria.fr/pt-br/blog/guideline-3-1-2-app-rejeitado-assinatura).

O erro inverso também existe: oferecer um teste sem dizer. Numa época, os botões dos meus paywalls diziam "Continuar". No Solys, "7 dias grátis" só existia no rótulo do VoiceOver, não como texto visível.

## Testar a oferta no sandbox

Compre a assinatura com uma conta sandbox: o teste precisa aparecer na folha de pagamento da Apple. Para refazer o fluxo de um novo assinante, escolha Clear Purchase History nos ajustes da conta sandbox no iPhone. Segundo a [documentação de sandbox da Apple](https://developer.apple.com/documentation/storekit/testing-in-app-purchases-with-sandbox), a conta volta a ser elegível às ofertas introdutórias.

Teste também uma conta que já fez o teste: seu paywall não deve mais anunciar nada grátis. Se o produto nem carrega, leia meu guia sobre o status [Missing Metadata](https://devoria.fr/pt-br/blog/missing-metadata-app-store-connect-assinatura).

## Configurar seu teste grátis sem erro

O [iOS & Android Kit](https://devoria.fr/pt-br/kits/ios) parte do código inicial dos meus apps: onboarding, paywall e assinaturas já estão programados, e a terceira etapa, "ligar o dinheiro", guia você na configuração dos produtos e do teste. A cadeia completa está descrita na página [assinatura in-app iOS](https://devoria.fr/pt-br/expertise/assinatura-no-app-ios). Se você ainda está em dúvida sobre o modelo, comece por [assinatura ou compra única](https://devoria.fr/pt-br/blog/assinatura-ou-compra-unica-app-ios).

Se você está preparando seu primeiro lançamento, [faça seu diagnóstico gratuito](https://devoria.fr/pt-br/diagnostic): ele coloca as etapas na ordem e envia meu checklist anti-rejeição da Apple. Para dar um mês de presente ou reconquistar um ex-assinante, o próximo passo está no meu guia sobre os [códigos de oferta](https://devoria.fr/pt-br/blog/offer-codes-app-store-connect-codigo-promo).

## Perguntas frequentes

### O que é uma introductory offer na App Store?

É o preço inicial de uma assinatura autorrenovável: um teste grátis, um pagamento antecipado ou um pagamento conforme o uso. Ela é criada no App Store Connect, e a Apple a aplica automaticamente na compra para as pessoas elegíveis. Depois, a assinatura passa para o preço normal.

### Um usuário pode fazer dois testes grátis?

Não no mesmo grupo de assinaturas: uma única oferta introdutória por grupo e por conta Apple. Reinstalar o app não devolve o direito. Já se ele assinar em outro grupo do seu app, pode aproveitar a oferta desse grupo.

### Dá para acumular um teste grátis e um desconto?

Não na mesma assinatura ao mesmo tempo: uma única oferta introdutória em andamento por país. Você pode criar uma segunda assinatura com a outra oferta, ou usar um código de oferta, que pode vir em sequência à oferta introdutória, dependendo das suas configurações.

### Preciso de uma nova versão do app para adicionar um teste?

Para a oferta em si, não: ela é configurada no App Store Connect e aplicada na compra. Mas se o seu paywall escreve "7 dias" fixo no código, vai precisar atualizar. Leia a duração no produto retornado pela loja, e a tela acompanha.

### Um ex-assinante tem direito ao teste grátis?

Sim, se nunca usou uma oferta introdutória nesse grupo de assinaturas. Se já aproveitou, não tem mais direito, mesmo meses depois. Para trazê-lo de volta, a Apple oferece as ofertas de reconquista (win-back) e as ofertas promocionais.


## Seu projeto

[iOS & Android Kit](https://devoria.fr/pt-br/kits/ios): Crie seu app para iPhone e Android com o Claude Code: o código inicial dos meus apps, o caminho até as lojas e todos os kits. R$ 589.

[Diagnóstico: o que te separa do seu app de iPhone](https://devoria.fr/pt-br/diagnostic): 7 perguntas, 60 segundos: descubra o que realmente te impede de publicar seu app de iPhone, seu caminho em 4 etapas e o kit certo para você.
