# Introductory offer w App Store: darmowy okres próbny iOS

> Introductory offer to darmowy okres próbny lub niższa cena na start subskrypcji iOS, raz na grupę i konto Apple. Tworzenie i wyświetlanie.

Oryginalna strona: [Introductory offer w App Store: darmowy okres próbny iOS](https://devoria.fr/pl/blog/introductory-offer-app-store-darmowy-okres-probny-ios)
Autor: [Mehdi Azizi](https://devoria.fr/pl/mehdi-azizi)
Publikacja: 2026-11-04
Ostatnia aktualizacja treści: 2026-11-04


Introductory offer, czyli oferta wprowadzająca, to cena startowa subskrypcji odnawianej automatycznie: darmowy okres próbny, płatność z góry albo płatność w miarę korzystania. **Każdy klient ma do niej prawo tylko raz w danej grupie subskrypcji**, więc twoja aplikacja musi sprawdzić uprawnienie, zanim napisze „darmowy okres próbny”. Tworzysz ją na stronie cen subskrypcji, a twój paywall musi jasno pokazywać czas trwania oferty i cenę naliczaną po jej zakończeniu.

W Solys i TradaZen 7-dniowy okres próbny jest przypięty do subskrypcji rocznej. Plan tygodniowy go nie ma. Poniżej znajdziesz trzy typy ofert, kto ma do nich prawo, jak je utworzyć, a potem dwa błędy, które popełniłem przy ich wyświetlaniu. Określenie „oferta startowa” często oznacza to samo, także w moim poradniku o [błędach w paywallu](https://devoria.fr/pl/blog/paywall-ios-bledy-blokujace-sprzedaz).

## Czym jest introductory offer?

[Pomoc App Store Connect](https://developer.apple.com/help/app-store-connect/manage-subscriptions/set-up-introductory-offers-for-auto-renewable-subscriptions/) definiuje ją jako obniżoną cenę lub darmowy okres próbny, ograniczony w czasie, na pierwszy okres subskrypcji. Dotyczy wyłącznie subskrypcji odnawianych automatycznie. Po zakończeniu oferty subskrypcja odnawia się w normalnej cenie, chyba że użytkownik wcześniej ją anuluje.

Oferta wyświetla się na twojej karcie w App Store osobom uprawnionym. Przy zakupie **Apple stosuje ją automatycznie, jeśli użytkownik ma do niej prawo**. Twoje zadanie to nie obiecywać na ekranie oferty, której Apple nie przyzna.

## Trzy typy ofert wprowadzających

[Dokumentacja StoreKit](https://developer.apple.com/documentation/storekit/implementing-introductory-offers-in-your-app) opisuje trzy tryby płatności. Oto każdy z nich na fikcyjnym przykładzie: plan roczny za 39,99 € i miesięczny za 6,99 €. To nie są ceny żadnej z moich aplikacji.

| Typ                  | Fikcyjny przykład        | Płatne na start    | Potem        |
| -------------------- | ------------------------ | ------------------ | ------------ |
| Darmowy okres próbny | 7 dni gratis             | 0 €                | 39,99 €/rok  |
| Płatność z góry      | 3 miesiące za 9,99 €     | 9,99 € jednorazowo | 39,99 €/rok  |
| Płatność w miarę     | 2,99 €/mies., 3 miesiące | 2,99 € miesięcznie | 6,99 €/mies. |

A oto co ekran powinien mówić w każdym przypadku, nadal z tymi fikcyjnymi cenami:

- **Darmowy okres próbny**: „7 dni za darmo, potem 39,99 € rocznie.” W trakcie okresu próbnego subskrypcja już trwa, ale nic nie jest pobierane przed jego końcem.
- **Płatność z góry**: „9,99 € za pierwsze 3 miesiące, potem 39,99 € rocznie.” Użytkownik płaci raz za cały obniżony okres.
- **Płatność w miarę korzystania**: „2,99 € miesięcznie przez 3 miesiące, potem 6,99 € miesięcznie.” Obniżona cena powtarza się w każdym okresie.

**We wszystkich trzech przypadkach zdanie zawiera cenę, która zostanie naliczona po ofercie.**

## Kto ma prawo do oferty wprowadzającej?

Pomoc Apple mówi jasno: jedna możliwa oferta na subskrypcję, ale tylko jedna oferta wprowadzająca na osobę i na grupę subskrypcji. Dokumentacja StoreKit precyzuje trzy przypadki:

- **nowy subskrybent** zawsze ma do niej prawo;
- **były subskrybent**, który wraca, ma do niej prawo, jeśli nigdy nie skorzystał z oferty wprowadzającej w tej grupie;
- **obecny subskrybent** nie ma do niej prawa, nawet jeśli zmienia plan w tej samej grupie.

Uprawnienie jest przypisane do płacącego konta Apple, nie do iPhone'a ani do konta założonego w twojej aplikacji. Ktoś, kto skorzystał z okresu próbnego, anulował i ponownie zainstalował aplikację, nie ma już do niego prawa. A produkt dalej ogłasza swoją ofertę: stąd bierze się mylący komunikat.

Bezpośrednia konsekwencja: **okres próbny w planie tygodniowym zużyłby prawo do okresu próbnego w planie rocznym**, bo oba są w tej samej grupie. Dlatego moje okresy próbne są tylko w planie rocznym.

Kolejne ograniczenie: możesz mieć jedną aktywną ofertę wprowadzającą i jedną przyszłą na kraj. Jeśli dwie oferty się nakładają, ostatnio utworzona zastępuje drugą. W lipcu 2026 w TradaZen chciałem mieć w planie rocznym jednocześnie obniżoną cenę i darmowy okres próbny. Tylko jedna oferta naraz: albo jedno, albo drugie. Ostatecznie utworzyłem drugą, tańszą subskrypcję roczną, do której przypiąłem okres próbny.

## Tworzenie oferty w App Store Connect

Potrzebujesz roli Account Holder, Admin, App Manager lub Marketing. Etykiety pochodzą z pomocy Apple:

1. W Apps otwórz swoją aplikację, potem Subscriptions na pasku bocznym.
2. Wybierz grupę, a potem subskrypcję.
3. W sekcji Subscription Prices kliknij View all Subscription Pricing, a potem Set up Introductory Offer.
4. Wybierz kraje lub regiony, a potem daty rozpoczęcia i zakończenia. Jeśli zaczynasz dzisiaj, oferta rusza od razu.
5. Wybierz Free, Pay up front lub Pay as you go, potem czas trwania i cenę.
6. App Store Connect proponuje równoważne ceny dla 175 krajów. W razie potrzeby je dostosuj i potwierdź.

**Utworzonej oferty nie da się już edytować**: żeby zmienić czas trwania albo cenę, usuń ją w zakładce Introductory Offers i utwórz od nowa. Zmiana może dotrzeć do sandboxa nawet po godzinie. [Dokumentacja RevenueCat](https://www.revenuecat.com/docs/subscription-guidance/subscription-offers) radzi też odczekać do 24 godzin, zanim uznasz, że oferta nie działa.

## Możliwe czasy trwania

Darmowy okres próbny trwa 3 dni, 1 lub 2 tygodnie, 1, 2, 3 lub 6 miesięcy albo 1 rok, niezależnie od okresu subskrypcji. Płatność z góry obejmuje 1, 2, 3 lub 6 miesięcy albo 1 rok. Płatność w miarę korzystania zależy od okresu subskrypcji:

| Subskrypcja | Płatność w miarę        |
| ----------- | ----------------------- |
| 1 tydzień   | 1 do 12 tygodni         |
| 1 miesiąc   | 1 do 12 miesięcy        |
| 2 miesiące  | 2 do 12 miesięcy, co 2  |
| 3 miesiące  | 3, 6, 9 lub 12 miesięcy |
| 6 miesięcy  | 6 lub 12 miesięcy       |
| 1 rok       | 1 rok                   |

W moich aplikacjach wybrałem 7 dni, w planie rocznym. To nie reguła Apple, tylko decyzja produktowa, którą warto zweryfikować własnymi pomiarami.

## Pokazuj okres próbny tylko tym, którzy mają do niego prawo

Apple pisze to na tej samej stronie pomocy: jeśli pokazujesz ofertę w aplikacji, upewnij się, że użytkownik naprawdę może z niej skorzystać. **Zadaj swojemu kodowi dwa pytania**: czy produkt ma darmowy okres próbny i czy ta osoba nadal ma do niego prawo?

Odpowiedź na pierwsze odczytasz z produktu. Uwaga, oferta wprowadzająca nie musi być darmowa. W TradaZen standardowy plan roczny miał płatność z góry, czyli tańszy pierwszy rok, a okres próbny był w drugim planie rocznym. Oba są zwracane jako „oferta wprowadzająca”. Dlatego mój kod odczytuje cenę oferty: zero oznacza okres próbny, więcej niż zero to oferta płatna.

Drugie pytanie zadajesz sklepowi. W Swift StoreKit 2 udostępnia [isEligibleForIntroOffer](https://developer.apple.com/documentation/storekit/product/subscriptioninfo/iseligibleforintrooffer), od iOS 15. Apple zaznacza, że ta wartość może być prawdziwa nawet bez skonfigurowanej oferty: stąd pierwsze pytanie. Z RevenueCat w aplikacji Expo to `checkTrialOrIntroductoryPriceEligibility`, które zwraca: uprawniony, nieuprawniony, brak oferty albo nieznany. Oto zasada w 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";
  }
}
```

Prawdziwym problemem jest przypadek „wątpliwy” (`"doute"`). RevenueCat opisuje swoje sprawdzenie jako szacunek typu best effort, a arkusz płatności Apple i tak pokazuje prawdziwe warunki przed zatwierdzeniem. Przy nieznanym statusie RevenueCat radzi wyświetlać normalną cenę, żeby nikogo nie wprowadzić w błąd.

Drugą stronę problemu poznałem w TradaZen. Pierwsza wersja traktowała błąd odczytu jak odmowę: osoby, które miały prawo do okresu próbnego, go nie widziały. Dziś moje aplikacje ukrywają okres próbny tylko przy jednoznacznej odmowie sklepu: nieuprawniony albo brak oferty. W razie wątpliwości zostaje to, co pokazuje produkt. **To mój kompromis, a nie zalecenie RevenueCat**: jeśli wolisz ostrożność, trzymaj się ich zalecenia. W obu przypadkach nigdy nie myl „nie wiem” z „nie”.

Jeśli używasz paywalli RevenueCat, każdy tekst może mieć wersję dla osób uprawnionych do oferty, zgodnie z ich [stroną o ofertach](https://www.revenuecat.com/docs/tools/paywalls/creating-paywalls/supporting-offers). Resztę konfiguracji znajdziesz w moim poradniku [RevenueCat dla subskrypcji iOS](https://devoria.fr/pl/blog/revenuecat-subskrypcja-in-app-ios).

## Czego wytyczna 3.1.2 wymaga na ekranie

[Wytyczna 3.1.2(a)](https://developer.apple.com/app-store/review/guidelines/#3.1.2a) pozwala na darmowy okres próbny w subskrypcji, pod warunkiem podania informacji przewidzianych przez App Store Connect. [Strona Apple o subskrypcjach](https://developer.apple.com/app-store/subscriptions/) precyzuje: w ścieżce zakupu okresu próbnego jasno podaj jego czas trwania i cenę naliczaną na końcu. Naliczana kwota musi też być najbardziej widocznym elementem cenowym na ekranie.

Odrzucenie, które Solys dostał 10 października 2026, mówiło to wprost: darmowy okres próbny, cena startowa i ceny przeliczone muszą być podporządkowane naliczanej kwocie. **Okres próbny można ogłosić, ale cena naliczana później musi pozostać najczytelniejszą ceną na ekranie.** Oba odrzucenia i ich poprawkę opisałem w poradniku o [wytycznej 3.1.2](https://devoria.fr/pl/blog/guideline-3-1-2-odrzucenie-subskrypcja-paywall).

Zdarza się też odwrotny błąd: oferowanie okresu próbnego bez mówienia o nim. Kiedyś przyciski w moich paywallach mówiły „Kontynuuj”. W Solys „7 dni gratis” istniało wręcz tylko w etykiecie VoiceOver, a nie w widocznym tekście.

## Testowanie oferty w sandboxie

Kup subskrypcję kontem sandbox: okres próbny powinien pojawić się na arkuszu płatności Apple. Żeby odtworzyć ścieżkę nowego subskrybenta, wybierz Clear Purchase History w ustawieniach konta sandbox na iPhonie. Według [dokumentacji sandboxa Apple](https://developer.apple.com/documentation/storekit/testing-in-app-purchases-with-sandbox) konto znów staje się wtedy uprawnione do ofert wprowadzających.

Przetestuj też konto, które już skorzystało z okresu próbnego: twój paywall nie powinien już ogłaszać niczego darmowego. Jeśli produkt w ogóle się nie ładuje, przeczytaj mój poradnik o statusie [Missing Metadata](https://devoria.fr/pl/blog/missing-metadata-app-store-connect-subskrypcja).

## Podłącz darmowy okres próbny bez błędów

[iOS & Android Kit](https://devoria.fr/pl/kits/ios) bazuje na kodzie startowym moich aplikacji: onboarding, paywall i subskrypcje są już napisane, a jego trzeci etap, „podłączenie pieniędzy”, prowadzi cię przez konfigurację produktów i okresu próbnego. Cały łańcuch opisuję na stronie [subskrypcja in-app iOS](https://devoria.fr/pl/expertise/subskrypcja-w-aplikacji-ios). Jeśli wciąż wahasz się co do modelu, zacznij od tekstu [subskrypcja czy zakup jednorazowy](https://devoria.fr/pl/blog/subskrypcja-czy-jednorazowy-zakup-aplikacja-ios).

Jeśli przygotowujesz swoją pierwszą publikację, [zrób darmową diagnozę](https://devoria.fr/pl/diagnostic): ustawi kroki we właściwej kolejności i wyśle ci moją checklistę przeciw odrzuceniom Apple. Jeśli chcesz podarować miesiąc albo odzyskać byłego subskrybenta, ciąg dalszy znajdziesz w moim poradniku o [kodach ofert](https://devoria.fr/pl/blog/offer-codes-app-store-connect-kod-promocyjny).

## Najczęściej zadawane pytania

### Czym jest introductory offer w App Store?

To cena startowa subskrypcji odnawianej automatycznie: darmowy okres próbny, płatność z góry albo płatność w miarę korzystania. Tworzy się ją w App Store Connect, a Apple automatycznie stosuje ją przy zakupie u osób uprawnionych. Potem subskrypcja przechodzi na normalną cenę.

### Czy użytkownik może skorzystać z dwóch darmowych okresów próbnych?

Nie w tej samej grupie subskrypcji: tylko jedna oferta wprowadzająca na grupę i na konto Apple. Ponowna instalacja aplikacji nie przywraca uprawnienia. Jeśli natomiast zasubskrybuje coś w innej grupie twojej aplikacji, może skorzystać z oferty tej grupy.

### Czy można połączyć darmowy okres próbny i zniżkę?

Nie w tej samej subskrypcji w tym samym czasie: tylko jedna aktywna oferta wprowadzająca na kraj. Możesz utworzyć drugą subskrypcję z drugą ofertą albo użyć kodu oferty, który w zależności od ustawień może zadziałać po ofercie wprowadzającej.

### Czy trzeba wydać nową wersję aplikacji, żeby dodać okres próbny?

Dla samej oferty nie: ustawia się ją w App Store Connect i działa przy zakupie. Ale jeśli twój paywall ma „7 dni” wpisane na sztywno w kodzie, trzeba go zaktualizować. Odczytuj czas trwania z produktu zwracanego przez sklep, a ekran się dostosuje.

### Czy były subskrybent ma prawo do darmowego okresu próbnego?

Tak, jeśli nigdy nie skorzystał z oferty wprowadzającej w tej grupie subskrypcji. Jeśli już z niej skorzystał, nie ma do niej prawa, nawet po wielu miesiącach. Żeby go odzyskać, Apple oferuje oferty win-back i oferty promocyjne.


## Twój projekt

[iOS & Android Kit](https://devoria.fr/pl/kits/ios): Stwórz swoją aplikację na iPhone'a i Androida z Claude Code: kod startowy moich aplikacji, droga aż do sklepów i wszystkie kity. 439 zł.

[Diagnoza: co dzieli cię od twojej aplikacji na iPhone'a](https://devoria.fr/pl/diagnostic): 7 pytań, 60 sekund: wiesz, co naprawdę blokuje publikację twojej aplikacji na iPhone'a, masz plan w 4 krokach i kit dopasowany do ciebie.
