Każdy zwrot przy podwyższeniu subskrypcji to decyzja sklepu, nie Twoja, i schodzi wprost z Twoich przychodów
Gdy klient przechodzi na wyższy poziom, sklep wystawia zwrot przy podwyższeniu subskrypcji za niewykorzystane dni starego planu, co automatycznie obniża Twoje przychody. Oto jak działają zwroty przy podwyższeniu w App Store i Google Play oraz dlaczego Apple nie przekazuje tej kwoty na Twój serwer.

Najważniejsze wnioski
- Zwrot przy podwyższeniu subskrypcji jest automatyczny. Gdy klient w środku cyklu przechodzi na wyższy poziom, sklep uznaje lub zwraca niewykorzystane dni starego planu bez pytania Ciebie, a pieniądze schodzą z przychodów, które już zaksięgowałeś.
- W App Store podwyższenie działa natychmiast, a Apple zwraca proporcjonalną kwotę pierwotnej subskrypcji. Obniżenie czeka do następnej daty odnowienia i nie zwraca nic.
- Apple nie wysyła kwoty zwrotu przy podwyższeniu na Twój serwer. Podwyższona transakcja jest oznaczona flagą isUpgraded, ale pole ceny wciąż pokazuje pełną cenę nowego poziomu, więc przychód, który liczysz z App Store Server Notifications, wychodzi zawyżony.
- Raporty finansowe w App Store Connect to jedyne miejsce, gdzie proporcjonalny zwrot przy podwyższeniu jest ujęty. Pracownicy Apple mówią, że kwota nie jest dostępna przez App Store Server API, Notifications ani StoreKit.
- Google Play przy podwyższeniu nie zwraca pieniędzy na kartę. Uznaje niewykorzystany czas albo pobiera różnicę w cenie, a które z tych dwóch nastąpi, zależy od trybu zastąpienia, który ustawisz. Domyślny to WITH_TIME_PRORATION.
- Zwrot przy podwyższeniu to nie wniosek klienta o zwrot. Nie ma tu CONSUMPTION_REQUEST ani przeglądu obciążenia zwrotnego, więc nie ma okna 12 godzin ani 24 godzin i nie ma czego kwestionować. Uzgadniasz go, nie walczysz z nim.
- Tryb zastąpienia to decyzja o przychodach. WITH_TIME_PRORATION daje klientowi dodatkowy opłacony czas, który dostarczasz po koszcie wyższego poziomu, podczas gdy CHARGE_PRORATED_PRICE nalicza różnicę od razu, więc zły tryb domyślny wypuszcza marżę, jedno podwyższenie po drugim.
Klient dotyka podwyższenia, przechodzi z Twojego poziomu za pięć dolarów na poziom za dziesięć dolarów, a Ty księgujesz większą sprzedaż. Sklep w tej samej chwili robi coś jeszcze, a Ty tego nigdy nie widzisz. Daje temu klientowi zwrot przy podwyższeniu subskrypcji za dni, które już opłacił w starym planie, i te pieniądze schodzą z Twoich przychodów. Nikt Cię nie pytał. W App Store nie znajdziesz tej kwoty nawet w zdarzeniach, które odbiera Twój serwer.
To nie jest zwrot, z którym możesz walczyć. To nie CONSUMPTION_REQUEST od Apple ani przegląd obciążenia zwrotnego od Google Play. To rozliczenie proporcjonalne, wbudowane w to, jak oba sklepy pozwalają ludziom zmieniać plany, i uruchamia się samo za każdym razem, gdy subskrybent wchodzi o poziom wyżej. Oto czym naprawdę jest zwrot przy podwyższeniu w każdym sklepie, dlaczego Apple nie przekazuje tej kwoty na Twój serwer i ile kosztuje Cię złe ustawienie w Google Play.
Czym naprawdę jest zwrot przy podwyższeniu subskrypcji
Zwrot przy podwyższeniu to rozliczenie sklepu za czas, który klient opłacił, ale nie wykorzysta. Nie ma nic wspólnego ze skargą, sporem ani Twoją polityką zwrotów. Wyzwala go sama mechanika zmiany planu.
To rozliczenie proporcjonalne, nie skarga klienta
Gdy subskrybent w środku okresu rozliczeniowego przechodzi na wyższy poziom, ma już opłacone do końca tego okresu według starej ceny. Sklep rekompensuje mu niewykorzystaną część. Apple wystawia proporcjonalny zwrot pierwotnej subskrypcji. Google Play zalicza niewykorzystaną wartość na poczet nowego planu. Żadne z nich nie przechodzi przez proces, na który możesz zareagować, i żadne nie czeka na Twoją zgodę.
Wyzwala go tylko podwyższenie
Kierunek zmiany decyduje o pieniądzach. W App Store podwyższenie to przejście na produkt o wyższej randze w tej samej grupie subskrypcji, i tylko to przejście jest natychmiastowe i ze zwrotem. Obniżenie to przejście na niższą rangę, i staje się skuteczne przy następnym odnowieniu, bez zwrotu. Zmiana pozioma to przejście między produktami o tej samej randze, a jej termin zależy od zaangażowanych okresów. Ustaw rangi produktów źle w App Store Connect, a zmiana, którą uważasz za podwyższenie, zachowa się inaczej.
| Zmiana w App Store | Kiedy staje się skuteczna | Co dzieje się z pieniędzmi |
|---|---|---|
| Podwyższenie na wyższy poziom | Natychmiast | Apple zwraca proporcjonalną kwotę pierwotnej subskrypcji |
| Obniżenie na niższy poziom | W następnej dacie odnowienia | Brak zwrotu, odnawia się po niższej cenie |
| Zmiana pozioma, ten sam okres opłacony z góry | Natychmiast | Zaczyna się nowa subskrypcja, opłacona usługa trwa dalej |
| Zmiana pozioma, różne okresy | W następnej dacie odnowienia | Brak zwrotu w środku cyklu |
Dlaczego App Store ukrywa zwrot przy podwyższeniu przed Twoim serwerem
Oto część, która psuje raportowanie przychodów. Apple wystawia zwrot przy podwyższeniu, ale nigdy nie mówi Twojemu serwerowi, ile zwrócił.
isUpgraded to jedyny sygnał, a cena jest błędna
Nowa transakcja przychodzi z isUpgraded ustawionym na true, co mówi Ci, że nastąpiła zmiana planu. Pole ceny w tej transakcji wciąż pokazuje pełną cenę wyświetlaną nowego poziomu, a nie kwotę, którą Apple odzyskało ze starego. Żadna App Store Server Notification nie niesie kwoty zwrotu. Słowami samego Apple na forach deweloperskich, proporcjonalna kwota zwrotu nie jest dostępna przez App Store Server API, Notifications ani StoreKit, a raportowanie w App Store Connect jest Twoim źródłem do wszystkich celów księgowości finansowej.
Raport finansowy to jedyny uczciwy zapis
Raporty finansowe i sprzedażowe App Store Connect ujmują proporcjonalny zwrot przy podwyższeniu, ponieważ to one decydują o tym, ile Apple faktycznie Ci wypłaca. To czyni je źródłem prawdy dla każdego subskrybenta, który kiedykolwiek awansował. Buduj księgowość na raportach, a zdarzenia serwerowe traktuj jako sygnały uprawnień, nie przychód.

