# Introductory offer iOS: безкоштовний пробний період

> Introductory offer це безкоштовний пробний період або знижена ціна на старті підписки iOS, один раз на групу підписок і на Apple-акаунт.

Оригінальна сторінка: [Introductory offer iOS: безкоштовний пробний період](https://devoria.fr/uk/blog/introductory-offer-ios-free-trial)
Автор: [Mehdi Azizi](https://devoria.fr/uk/mehdi-azizi)
Опубліковано: 2026-11-04
Останнє оновлення змісту: 2026-11-04


Introductory offer, або вступна пропозиція, це стартова ціна підписки з автоматичним поновленням: безкоштовний пробний період, оплата наперед або оплата за кожен період. **Кожен клієнт має на неї право лише один раз у межах групи підписок**, тож твій застосунок має перевірити право на неї, перш ніж писати «безкоштовний пробний період». Створюєш її на сторінці цін підписки, а твій paywall має чітко показувати тривалість пропозиції та ціну, яку буде списано після неї.

У Solys і TradaZen 7-денний безкоштовний пробний період прив'язаний до річної підписки. Тижневий тариф його не має. Нижче: три типи пропозицій, хто має на них право, як їх створити, і дві помилки, які я зробив у відображенні. Термін «стартова пропозиція» часто означає те саме, зокрема в моєму гайді про [помилки paywall](https://devoria.fr/uk/blog/paywall-ios-7-pomylok-novachka).

## Що таке introductory offer?

[Довідка App Store Connect](https://developer.apple.com/help/app-store-connect/manage-subscriptions/set-up-introductory-offers-for-auto-renewable-subscriptions/) визначає її як знижену ціну або безкоштовний пробний період, обмежений у часі, для першого періоду підписки. Вона стосується лише підписок з автоматичним поновленням. Коли пропозиція закінчується, підписка поновлюється за звичайною ціною, якщо людина не скасує її раніше.

Пропозиція показується на твоїй сторінці в App Store людям, які мають на неї право. Під час покупки **Apple застосовує її автоматично, якщо людина має на неї право**. Твоє завдання: не обіцяти на екрані пропозицію, яку Apple не надасть.

## Три типи вступних пропозицій

[Документація StoreKit](https://developer.apple.com/documentation/storekit/implementing-introductory-offers-in-your-app) описує три способи оплати. Ось кожен на вигаданому прикладі: річна підписка за 39,99 € і місячна за 6,99 €. Це не ціни жодного з моїх застосунків.

| Тип                    | Вигаданий приклад     | Оплата на старті | Далі        |
| ---------------------- | --------------------- | ---------------- | ----------- |
| Безкоштовний період    | 7 днів безкоштовно    | 0 €              | 39,99 €/рік |
| Оплата наперед         | 3 місяці за 9,99 €    | 9,99 € один раз  | 39,99 €/рік |
| Оплата за кожен період | 2,99 €/міс., 3 місяці | 2,99 € щомісяця  | 6,99 €/міс. |

А ось що має бути написано на екрані для кожного, з тими самими вигаданими цінами:

- **Безкоштовний пробний період**: «7 днів безкоштовно, далі 39,99 € на рік». Під час пробного періоду підписка вже почалася, але гроші не списуються до його кінця.
- **Оплата наперед**: «9,99 € за перші 3 місяці, далі 39,99 € на рік». Людина платить один раз за весь знижений період.
- **Оплата за кожен період**: «2,99 € на місяць протягом 3 місяців, далі 6,99 € на місяць». Знижена ціна списується щоперіоду.

**У всіх трьох випадках фраза містить ціну, яку буде списано після пропозиції.**

## Хто має право на вступну пропозицію?

Довідка Apple тут однозначна: одна можлива пропозиція на підписку, але лише одна вступна пропозиція на людину в межах групи підписок. Документація StoreKit уточнює три випадки:

- **новий підписник** завжди має на неї право;
- **колишній підписник**, який повертається, має право, якщо ніколи не використовував вступну пропозицію в цій групі;
- **чинний підписник** права не має, навіть якщо змінює тариф у межах тієї ж групи.

Право прив'язане до Apple-акаунта, з якого платять, а не до iPhone чи акаунта у твоєму застосунку. Хто вже скористався пробним періодом, скасував підписку й перевстановив застосунок, права більше не має. Але продукт і далі оголошує свою пропозицію: саме звідси береться оманливе відображення.

Прямий наслідок: **пробний період на тижневому тарифі використав би право на пробний період річного**, бо обидва тарифи в одній групі. Тому в мене пробний період лише на річному.

Ще одне обмеження: у кожній країні може бути одна поточна вступна пропозиція й одна майбутня. Якщо дві пропозиції перетинаються, остання створена замінює іншу. У липні 2026-го в TradaZen я хотів на річному тарифі і знижену ціну, і безкоштовний пробний період. Одна пропозиція за раз: або те, або інше. Зрештою я створив другу, дешевшу річну підписку, яка й несе пробний період.

## Створюємо пропозицію в App Store Connect

Потрібна роль Account Holder, Admin, App Manager або Marketing. Назви взято з довідки Apple:

1. В Apps відкрий свій застосунок, потім Subscriptions у бічній панелі.
2. Обери групу, потім підписку.
3. У розділі Subscription Prices натисни View all Subscription Pricing, потім Set up Introductory Offer.
4. Обери країни чи регіони, потім дати початку й кінця. Якщо почнеш сьогодні, пропозиція стартує одразу.
5. Обери Free, Pay up front або Pay as you go, потім тривалість і ціну.
6. App Store Connect пропонує еквівалентні ціни для 175 країн. За потреби підкоригуй їх і підтверди.

**Створену пропозицію змінити вже не можна**: щоб змінити тривалість чи ціну, видали її на вкладці Introductory Offers і створи знову. Зміна може доходити до sandbox до години. [Документація RevenueCat](https://www.revenuecat.com/docs/subscription-guidance/subscription-offers) також радить почекати до 24 годин, перш ніж вирішувати, що пропозиція не застосовується.

## Можлива тривалість

Безкоштовний пробний період триває 3 дні, 1 чи 2 тижні, 1, 2, 3 чи 6 місяців або 1 рік, незалежно від тривалості підписки. Оплата наперед покриває 1, 2, 3 чи 6 місяців або 1 рік. Оплата за кожен період залежить від тривалості підписки:

| Підписка  | Оплата за кожен період        |
| --------- | ----------------------------- |
| 1 тиждень | від 1 до 12 тижнів            |
| 1 місяць  | від 1 до 12 місяців           |
| 2 місяці  | від 2 до 12 місяців, кроком 2 |
| 3 місяці  | 3, 6, 9 або 12 місяців        |
| 6 місяців | 6 або 12 місяців              |
| 1 рік     | 1 рік                         |

У своїх застосунках я обрав 7 днів на річному тарифі. Це не правило Apple, а продуктове рішення, яке варто перевіряти на власних даних.

## Показуй пробний період лише тим, хто має на нього право

Apple пише про це на тій самій сторінці довідки: якщо показуєш пропозицію в застосунку, переконайся, що людина справді може нею скористатися. **Постав своєму коду два питання**: чи має продукт безкоштовний пробний період, і чи має ця людина ще на нього право?

Відповідь на перше читається з продукту. Обережно: вступна пропозиція не обов'язково безкоштовна. У TradaZen стандартна річна підписка мала оплату наперед, тобто дешевший перший рік, а пробний період жив на іншій річній. Обидві приходять як «вступна пропозиція». Тому мій код читає ціну пропозиції: нуль означає пробний період, більше нуля означає платну пропозицію.

Друге питання ставиться магазину. У Swift StoreKit 2 дає [isEligibleForIntroOffer](https://developer.apple.com/documentation/storekit/product/subscriptioninfo/iseligibleforintrooffer), починаючи з iOS 15. Apple уточнює, що це значення може бути true, навіть якщо пропозицію не налаштовано: звідси й перше питання. З RevenueCat у застосунку на Expo це `checkTrialOrIntroductoryPriceEligibility`, що повертає: має право, не має права, пропозиції немає або невідомо. Ось принцип на 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";
  }
}
```

Головне питання тут це випадок «сумнів» (`"doute"`). RevenueCat описує свою перевірку як найкращу можливу оцінку, а платіжне вікно Apple все одно показує реальні умови перед підтвердженням. Для невідомого статусу RevenueCat радить показувати звичайну ціну, щоб нікого не ввести в оману.

Зворотний бік проблеми я пізнав на TradaZen. Перша версія вважала помилку читання відмовою: люди, які мали право на пробний період, його не бачили. Сьогодні мої застосунки прибирають пробний період лише при чіткій відмові магазину: немає права або немає пропозиції. У разі сумніву лишається те, що показує продукт. **Це мій компроміс, а не рекомендація RevenueCat**: якщо віддаєш перевагу обережності, дотримуйся їхньої. В обох випадках ніколи не плутай «не знаю» з «ні».

Якщо користуєшся paywall від RevenueCat, кожен текст може мати версію для людей, які мають право на пропозицію, згідно з їхньою [сторінкою про пропозиції](https://www.revenuecat.com/docs/tools/paywalls/creating-paywalls/supporting-offers). Решта налаштування є в моєму гайді [RevenueCat для підписки iOS](https://devoria.fr/uk/blog/revenuecat-in-app-subscription-ios).

## Що вимагає 3.1.2 на екрані

[Guideline 3.1.2(a)](https://developer.apple.com/app-store/review/guidelines/#3.1.2a) дозволяє безкоштовний пробний період для підписки за умови, що ти надаєш інформацію, передбачену App Store Connect. [Сторінка Apple про підписки](https://developer.apple.com/app-store/subscriptions/) уточнює: у процесі покупки пробного періоду чітко вкажи його тривалість і ціну, яку буде списано наприкінці. Сума до списання також має бути найпомітнішим ціновим елементом на екрані.

Відмова, яку Solys отримав 10 жовтня 2026-го, саме про це: безкоштовний пробний період, стартова ціна й розраховані ціни мають бути підпорядковані сумі до списання. **Пробний період можна анонсувати, але ціна, яку спишуть потім, має лишатися найчитабельнішою ціною на екрані.** Обидві відмови та їхнє виправлення є в моєму гайді про [guideline 3.1.2](https://devoria.fr/uk/blog/guideline-3-1-2-vidmova-pidpyska-app-store).

Буває й протилежна помилка: пропонувати пробний період і не казати про це. Свого часу кнопки моїх paywall казали «Продовжити». У Solys «7 днів безкоштовно» взагалі було лише в мітці VoiceOver, а не у видимому тексті.

## Тестуємо пропозицію в sandbox

Купи підписку з sandbox-акаунта: пробний період має з'явитися в платіжному вікні Apple. Щоб повторити шлях нового підписника, обери Clear Purchase History у налаштуваннях sandbox-акаунта на iPhone. Згідно з [документацією Apple про sandbox](https://developer.apple.com/documentation/storekit/testing-in-app-purchases-with-sandbox), акаунт тоді знову має право на вступні пропозиції.

Протестуй і акаунт, який уже використав пробний період: твій paywall не має більше обіцяти нічого безкоштовного. Якщо продукт узагалі не завантажується, прочитай мій гайд про статус [Missing Metadata](https://devoria.fr/uk/blog/missing-metadata-app-store-connect-subscription).

## Підключаємо безкоштовний пробний період без помилок

[iOS & Android Kit](https://devoria.fr/uk/kits/ios) побудований на стартовому коді моїх застосунків: онбординг, paywall і підписки вже написані, а його третій крок, «підключити гроші», веде тебе через налаштування продуктів і пробного періоду. Увесь ланцюжок описано на сторінці [підписка in-app iOS](https://devoria.fr/uk/expertise/ios-in-app-subscription). Якщо ще вагаєшся з моделлю, почни з [підписка чи разова покупка](https://devoria.fr/uk/blog/pidpyska-chy-razova-pokupka-ios-zastosunok).

Якщо готуєш свій перший реліз, [пройди безкоштовну діагностику](https://devoria.fr/uk/diagnostic): вона розставить кроки по порядку й надішле тобі мій чекліст проти відмов Apple. Як подарувати місяць або повернути колишнього підписника, читай у моєму гайді про [коди пропозицій](https://devoria.fr/uk/blog/offer-codes-app-store-connect-promo-code).

## Поширені запитання

### Що таке introductory offer в App Store?

Це стартова ціна підписки з автоматичним поновленням: безкоштовний пробний період, оплата наперед або оплата за кожен період. Створюється в App Store Connect, і Apple автоматично застосовує її під час покупки для людей, які мають на неї право. Далі підписка переходить на звичайну ціну.

### Чи може користувач двічі отримати безкоштовний пробний період?

Не в межах однієї групи підписок: лише одна вступна пропозиція на групу й на Apple-акаунт. Перевстановлення застосунку права не повертає. Натомість якщо він підпишеться в іншій групі твого застосунку, то зможе скористатися пропозицією цієї групи.

### Чи можна поєднати безкоштовний пробний період і знижку?

Не на одній підписці одночасно: лише одна поточна вступна пропозиція на країну. Можна створити другу підписку з іншою пропозицією або використати код пропозиції, який залежно від налаштувань може йти після вступної пропозиції.

### Чи потрібна нова версія застосунку, щоб додати пробний період?

Для самої пропозиції ні: вона налаштовується в App Store Connect і застосовується під час покупки. Але якщо твій paywall має «7 днів» жорстко прописаними в коді, його доведеться оновити. Читай тривалість із продукту, який повертає магазин, і екран підлаштується сам.

### Чи має колишній підписник право на безкоштовний пробний період?

Так, якщо він ніколи не використовував вступну пропозицію в цій групі підписок. Якщо вже скористався, права більше не має, навіть через кілька місяців. Щоб повернути його, Apple пропонує пропозиції для повернення (win-back) і промопропозиції.


## Твій проєкт

[iOS & Android Kit](https://devoria.fr/uk/kits/ios): Створи свій застосунок для iPhone і Android з Claude Code: стартовий код моїх застосунків, шлях до публікації в сторах і всі кіти. 4 999 ₴.

[Діагностика: що відділяє тебе від твого застосунку для iPhone](https://devoria.fr/uk/diagnostic): 7 запитань, 60 секунд: ти дізнаєшся, що насправді заважає тобі опублікувати застосунок для iPhone, отримаєш свій шлях у 4 кроки і кіт, який тобі підходить.
