Zwroty za subskrypcje nie działają jak zwroty za zakupy jednorazowe, a to sklep, w którym jesteś, decyduje, ile masz do powiedzenia
Zwrot za subskrypcję cofa cały okres rozliczeniowy, nie pojedynczą sprzedaż. W App Store decyduje Apple, a Twój serwer poznaje jedynie wynik. W Google Play sam wybierasz zwrot pełny lub proporcjonalny. Oto jak każdy sklep obsługuje zwroty za subskrypcje i ile kosztuje Cię jeden z nich.

Najważniejsze wnioski
- Zwrot za subskrypcję to nie to samo co zwrot jednorazowy. Jednostką, która się cofa, jest okres rozliczeniowy, a w obu sklepach zwrot za zamówienie subskrypcji anuluje subskrypcję i odcina dostęp.
- W App Store Apple decyduje o każdym zwrocie za subskrypcję. Klient zwraca się do Apple na reportaproblem.apple.com, Apple orzeka, a Twój serwer poznaje wynik jedynie przez powiadomienie REFUND, REFUND_DECLINED lub REFUND_REVERSED.
- Gdy Apple przyzna zwrot za subskrypcję, transakcja otrzymuje revocationDate, a autoRenewStatus subskrypcji zostaje ustawiony na false, więc przestaje się odnawiać, a klient traci dostęp.
- Apple mierzy subskrypcję automatycznie odnawialną upływem czasu, nie Twoimi wskaźnikami użycia. Ktoś sześć miesięcy w planie rocznym zużył około 50 procent, a GRANT_PRORATED to jedyna refundPreference, jaką możesz dla niej wyrazić.
- W Google Play sam wydajesz zwrot. purchases.subscriptionsv2.revoke przyjmuje albo fullRefund, który zwraca cały bieżący okres, albo proratedRefund, który zwraca jedynie niewykorzystany czas uprawnienia.
- To, które zamówienie zwrócisz w Google Play, zmienia wynik. Zwróć najnowsze zamówienie, a subskrypcja zostaje natychmiast usunięta, z anulowanymi przyszłymi odnowieniami. Zwróć starsze zamówienie, a subskrypcja pozostaje aktywna.
- Limity w Google Play są surowe. Zamówień starszych niż trzy lata nie można zwrócić, zwroty częściowe działają tylko dla zamówień złożonych po marcu 2018, nie dotyczą płatnych aplikacji, a żadnego zwrotu nie da się cofnąć po jego wydaniu.
Zwrot za subskrypcję i zwrot za pojedynczy zakup w aplikacji sprawiają wrażenie tego samego przycisku. Nie są. Zakup jednorazowy to jedno obciążenie, które oddajesz. Subskrypcja to obciążenie cykliczne z przypisanym żywym uprawnieniem, więc zwroty za subskrypcje muszą odpowiedzieć na dwa pytania, których zwrot jednorazowy nigdy nie zadaje: ile bieżącego okresu oddajesz i czy subskrypcja działa dalej. App Store i Google Play odpowiadają na te dwa pytania w przeciwny sposób, a ta różnica decyduje, ile masz kontroli i ile pieniędzy opuszcza Twoje konto.
Oto krótka mapa. W App Store to Apple jest właścicielem decyzji, a Ty dowiadujesz się po fakcie. W Google Play trzymasz stery i sam wybierasz pełny lub proporcjonalny. To przeprowadza przez oba sklepy, dokładne pola i powiadomienia, których każdy używa, które zamówienie ruszasz, gdy subskrypcja była rozliczana wiele razy, i ile zwrot za subskrypcję faktycznie kosztuje, gdy doliczysz obliczenia, które już wydałeś.
Czym zwroty za subskrypcje różnią się od zwrotów jednorazowych
Oba sklepy traktują zwrot jako cofnięcie konkretnego zamówienia. Dla zakupu jednorazowego jest tylko jedno zamówienie, więc nie ma czego wybierać. Subskrypcja to łańcuch zamówień, po jednym na okres rozliczeniowy, z uprawnieniem, które jest aktywne albo nie. Ta struktura sprawia, że zwrot za subskrypcję niesie wybory, których zwrot jednorazowy nie ma.
Jednostką, która się cofa, jest okres rozliczeniowy
Gdy zwracasz subskrypcję, nie oddajesz płatności z całego życia. Działasz na jednym zamówieniu w łańcuchu, zwykle najnowszym, które jest pojedynczym okresem rozliczeniowym. Zwrot pełny oddaje cały ten okres. Zwrot proporcjonalny oddaje tylko tę część okresu, której klient jeszcze nie wykorzystał. Tak czy inaczej sprzedaż, którą cofasz, to cena jednego okresu, nie cała historia klienta z aplikacją.
Kto decyduje, to prawdziwa różnica
Ostrzejszy podział to władza. W App Store Apple decyduje, czy zwrot za subskrypcję w ogóle nastąpi, a Ty dostarczasz co najwyżej kontekst. W Google Play decydujesz Ty, a API robi dokładnie to, co mu każesz. Ten sam wynik dla klienta, zupełnie inne miejsce dla dewelopera, i to zmienia, co budujesz, aby obsłużyć każdy z nich.
Jak App Store obsługuje zwrot za subskrypcję
Po stronie Apple jesteś widzem z małym mikrofonem. Klient rozmawia z Apple, Apple podejmuje decyzję, a Twój serwer odczytuje wynik.
Klient pyta Apple, a Apple orzeka
Klient App Store żąda zwrotu za subskrypcję na reportaproblem.apple.com, nie u Ciebie. Apple ocenia żądanie na podstawie własnych sygnałów i decyduje. Ty go nie zatwierdzasz i nie ma przycisku w konsoli Apple, który pozwoliłby Ci wydać zwrot za subskrypcję tak, jak umożliwia to Google Play. Apple ma do 90 dni od zakupu na przyjęcie żądania do rozpatrzenia, a gdy już orzeknie, decyzja należy do Apple.
Co widzi Twój serwer, gdy zwrot dociera
Wynik poznajesz przez App Store Server Notifications V2. Przyznany zwrot przychodzi jako powiadomienie REFUND, a transakcja niesie teraz revocationDate oznaczające, kiedy dostęp ma się zakończyć. autoRenewStatus subskrypcji zostaje ustawiony na false, więc przestaje się odnawiać, a klient traci uprawnienie. Jeśli Apple odrzuci żądanie, dostajesz REFUND_DECLINED, a jeśli Apple później cofnie już przyznany zwrot, dostajesz REFUND_REVERSED i subskrypcja wraca. Twoim zadaniem jest odczytać je i przełączyć dostęp, nie oddawać głosu.
| Powiadomienie | Co oznacza | Co robisz |
|---|---|---|
| REFUND | Apple przyznał zwrot; transakcja otrzymuje revocationDate | Odbierz dostęp, traktuj autoRenewStatus jako false |
| REFUND_DECLINED | Apple odrzucił żądanie zwrotu klienta | Nic się nie zmienia; subskrypcja pozostaje |
| REFUND_REVERSED | Apple cofnął przyznany zwrot | Przywróć dostęp i sprzedaż |
Apple mierzy subskrypcję czasem, nie Twoimi wskaźnikami
Dla produktu zużywalnego możesz powiedzieć Apple, ile zostało zużyte, przez dane o konsumpcji. Dla subskrypcji automatycznie odnawialnej Apple sam oblicza konsumpcję z upływu czasu. Własny przykład Apple to klient sześć miesięcy w subskrypcji rocznej, który zużył około 50 procent. Twoje wskaźniki użycia nie ustalają więc liczby dla subskrypcji. Jedyną dźwignią, którą możesz pociągnąć, jest refundPreference, a dla subskrypcji istotną wartością jest GRANT_PRORATED, który mówi, że wolałbyś, aby Apple zwrócił tylko niewykorzystaną część. To preferencja, nie decyzja. Apple i tak orzeka.
Jak Google Play obsługuje zwrot za subskrypcję
Google Play składa decyzję w Twoje ręce. Jest ekran Play Console i zestaw metod API, które pozwalają zwrócić subskrypcję bezpośrednio, wybrać ile, i zdecydować, czy dostęp się kończy. To postawa przeciwna do Apple, i niesie wybory, które musisz trafnie podjąć.
Pełny czy proporcjonalny, i to Twoja decyzja
Obecny sposób na zwrot i odwołanie subskrypcji to purchases.subscriptionsv2.revoke, wywoływany z revocationContext. Przekaż fullRefund, a Google Play zakończy subskrypcję i zwróci pełną kwotę bieżącego okresu rozliczeniowego. Przekaż proratedRefund, a Google Play zakończy subskrypcję i zwróci jedynie pozostały, niewykorzystany czas uprawnienia. Starsza metoda potrafiła tylko zwroty pełne, co jest powodem, by używać nowszej. Odwołanie proporcjonalne to ciało z dwóch linii, revocationContext otaczający proratedRefund, a wymieniasz na fullRefund dla całego okresu. Każde odwołanie wyzwala powiadomienie deweloperskie w czasie rzeczywistym SUBSCRIPTION_REVOKED, które jest Twoim sygnałem, by odciąć dostęp.
To, które zamówienie zwrócisz, zmienia to, co się dzieje
Google Play pozwala też zwrócić zamówienie bez odwoływania, przez orders.refund, i tutaj gryzie subtelna reguła. Jeśli zwrócisz najnowsze zamówienie subskrypcji, zamówienie zostaje zwrócone, subskrypcja natychmiast usunięta, a przyszłe cykle anulowane. Jeśli zwrócisz starsze zamówienie w łańcuchu, to zamówienie zostaje zwrócone, ale subskrypcja pozostaje aktywna. W orders.refund parametr revoke odwołuje tylko wtedy, gdy zamówienie jest najnowsze, więc aby zakończyć dostęp przy aktywnej subskrypcji, używasz zamiast tego purchases.subscriptionsv2.revoke.
| Działanie | Zwrócone zamówienie | Co dzieje się z subskrypcją |
|---|---|---|
| Zwrot najnowszego zamówienia | Ostatni okres rozliczeniowy | Usunięta natychmiast, przyszłe odnowienia anulowane |
| Zwrot starszego zamówienia | Miniony okres rozliczeniowy | Pozostaje aktywna, odnawia się dalej |
| subscriptionsv2.revoke, pełny lub proporcjonalny | Bieżący okres | Zakończona teraz, wysłane SUBSCRIPTION_REVOKED |

