Apple i Google pozwalają przesunąć datę odnowienia subskrypcji po awarii, ale ich limity zupełnie się różnią
Gdy Twoja aplikacja przestaje działać, możesz przesunąć datę odnowienia subskrypcji zamiast czekać na prośby o zwrot. Wyjaśniamy, jak działają 90-dniowe przedłużenia Apple i odroczenie płatności w Google Play, gdzie każdy sklep stawia granicę i ile kosztuje Cię każda z opcji.

Najważniejsze wnioski
- App Store Server API pozwala deweloperowi przesunąć datę odnowienia płatnej, aktywnej, automatycznie odnawianej subskrypcji o 1 do 90 dni, aby zrekompensować awarię, odwołane wydarzenie lub przerwaną transmisję na żywo.
- Apple pozwala na dwa przedłużenia daty odnowienia na klienta w ciągu 365 dni. Przedłużenia, które weszło w życie, nie da się cofnąć, a Apple wysyła klientowi e-mail z nową datą odnowienia.
- Apple nie przedłuży subskrypcji w bezpłatnym okresie promocyjnym, w trakcie ponawiania płatności, w okresie karencji, którego data wygaśnięcia już minęła, ani subskrypcji już wygasłej. Subskrypcja musi mieć za sobą co najmniej jeden opłacony okres.
- Dni dodane przez przedłużenie daty odnowienia w Apple nie wliczają się do roku płatnej usługi, po którym udział dewelopera w przychodach z subskrypcji rośnie z 70% do 85%.
- Metoda purchases.subscriptionsv2.defer w Google Play przesuwa kolejną datę rozliczenia subskrypcji o co najmniej jeden dzień i maksymalnie o rok na jedno wywołanie. Użytkownik zachowuje pełny dostęp bez obciążenia, a Google wysyła powiadomienie SUBSCRIPTION_DEFERRED.
- Przedłużenie daty odnowienia nie zwraca pieniędzy, więc deweloper zatrzymuje płatność, ale w dodanych dniach płaci za moc obliczeniową, przechowywanie danych i wywołania API, a żadne odnowienie tego nie pokrywa. Zwrot oddaje cenę i nic z pieniędzy już wydanych na obsługę tego klienta.
- Jeśli przez awarię zakup w aplikacji nie został dostarczony, a Apple wysyła CONSUMPTION_REQUEST, uczciwą wartością deliveryStatus jest UNDELIVERED_SERVER_OUTAGE, a Apple wymaga, by consumptionPercentage wynosiło 0 przy każdym statusie innym niż DELIVERED.
Przestój daje każdemu subskrybentowi najmocniejszy możliwy argument za zwrotem, a Ty nie możesz mu zabronić z niego skorzystać. Możesz natomiast oddać utracone dni, zanim ktokolwiek o nie poprosi. Oba sklepy z aplikacjami pozwalają przesunąć datę odnowienia subskrypcji, dzięki czemu klient dostaje darmowy czas zamiast pieniędzy. Apple ogranicza każde przedłużenie do 90 dni i pozwala na dwa w roku. Google pozwala odroczyć płatność nawet o rok na jedno wywołanie. Procedury, powiadomienia i rachunek, który za tym stoi, różnią się na tyle, że jeden plan na wypadek awarii nie obsłuży obu sklepów.
Jak awaria wpływa na ryzyko zwrotów
O zwrotach decydują sklepy, nie Ty. W App Store klient zwraca się do Apple, a Apple podejmuje decyzję. Możesz otrzymać powiadomienie CONSUMPTION_REQUEST i mieć 12 godzin na przesłanie danych o wykorzystaniu przez Send Consumption Information. Na tym kończy się Twój wpływ.
W Google Play kupujący może otrzymać zwrot w ciągu 48 godzin od zakupu bez pytania Cię o zdanie. Później prośby trafiają do Ciebie. Jedyny proces Google, w którym prosi się o Twoje dowody, to obciążenie zwrotne oznaczone do weryfikacji przez dewelopera, na które odpowiadasz przez orders.reviewrefund w ciągu 24 godzin. Decyzja banku w sprawie obciążenia zwrotnego jest ostateczna.
Żaden sklep nie daje więc możliwości zablokowania zwrotu. Masz za to wpływ na to, czy subskrybent nadal czuje się pokrzywdzony, gdy usługa wróci. Dodatkowy czas subskrypcji, przyznany szybko i jasno ogłoszony, to narzędzie, które oba sklepy stworzyły właśnie na taką sytuację.
Jak przesunąć datę odnowienia subskrypcji w App Store
App Store Server API ma do tego dwa endpointy. Extend a Subscription Renewal Date działa na jedną subskrypcję, którą wskazujesz przez jej originalTransactionId. Extend Subscription Renewal Dates for All Active Subscribers działa na wszystkich kwalifikujących się subskrybentów jednego productId i możesz go zawęzić przez storefrontCountryCodes, gdy awaria dotknęła tylko niektórych regionów.
Każde żądanie zawiera trzy elementy: extendByDays, liczbę od 1 do 90; extendReasonCode; oraz requestIdentifier, który generujesz sam. Kod przyczyny 3 oznacza problem z usługą lub awarię. Kod 1 to zadowolenie klienta, kod 2 to inne przyczyny, a kod 0 oznacza przyczynę niezadeklarowaną.
Które subskrypcje Apple przedłuży
Kwalifikują się tylko aktywne, automatycznie odnawiane subskrypcje z co najmniej jednym wcześniej opłaconym okresem. Apple pomija:
- Subskrypcje w bezpłatnym okresie promocyjnym, na przykład w darmowym okresie próbnym.
- Nieaktywne subskrypcje w trakcie ponawiania płatności.
- Subskrypcje w okresie karencji płatności, którego data wygaśnięcia już minęła.
- Subskrypcje, które otrzymały już dwa przedłużenia daty odnowienia w ciągu ostatnich 365 dni.
- Wygasłe subskrypcje.
Chmura rodzinna działa przy okazji. Gdy Apple przedłuża kupioną subskrypcję obsługującą Chmurę rodzinną, subskrypcje członków rodziny również zostają przedłużone. Nie możesz bezpośrednio wskazać subskrypcji członka rodziny.
Żądanie zbiorcze działa powoli, więc obserwuj powiadomienia
Apple podaje, że żądanie przedłużenia dla wszystkich aktywnych subskrybentów może trwać godziny, a nawet dni, w zależności od ich liczby. Odpowiedź 200 oznacza tylko, że Apple je przetwarza. Wynik poznasz dzięki App Store Server Notifications V2:
| Powiadomienie | Podtyp | Co oznacza |
|---|---|---|
| RENEWAL_EXTENDED | brak | Data odnowienia jednej subskrypcji została przesunięta |
| RENEWAL_EXTENSION | FAILURE | Przedłużenie jednej subskrypcji nie powiodło się |
| RENEWAL_EXTENSION | SUMMARY | Całe żądanie zbiorcze zostało zakończone |
Przy każdym FAILURE weź originalTransactionId z podpisanej transakcji w payloadzie i ponów próbę przez endpoint dla pojedynczej subskrypcji. Jeśli wolisz odpytywać, Get Status of Subscription Renewal Date Extensions informuje, czy żądanie się zakończyło i ile przedłużeń się powiodło, a ile nie.
Jak działa odroczenie płatności w Google Play
Odpowiednikiem w Google jest purchases.subscriptionsv2.defer, wywoływane raz na token zakupu. Treść żądania zawiera deferralContext z trzema polami. Wartość etag pochodzi z purchases.subscriptionsv2.get, a wywołanie kończy się błędem, jeśli nie zgadza się z najnowszym etag subskrypcji. Pole deferDuration określa, o ile przesunąć datę. Z kolei validateOnly ustawione na true wykonuje żądanie na próbę, bez zmiany subskrypcji.
Przewodnik Google po płatnościach określa zakres od jednego dnia do jednego roku na jedno wywołanie API. Aby odroczyć dalej, wywołaj metodę ponownie przed nadejściem nowej daty wygaśnięcia. W subskrypcji odnawianej automatycznie odroczenie przesuwa kolejną datę odnowienia. W planie przedpłaconym przesuwa czas wygaśnięcia. W subskrypcji z dodatkami każda pozycja zostaje odroczona o ten sam okres. Odpowiedź zawiera nowy expiryTime każdej pozycji.
W czasie odroczenia użytkownik pozostaje subskrybentem z pełnym dostępem i nie płaci za dodatkowy czas. Google wysyła powiadomienie dla deweloperów w czasie rzeczywistym SUBSCRIPTION_DEFERRED. Starsza metoda purchases.subscriptions.defer jest wycofana, więc nowy kod powinien używać metody v2.
Google nie informuje klienta, więc musisz zrobić to Ty
Apple wysyła klientowi e-mail po każdym udanym przedłużeniu. Przewodnik Google po płatnościach nie opisuje żadnej wiadomości dla użytkownika. Jeśli chodzi o to, by uprzedzić prośby o zwrot, subskrybent musi wiedzieć, że dostał dodatkowy czas. Poinformuj go sam, w aplikacji i e-mailem, podając, ile dni i dlaczego.
Apple i Google w zestawieniu
| Apple App Store | Google Play | |
|---|---|---|
| API | Extend a Subscription Renewal Date oraz endpoint zbiorczy | purchases.subscriptionsv2.defer |
| Długość na żądanie | Od 1 do 90 dni | Od 1 dnia do 1 roku |
| Jak często | Dwa razy na klienta w ciągu 365 dni | Brak podanego limitu; wywołaj ponownie przed nową datą wygaśnięcia |
| Opcja zbiorcza | Jedno wywołanie na productId, opcjonalnie według sklepu krajowego | Jedno wywołanie na token zakupu |
| Darmowy okres próbny | Nie kwalifikuje się | Nieopisane w przewodniku Google |
| Powiadomienie | RENEWAL_EXTENDED, RENEWAL_EXTENSION | SUBSCRIPTION_DEFERRED |
| Informacja dla klienta | Apple wysyła e-mail | Po Twojej stronie |
| Odwracalność | Nie | Nieopisane w przewodniku Google |
Ile kosztuje przedłużenie w porównaniu ze zwrotem
Zwrot i przedłużenie zabierają pieniądze z różnych miejsc. Zwrot oddaje to, co klient zapłacił za dany okres. Wszystko, co już wydałeś na obsługę tego klienta, pozostaje wydane: moc obliczeniowa na każdą sesję, wywołania API modeli, przechowywanie danych i wszelkie wypłaty dla twórcy, z którego treści korzystał.
Przedłużenie zachowuje płatność. Jego kosztem jest usługa świadczona bez odnowienia, które by za nią zapłaciło. Każdego dodanego dnia aktywny subskrybent generuje te same rachunki. W przypadku mało aktywnego użytkownika to niemal nic. W przypadku intensywnego użytkownika funkcji AI 30 dodatkowych dni może oznaczać 30 dni wywołań modelu bez żadnego przychodu. Dopasuj przedłużenie do długości awarii, a nie do przeprosin, jakie chciałbyś złożyć.
| Z czego rezygnujesz | Zwrot | Przedłużenie daty odnowienia |
|---|---|---|
| Płatność za subskrypcję | Wraca do klienta | Zostaje u Ciebie |
| Koszty już poniesione na obsługę klienta | Stracone | Stracone |
| Moc obliczeniowa, przechowywanie i wywołania API w dodanych dniach | Brak, dostęp się kończy | Płacisz Ty, bez odnowienia na razie |
| Subskrypcja później | Kończy się, jeśli zwrot odbiera dostęp | Aktywna, odnawia się w nowej dacie |
Koszt prowizji w Apple
Apple wypłaca 70% z każdego odnowienia w pierwszym roku płatnej usługi subskrybenta, a później 85%. Strona Apple o subskrypcjach mówi, że dni przedłużenia odnowienia są wyłączone z dni płatnej usługi. Przedłużenie o 30 dni opóźnia więc przejście tego subskrybenta na 85% o 30 dni. Jeśli należysz do App Store Small Business Program, już otrzymujesz 85% i ten koszt Cię nie dotyczy.
Koszt obciążeń zwrotnych w Google Play
W przypadku zamówień złożonych po 3 sierpnia 2026 r. obciążenie zwrotne wygrane przez posiadacza karty kosztuje dewelopera Google Play cenę zakupu pomniejszoną o opłatę serwisową Play, plus opłaty banku. Awaria to dokładnie ten rodzaj zdarzenia, który wysyła zirytowanego klienta do banku. Odroczenie, które dotrze do niego wcześniej, jest tańsze niż spór, którego nie da się odwrócić.