Ile Cię to kosztuje, w pieniądzach
Zwrot przy podwyższeniu to nie błąd zaokrąglenia. To realne przychody, a w Google Play dodatkowo wybierasz, ile z niewykorzystanego czasu oddajesz.
Zwrot to przychody, które już zaksięgowałeś
Weź subskrybenta na Twoim poziomie za 9.99 miesięcznie, który 20 dnia 30-dniowego cyklu podwyższa do 19.99. Mniej więcej jedna trzecia miesiąca jest niewykorzystana, więc Apple zwraca około 3.33 z pierwotnych 9.99. Nie tracisz całej sprzedaży. Oddajesz część, którą klient opłacił z góry i nie wykorzysta. Liczy się to, że oddanie jest automatyczne i ląduje na starej sprzedaży, więc przychody, które już policzyłeś, po fakcie się kurczą. Pomnóż to przez każdego subskrybenta, który awansuje w środku cyklu, a to pozycja, którą powinieneś widzieć, a nie luka, którą znajdujesz w wypłacie.
W Google Play tryb zastąpienia to prawdziwa dźwignia kosztów
Google Play przy podwyższeniu nie zwraca pieniędzy na kartę. Rozlicza niewykorzystany czas na jeden z kilku sposobów, a Ty wybierasz który, przekazując tryb zastąpienia przy uruchamianiu procesu zakupu. Wybór decyduje, czy dajesz klientowi opłacony czas, czy naliczasz mu różnicę. Google zaleca CHARGE_PRORATED_PRICE dla podwyższeń i DEFERRED dla obniżeń, ale domyślny tryb biblioteki to WITH_TIME_PRORATION, więc proces, którego nigdy nie skonfigurowałeś, po cichu zalicza czas.
| Tryb zastąpienia w Google Play | Kiedy staje się skuteczny | Co dzieje się z niewykorzystanym czasem |
|---|---|---|
| WITH_TIME_PRORATION (domyślny) | Natychmiast | Zaliczony jako dodatkowy czas w nowym planie, następna data rozliczenia przesunięta |
| CHARGE_PRORATED_PRICE (tylko podwyższenie) | Natychmiast | Różnica w cenie za pozostały okres jest naliczana teraz, data rozliczenia bez zmian |
| WITHOUT_PRORATION | Natychmiast | Teraz nic nie rozliczone, nowa cena zaczyna się przy następnym odnowieniu |
| CHARGE_FULL_PRICE | Natychmiast | Pełna cena nowego planu jest naliczana teraz, pozostała wartość przeniesiona lub rozliczona proporcjonalnie |
| DEFERRED | Przy następnym odnowieniu | Obecny plan trwa do wygaśnięcia, potem zaczyna się nowy plan |
Jak sprawić, by zwroty przy podwyższeniu nie zaskakiwały Twoich ksiąg
Nie możesz wyłączyć rozliczenia proporcjonalnego i nie chciałbyś tego, bo to ono czyni zmianę planu uczciwą dla klienta. Możesz je jednak zobaczyć, wycenić i trzymać z dala od zwrotów, które naprawdę możesz kwestionować.
Uzgadniaj podwyższenia Apple z raportem finansowym
Ponieważ kwota zwrotu nigdy nie dociera na Twój serwer, raporty finansowe i sprzedażowe App Store Connect to jedyne miejsce, gdzie proporcjonalny zwrot przy podwyższeniu się pojawia. Uzgadniaj przychody z subskrybentów z tymi raportami w każdym okresie i nie licz przychodu z bieżącej sumy Server Notifications. Flaga isUpgraded mówi Ci, że nastąpiła zmiana. Raport mówi Ci, ile kosztowała.
Wybieraj tryb zastąpienia w Google Play świadomie
Przekazuj tryb zastąpienia dla każdej zmiany planu świadomie. Używaj CHARGE_PRORATED_PRICE, gdy chcesz teraz pobrać różnicę w cenie przy podwyższeniu. Zostaw WITH_TIME_PRORATION tylko wtedy, gdy zamierzasz dać klientowi pozostały czas. Używaj DEFERRED dla obniżeń, aby zachować obecny przychód do końca okresu. Tryb domyślny to decyzja, a zły tryb domyślny oddaje marżę, jedno podwyższenie po drugim.
Trzymaj zwroty przy podwyższeniu oddzielnie od zwrotów, które możesz kwestionować
Zwrot przy podwyższeniu jest z założenia automatyczny i ostateczny. To nie klient prosi o zwrot pieniędzy. Zwroty, na które naprawdę masz wpływ, to te inicjowane przez klienta, gdzie Apple wysyła CONSUMPTION_REQUEST i daje Ci 12 godzin na odpowiedź, i gdzie Google Play otwiera przegląd obciążenia zwrotnego przez orders.reviewrefund z oknem 24 godzin. Oznaczaj dane tak, aby te dwa nigdy się nie zlewały. Jedną pozycję uzgadniasz. Na drugą odpowiadasz, na czas.
Wersja skrócona
Gdy klient podwyższa subskrypcję, sklep rozlicza za niego niewykorzystany czas automatycznie. Apple zwraca proporcjonalną kwotę starego planu natychmiast i nigdy nie wysyła tej liczby na Twój serwer, więc raporty finansowe App Store Connect to jedyny dokładny zapis. Google Play zalicza czas albo nalicza różnicę w zależności od trybu zastąpienia, który ustawisz, a domyślny daje klientowi opłacony czas, który dostarczasz po koszcie. Nic z tego nie przechodzi przez CONSUMPTION_REQUEST ani przegląd obciążenia zwrotnego, więc nie ma czego kwestionować. Uzgadniaj zwrot przy podwyższeniu, ustawiaj tryb Google Play świadomie i trzymaj go z dala od zwrotów, z którymi wciąż możesz walczyć.
Często zadawane pytania
- Czy zwrot przy podwyższeniu subskrypcji pyta o moją zgodę?
- Nie. Zwrot przy podwyższeniu subskrypcji jest automatyczny. Gdy klient w środku cyklu przechodzi na wyższy poziom, sklep sam rozlicza niewykorzystany czas starego planu, bez zapytania do Ciebie i bez okna na odpowiedź. Apple zwraca proporcjonalną kwotę pierwotnej subskrypcji, a Google Play zalicza niewykorzystany czas albo nalicza różnicę w cenie w zależności od trybu zastąpienia, który ustawisz.
- Dlaczego mój przychód z App Store nie zgadza się z wypłatą po podwyższeniach?
- Ponieważ Apple nie wysyła kwoty zwrotu przy podwyższeniu na Twój serwer. Podwyższona transakcja niesie isUpgraded ustawione na true, ale pole ceny wciąż pokazuje pełną cenę nowego poziomu, a żadna App Store Server Notification nie zawiera zwrotu. Przychód liczony ze zdarzeń serwerowych liczy nową sprzedaż i pomija zwrot na starym planie, więc wychodzi zawyżony, dopóki nie uzgodnisz go z raportami finansowymi App Store Connect.
- Czy Google Play zwraca pieniądze na kartę, gdy klient podwyższa?
- Nie. Google Play traktuje niewykorzystany czas jako uznanie, nie jako zwrot gotówki. W zależności od trybu zastąpienia albo zalicza pozostały czas na poczet nowego planu i przesuwa następną datę rozliczenia, albo nalicza różnicę w cenie za pozostały okres. Tryb domyślny to WITH_TIME_PRORATION, który zalicza czas.
- Czy mogę zakwestionować zwrot przy podwyższeniu subskrypcji?
- Nie. Zwrot przy podwyższeniu to nie wniosek klienta o zwrot. Nie ma CONSUMPTION_REQUEST od Apple ani przeglądu obciążenia zwrotnego od Google Play, więc nie ma okna 12 godzin ani 24 godzin i nie ma czego wysłać. Zwrot przy podwyższeniu uzgadniasz. Kwestionujesz tylko zwroty i obciążenia zwrotne inicjowane przez klienta.
- Czy obniżenie daje klientowi zwrot?
- Nie. W App Store obniżenie staje się skuteczne w następnej dacie odnowienia i nie zwraca nic, ponieważ klient zachowuje wyższy poziom do końca opłaconego okresu. W Google Play zalecanym sposobem obsługi obniżenia jest tryb zastąpienia DEFERRED, który zachowuje obecny plan do wygaśnięcia, a potem uruchamia niższy.
- Którego trybu zastąpienia w Google Play użyć przy podwyższeniu?
- Google zaleca CHARGE_PRORATED_PRICE przy podwyższeniach, który nalicza różnicę w cenie za pozostały okres natychmiast i pozostawia datę rozliczenia bez zmian. Domyślny WITH_TIME_PRORATION zamiast tego zalicza niewykorzystany czas jako dodatkową usługę na wyższym poziomie, więc używaj go tylko wtedy, gdy zamierzasz ten czas oddać.
Źródła i materiały dodatkowe
- Apple Developer: Auto-renewable subscriptions (upgrade, downgrade, and crossgrade behavior and prorated refunds)
- Apple Developer Forums: Retrieving the prorated refund amount after an upgrade (Apple staff on isUpgraded, the price field, and financial reports as the source)
- Android Developers: BillingFlowParams.SubscriptionUpdateParams.ReplacementMode (all replacement mode constants)
- Android Developers: About subscriptions (proration, default replacement mode, upgrade and downgrade recommendations)
- Google Play Developer API: Method orders.reviewrefund (chargeback review, 24 hours)
- Apple Developer: Send Consumption Information (CONSUMPTION_REQUEST response window)
RefundHalt
Autopilot zwrotów dla App Store i Google Play
Czytaj dalej
Nieautoryzowane zakupy w aplikacji dokonywane przez dzieci są niemal zawsze zwracane rodzicowi, a koszt ponosisz Ty
Gdy dziecko kupuje pakiet monet na telefonie rodzica, zarówno Apple, jak i Google zwracają pieniądze i żadne z nich nie pyta Cię o zgodę. Regulatorzy tak to zaprojektowali. Oto jak działają te zwroty za nieautoryzowane zakupy w aplikacji w każdym sklepie, 15-minutowe okno, w którym znikają pieniądze, i ile jeden taki zwrot naprawdę Cię kosztuje.
Nigdy nie należał do Ciebie podatek od zwrotu w aplikacji, więc zwrot kosztuje Cię Twoją część, a nie sumę na paragonie
Zwróć zakup w aplikacji, a paragon pokazuje cenę plus podatek wracające do klienta. Ten podatek nigdy nie był Twoimi pieniędzmi. Apple i Google pobierają go i odprowadzają jako merchant of record, a następnie odwracają przy zwrocie, nie naruszając Twojej części. Oto ile naprawdę kosztuje zwrot i jedyna konfiguracja, w której podatek staje się Twój.