Limity, o które potykają się deweloperzy
Kilka twardych krawędzi łapie ludzi, i żadna z nich nie leży na szczęśliwej ścieżce.
- Zamówień starszych niż trzy lata w ogóle nie można zwrócić.
- Zwroty częściowe działają tylko dla zamówień złożonych po marcu 2018 i nigdy dla zakupów płatnych aplikacji.
- Możesz nakładać wiele zwrotów częściowych na jedno zamówienie, ale nie do wysokości sumy zamówienia ani ponad nią.
- Zwrotu nie da się cofnąć po jego wydaniu.
Google Play zwykle zwraca decyzję o zwrocie w ciągu dnia, choć może to potrwać do czterech. Zaplanuj to opóźnienie, gdy zwrot musi odzwierciedlić się w Twoich własnych kontrolach dostępu.
Ile naprawdę kosztuje Cię zwrot za subskrypcję
Zwrócone obciążenie nigdy nie jest całym rachunkiem. W chwili, gdy zamówienie subskrypcji zostało dostarczone, wydałeś już na nie prawdziwe pieniądze: obliczenia, wywołania API modelu, magazyn i wszelkie wypłaty powiązane z tym okresem. Zwrot oddaje sprzedaż. Nie oddaje tego, co wydałeś, aby ją obsłużyć. Przy subskrypcji kształt straty zależy od tego, który zwrot wydajesz.
Pełny kontra proporcjonalny to decyzja o pieniądzach
Zwrot pełny w Google Play oddaje cały bieżący okres, więc tracisz cały przychód okresu, zachowując każdy koszt, który już w tym okresie poniosłeś. Zwrot proporcjonalny oddaje tylko niewykorzystany plasterek, więc zachowujesz przychód za część, którą klient faktycznie miał. Jeśli klient jest w 60 procentach przez okres miesięczny w planie za 10 dolarów, zwrot pełny kosztuje Cię pełne 10 dolarów, a zwrot proporcjonalny kosztuje około 4 dolarów, niewykorzystane 40 procent. Apple stosuje po swojej stronie tę samą logikę upływu czasu, gdy ustala wielkość zwrotu za subskrypcję.
| Rodzaj zwrotu | Co klient odzyskuje | Co zachowujesz |
|---|---|---|
| Zwrot pełny | Cały bieżący okres, 10.00 | Nic z tego okresu |
| Zwrot proporcjonalny | Niewykorzystane 40 procent, około 4.00 | Wykorzystane 60 procent, około 6.00 |
Koszty, które nigdy nie wracają
Który zwrot byś nie wydał, dalsze koszty tego okresu przepadły. Wywołanie API modelu, za które zapłaciłeś, wyrenderowane wideo, przygotowany magazyn, wypłata dla twórcy, którą już wysłałeś, nic z tego nie cofa się, gdy zwrot za subskrypcję przechodzi. Ustal wielkość zwrotu na tym, co klient faktycznie wykorzystał, nigdy na tym, jak dawno się zapisał, bo upływ czasu nie jest kosztem i żaden sklep tak go nie traktuje. A po 3 sierpnia 2026, jeśli obciążenie za subskrypcję Google Play kończy się chargebackiem bankowym zamiast zwrotem, który wydajesz, ponosisz dodatkowo opłatę chargeback banku, której unika zwrot przyznany przez Ciebie najpierw.
Jak obsługiwać zwroty za subskrypcje bez czuwającej osoby
Nic z tego nie powinno czekać na kogoś czytającego pulpit. Powiadomienia przychodzą o każdej godzinie, a dostęp powinien przełączyć się w chwili, gdy zwrot dociera, nie następnego ranka.
Odczytaj wynik i odbierz dostęp w obu sklepach
W App Store nasłuchuj REFUND, REFUND_DECLINED i REFUND_REVERSED, i użyj revocationDate oraz autoRenewStatus, aby automatycznie zakończyć lub przywrócić dostęp. W Google Play nasłuchuj SUBSCRIPTION_REVOKED i sygnałów o unieważnionych zakupach i zrób to samo. To hydraulika, którą RefundHalt prowadzi za Ciebie: powiadomienie wchodzi, konto dopasowane, dostęp przełączony, żadnej osoby w pętli.
Miej dowody gotowe przed sporem
Wąskie okna, które faktycznie proszą o Twój wkład, 12-godzinny CONSUMPTION_REQUEST Apple dla produktów zużywalnych i 24-godzinny przegląd chargeback Google Play, pomagają tylko wtedy, gdy dowód już istnieje. Dołącz do każdego zakupu identyfikator konta, appAccountToken UUID w Apple i zahaszowany setObfuscatedAccountId o długości 64 znaków lub mniej w Google Play, i rejestruj, co dostarczył każdy opłacony okres. Wtedy gdy token dociera, sprawa jest już zbudowana, a odpowiedź w oknie to zadanie maszyny, nie panika.
Często zadawane pytania
- Czy zwrot za subskrypcję różni się od zwrotu za zakup jednorazowy?
- Tak. Zakup jednorazowy to pojedyncze zamówienie, które oddajesz. Subskrypcja to łańcuch zamówień z żywym uprawnieniem, więc zwrot za subskrypcję działa na jednym okresie rozliczeniowym i zarazem decyduje, czy subskrypcja działa dalej. Zarówno w App Store, jak i w Google Play zwrot za zamówienie subskrypcji anuluje subskrypcję i kończy dostęp, a często możesz wybrać między zwrotem całego okresu a jedynie niewykorzystanej części.
- Czy deweloper może wydać zwrot za subskrypcję App Store bezpośrednio?
- Nie. O zwrotach za subskrypcje App Store decyduje Apple. Klient żąda go na reportaproblem.apple.com, Apple orzeka, a Ty poznajesz wynik przez powiadomienie REFUND, REFUND_DECLINED lub REFUND_REVERSED. Jedynym wkładem, jaki możesz zaoferować, jest refundPreference, taka jak GRANT_PRORATED, a Apple traktuje ją jako preferencję, nie decyzję.
- Jak wydać proporcjonalny zwrot za subskrypcję w Google Play?
- Wywołaj purchases.subscriptionsv2.revoke z revocationContext ustawionym na proratedRefund. Google Play zakończy subskrypcję i zwróci jedynie pozostały, niewykorzystany czas uprawnienia, a następnie wyśle powiadomienie SUBSCRIPTION_REVOKED. Przekaż zamiast tego fullRefund, aby zwrócić cały bieżący okres. Starsza metoda revoke potrafiła tylko zwroty pełne.
- Dlaczego mój zwrot w Google Play nie anulował subskrypcji?
- Bo zwróciłeś starsze zamówienie w łańcuchu. W Google Play zwrot najnowszego zamówienia usuwa subskrypcję natychmiast i anuluje przyszłe odnowienia, ale zwrot starszego zamówienia zwraca ten okres, podczas gdy subskrypcja pozostaje aktywna. Parametr revoke w orders.refund odwołuje tylko wtedy, gdy zamówienie jest najnowsze, więc aby zakończyć aktywną subskrypcję, użyj purchases.subscriptionsv2.revoke.
- Jak daleko wstecz można zwrócić zamówienie subskrypcji?
- W Google Play zamówień starszych niż trzy lata nie można zwrócić. Zwroty częściowe działają tylko dla zamówień złożonych po marcu 2018 i nigdy dla płatnych aplikacji, a żadnego zwrotu nie da się cofnąć po jego wydaniu. W App Store Apple przyjmuje żądania zwrotu od klientów do 90 dni od zakupu i decyduje o każdym samodzielnie.
Źródła i materiały dodatkowe
- Android Developers: Manage subscriptions and one-time purchases
- Play Console Help: Manage your app's orders and issue refunds
- Google Play Developer API: orders.refund
- Google Play Developer API: purchases.subscriptionsv2.revoke
- Google Play Help: Refund policies for apps, games, and in-app purchases
- Apple Developer: Handling refund notifications
- Apple Developer WWDC21: Support customers and handle refunds
RefundHalt
Autopilot zwrotów dla App Store i Google Play
Czytaj dalej
Roznica miedzy obciazeniem zwrotnym a zwrotem sprowadza sie do tego, kto decyduje, a tylko jedno z nich jest ostateczne
Zwrot w App Store lub Google Play jest realizowany przez sklep, i to sklep o nim decyduje. Obciazenie zwrotne to bank klienta wyciagajacy pieniadze, i to bank o nim decyduje, bez mozliwosci odwolania. Dla deweloperow aplikacji roznica miedzy nimi to teraz pieniadze, poniewaz od 3 sierpnia 2026 roku Google Play przerzuca koszty obciazen zwrotnych na Ciebie.
Od 3 sierpnia koszty obciążeń zwrotnych w Google Play przeszły na deweloperów, a oto ile każdy spór teraz ci zabiera
Google Play po cichu przestało samo pokrywać obciążenia zwrotne. W przypadku zamówień złożonych 3 sierpnia 2026 roku lub później przy każdym zakwestionowanym zamówieniu zwracasz cenę zakupu pomniejszoną o opłatę serwisową Play plus opłatę bankową. Oto co się zmieniło, ile kosztuje teraz pojedyncze obciążenie zwrotne i jakie masz 24-godzinne okno, by się bronić.