Kiedy przedłużenie nie jest właściwym narzędziem
Zakup nie był subskrypcją
Przedłużenia daty odnowienia dotyczą wyłącznie subskrypcji. Jeśli awaria zepsuła produkt konsumpcyjny lub jednorazowe odblokowanie, dostarcz go ponownie. Jeśli Apple wyśle w tej sprawie CONSUMPTION_REQUEST, zgłoś, co się stało. Pole deliveryStatus w Apple ma na to wartość UNDELIVERED_SERVER_OUTAGE, a Apple podaje, że każdy status inny niż DELIVERED musi iść w parze z consumptionPercentage ustawionym na 0.
Klient wykorzystał już oba przedłużenia Apple
Limit Apple to dwa przedłużenia na klienta w ciągu 365 dni. Dwie awarie w roku wyczerpują oba, a przy trzeciej nie masz już nic do zaoferowania przez sklep. Śledź, ile przedłużeń wykorzystał każdy originalTransactionId, aby powiadomienia FAILURE z żądania zbiorczego Cię nie zaskoczyły.
Klient korzysta z darmowego okresu próbnego
Apple nie przedłuży subskrypcji w bezpłatnym okresie promocyjnym. Użytkownik wersji próbnej stracił darmowe dni, a nie opłacone, więc ryzyko zwrotu jest niskie. Jeśli chcesz mu to wynagrodzić, wiadomość w aplikacji kosztuje mniej niż jakiekolwiek wywołanie API.
Lista kontrolna na następną awarię
- Zapisz, kiedy awaria się zaczęła i skończyła oraz których produktów i regionów dotyczyła.
- Wybierz liczbę dni, która pokryje utracony czas. W Apple użyj kodu przyczyny 3 i zmieść się w przedziale od 1 do 90.
- W Apple wyślij jedno żądanie zbiorcze na productId, zawężone przez storefrontCountryCodes, jeśli ucierpiały tylko niektóre regiony.
- Nasłuchuj RENEWAL_EXTENSION FAILURE i ponawiaj każdy przypadek przez endpoint dla pojedynczej subskrypcji.
- W Google Play przejdź po aktywnych tokenach zakupu, odczytaj etag każdego, najpierw uruchom żądanie z validateOnly, a potem odrocz naprawdę.
- Sam poinformuj subskrybentów Google Play o dodatkowym czasie, bo Google tego nie zrobi.
- Aktualizuj datę wygaśnięcia uprawnień na podstawie RENEWAL_EXTENDED i SUBSCRIPTION_DEFERRED, a nie własnych obliczeń dat.
- Przechowuj logi użycia dla każdego konta, aby w razie prośby o zwrot lub obciążenia zwrotnego Twoje dowody były gotowe w ciągu 12 godzin dla Apple i 24 godzin dla Google.
Często zadawane pytania
- Ile razy mogę przesunąć datę odnowienia subskrypcji w App Store?
- Dwa razy na klienta w ciągu 365 dni. Każde przedłużenie może wynosić od 1 do 90 dni, a subskrypcja, która otrzymała już dwa przedłużenia w ciągu ostatnich 365 dni, nie kwalifikuje się do kolejnego.
- Czy Apple informuje klienta, gdy przedłużę jego subskrypcję?
- Tak. Po udanym przedłużeniu daty odnowienia Apple wysyła klientowi e-mail z nową datą odnowienia. Przewodnik Google Play po płatnościach nie opisuje takiej wiadomości, więc na Androidzie musisz poinformować subskrybentów sam.
- Na jak długo mogę odroczyć subskrypcję w Google Play?
- Przewodnik Google po płatnościach podaje od jednego dnia do jednego roku na jedno wywołanie purchases.subscriptionsv2.defer. Aby odroczyć dalej, wywołaj API ponownie przed nadejściem nowej daty wygaśnięcia. Użytkownik zachowuje pełny dostęp i nie płaci za odroczony czas.
- Czy mogę cofnąć przedłużenie daty odnowienia w Apple?
- Nie. Apple podaje, że gdy przedłużenie odnowienia subskrypcji wejdzie w życie, nie da się go odwrócić. Przed wysłaniem żądania sprawdź produkt, liczbę dni i sklepy krajowe.
- Czy przedłużenie daty odnowienia wpływa na mój 85% udział w przychodach w Apple?
- Tak. Apple wyłącza dni przedłużenia odnowienia z dni płatnej usługi, więc przedłużenie opóźnia moment przejścia subskrybenta z 70% na 85% o liczbę dodanych dni. Deweloperzy w App Store Small Business Program już otrzymują 85%.
- Czy mogę przedłużyć subskrypcję w darmowym okresie próbnym?
- Nie w App Store. Apple wyklucza subskrypcje w bezpłatnym okresie promocyjnym, a także w trakcie ponawiania płatności, z wygasłym okresem karencji oraz wygasłe subskrypcje. Kwalifikują się tylko aktywne subskrypcje z co najmniej jednym opłaconym okresem.
Źródła i materiały dodatkowe
- Apple Developer: Extending the renewal date for auto-renewable subscriptions
- Apple Developer: Extend a Subscription Renewal Date
- Apple Developer: Extend Subscription Renewal Dates for All Active Subscribers
- Apple Developer: extendReasonCode
- Apple Developer: Auto-renewable subscriptions
- Apple Developer: deliveryStatus
- Google Play Developer API: purchases.subscriptionsv2.defer
- Google Play Billing: Manage subscriptions and one-time purchases
- Google Play Billing: Subscription lifecycle
- Play Console Help: Updates to refund protection and chargeback cost responsibility
RefundHalt
Autopilot zwrotów dla App Store i Google Play
Czytaj dalej
Nadmierne prośby o zwrot mogą kosztować więcej niż same zwroty, bo oba sklepy z aplikacjami traktują je jako sygnał jakości
Wytyczna 5.6.4 Apple wprost wskazuje nadmierne prośby o zwrot jako oznakę, że aplikacja nie spełnia standardów jakości, a umowa dystrybucyjna Google pozwala usuwać aplikacje nowych deweloperów z powodu wskaźnika zwrotów. Oto co piszą oba sklepy, ile kosztuje usunięcie i jak trzymać się z dala od kłopotów.
Weryfikuj powiadomienia serwera App Store, zanim zareagujesz na zwrot, bo każdy może wysłać żądanie na Twój adres webhooka
Powiadomienie o zwrocie to tylko żądanie HTTPS, dopóki nie sprawdzisz jego podpisu. Oto jak weryfikować powiadomienia serwera App Store i wiadomości RTDN z Google Play, co podpisuje każdy ze sklepów i ile kosztuje Cię sfałszowany lub błędnie odrzucony zwrot.