Zwrot za płatną aplikację nigdy nie trafia na twój serwer, więc musi go wykryć sama aplikacja
Zwroty za aplikacje płatne z góry omijają wszystkie powiadomienia, których nasłuchuje twój serwer. Google daje kupującym dwie godziny na zwrot i odinstalowuje aplikację, Apple może zwrócić pieniądze w ciągu 90 dni na mocy twojej umowy, a żaden z nich nie prosi o dowody. Oto co mówi każdy sklep, ile to kosztuje i jak to sprawdzić w aplikacji.

Najważniejsze wnioski
- Zwrot za płatną aplikację dotyczy ceny samego pobrania aplikacji, a nie zakupu w aplikacji, i ani Apple, ani Google nie dokumentuje dla niego powiadomienia serwerowego.
- Według pomocy Play Console Google kupujący ma do dwóch godzin od zakupu płatnej aplikacji, aby ją zwrócić z pełnym zwrotem pieniędzy, i może zwrócić daną aplikację tylko raz.
- Zasady zwrotów Google Play mówią, że aplikacja jest odinstalowywana w ramach zwrotu, a kupujący, który kupi tę samą aplikację ponownie, nie dostanie drugiego zwrotu.
- Typ REFUND w App Store Server Notifications V2 od Apple obejmuje produkty konsumpcyjne, niekonsumpcyjne, subskrypcje odnawiane automatycznie i subskrypcje nieodnawialne. Zakupu aplikacji nie ma na tej liście.
- Apple Developer Program License Agreement, Schedule 2 punkt 6.3, pozwala Apple zwrócić pieniądze kupującemu, który zrezygnuje w ciągu 90 dni od pobrania, a deweloper zwraca Apple tę kwotę.
- Dokumentacja StoreKit od Apple wymienia revocationDate w AppTransaction, podpisanym zapisie zakupu aplikacji, który aplikacja może sprawdzić na urządzeniu.
- Ani CONSUMPTION_REQUEST, ani orders.reviewrefund z Google Play nie są udokumentowane dla zakupów pobrania aplikacji, więc o zwrocie za płatną aplikację decyduje się bez dowodów dewelopera.
Aplikacje płatne z góry są zwracane bocznymi drzwiami, których większość narzędzi do obsługi zwrotów nigdy nie pilnuje. Gdy kupujący zwraca samą aplikację, a nie coś kupionego w jej wnętrzu, Apple i Google odbierają pieniądze z twojej wypłaty, nie wysyłając twojemu serwerowi ani jednego powiadomienia. Google przynajmniej odinstalowuje aplikację. W przypadku iOS deweloperzy na forach samego Apple piszą, że kupujący po zwrocie dalej z niej korzystają. Jeśli sprzedajesz płatną aplikację, zwrot za nią to jedyny zwrot, który zobaczysz wyłącznie jako ujemną pozycję w raporcie, chyba że aplikacja sprawdzi go na urządzeniu.
Zasady zwrotów za płatne aplikacje w Google Play i App Store
Oba sklepy traktują zakup pobrania jako osobny produkt z własnymi zasadami. Oto co mówi dokumentacja każdego z nich.
| Zasada | Google Play | App Store |
|---|---|---|
| Szybki zwrot samodzielny | Do dwóch godzin od zakupu, pełny zwrot | Brak w dokumentacji |
| Dłuższe okno na wniosek | Kupujący może złożyć wniosek w ciągu 48 godzin, potem kontaktuje się z deweloperem | Apple może zwrócić pieniądze w ciągu 90 dni od pobrania, na mocy Schedule 2 umowy deweloperskiej |
| Ile razy | Raz na aplikację. Ponownego zakupu nie można znowu zwrócić | Brak w dokumentacji |
| Co dzieje się z aplikacją | Odinstalowana w ramach zwrotu | Brak w dokumentacji. Deweloperzy piszą, że kupujący zachowują dostęp po zwrocie |
| Deweloper może zwrócić pieniądze | Tak, tylko pełne zwroty, w Play Console | Nie |
| Powiadomienie serwerowe do ciebie | Brak w dokumentacji | Brak w dokumentacji |
| Prośba o dowody do ciebie | Brak w dokumentacji | Brak w dokumentacji |
Jak działa dwugodzinny zwrot w Google Play
Pomoc Play Console Google mówi to wprost: po zakupie płatnej aplikacji użytkownik ma do dwóch godzin, aby ją zwrócić z pełnym zwrotem pieniędzy, i może zwrócić aplikację tylko raz. Zasady zwrotów dla konsumentów dodają, że w ciągu 48 godzin kupujący może dostać zwrot w zależności od zakupu, że aplikacja jest odinstalowywana w ramach zwrotu i że osoba, która kupi tę samą aplikację ponownie, nie dostanie za nią zwrotu. Po 48 godzinach Google odsyła kupujących do dewelopera.
Jak Apple zwraca pieniądze za płatną aplikację
W App Store kupujący zgłasza się do Apple przez reportaproblem.apple.com, wybiera powód i zaznacza aplikację. Apple zapowiada odpowiedź w ciągu 24 do 48 godzin. Nie możesz sam zwrócić pieniędzy za zakup w App Store. Granicę zewnętrzną wyznacza twoja umowa. Punkt 6.3 Schedule 2 umowy Apple Developer Program License Agreement stanowi, że jeśli kupujący chce zrezygnować w ciągu dziewięćdziesięciu dni od pobrania albo aplikacja nie jest zgodna z twoją specyfikacją lub obowiązującym prawem, Apple może zwrócić pełną cenę, a ty zwracasz Apple tę kwotę lub przyznajesz mu kredyt w tej wysokości.
Dlaczego twój serwer nigdy nie dowiaduje się o zwrocie za płatną aplikację
Każdy sygnał zwrotu, który wysyłają oba sklepy, jest zbudowany z myślą o zakupach w aplikacji. Apple opisuje swój notificationType jako zdarzenie zakupu w aplikacji lub zakupu zewnętrznego, które wywołało powiadomienie. Jego typ REFUND obejmuje produkt konsumpcyjny, produkt niekonsumpcyjny, subskrypcję odnawianą automatycznie lub subskrypcję nieodnawialną. Get Refund History zwraca zwrócone zakupy klienta w aplikacji. Pobrania aplikacji nie ma na żadnej z tych list.
W Google jest tak samo. Powiadomienia dla deweloperów w czasie rzeczywistym obejmują subskrypcje, produkty jednorazowe i anulowane zakupy, a productType anulowanego zakupu to subskrypcja albo zakup jednorazowy. Voided Purchases API według własnej dokumentacji dotyczy jednorazowych zamówień w aplikacji i subskrypcji, a sięga wstecz tylko 30 dni.
Czy zwrot za płatną aplikację wywołuje CONSUMPTION_REQUEST?
Nie. Według dokumentacji Apple CONSUMPTION_REQUEST jest wysyłany, gdy klient prosi o zwrot za konsumpcyjny zakup w aplikacji lub subskrypcję odnawianą automatycznie. To jeden z zaledwie dwóch procesów zwrotu w obu sklepach, które proszą dewelopera o dowody. Drugi to weryfikacja chargebacku w Google Play, na którą odpowiada się przez orders.reviewrefund w ciągu 24 godzin, i trafia ona tym samym strumieniem powiadomień o zakupach w aplikacji. Żaden z nich nie jest udokumentowany dla pobrań aplikacji. O zwrocie za płatną aplikację decyduje się bez niczego, co mógłbyś przesłać.
Czy kupujący po zwrocie dalej korzysta z aplikacji?
W Google Play zasady mówią, że aplikacja jest odinstalowywana. W przypadku iOS na forach Apple są wątki deweloperów, którzy pytają właśnie o to. Jeden z marca 2025 brzmi: „Gdy użytkownik zwraca aplikację płatną z góry, nadal ma do niej dostęp.” Inny, z 2022 roku, podejrzewa kupujących o to, że kupują, instalują, zwracają i korzystają dalej. Trzeci, z czerwca 2025, pyta, czy App Store Server Notifications V2 w ogóle zgłaszają zwroty na poziomie aplikacji. Żaden z trzech nie ma odpowiedzi od Apple.
Ile pieniędzy kosztuje cię zwrot za płatną aplikację
Strona wypłat jest przewidywalna. Według pomocy Play Console Google oddaje swoją opłatę serwisową, gdy zwracasz pieniądze, więc z wypłaty potrącany jest twój udział, a nie cena katalogowa. Zwrot dokonany po tym, jak Google ci zapłacił, jest potrącany z przyszłej wypłaty, a jeśli twoje saldo pozostaje ujemne przez co najmniej 48 godzin, Google może obciążyć twoje konto bankowe. Po stronie Apple umowa mówi, że zwracasz kwotę równą cenie. W praktyce RevenueCat podał w 2022 roku, że Apple potrącił kwotę po prowizji, widoczną jako Extended Partner Share, więc Apple nie zatrzymał swojej części.
Koszty, które nie wracają, to te, które poniosłeś, żeby obsłużyć tego kupującego. Oto przykład poglądowy. Płatna aplikacja do zdjęć za $6.99 uruchamia filtry przez model w chmurze i synchronizuje projekty z magazynem w chmurze. Zapłaciłeś za reklamę, która przyprowadziła kupującego.
| Pozycja kosztów | Zwracana w Google Play | Zwracana w App Store |
|---|---|---|
| Twój udział w $6.99 | Odebrany z twojej wypłaty | Odebrany z twojej wypłaty |
| Opłata serwisowa lub prowizja sklepu | Zwracana ci przez Google | Nie naliczana, według raportu RevenueCat |
| Już wykorzystane inferencje w chmurze i wywołania API | Nie | Nie |
| Magazyn na zsynchronizowane projekty | Nie | Nie |
| Wydatki na reklamę, by pozyskać kupującego | Nie | Nie |
| Bieżące koszty serwera, jeśli kupujący dalej używa aplikacji | Kończą się, aplikacja jest odinstalowana | Trwają, dopóki twoja aplikacja nie sprawdzi |
Ten ostatni wiersz to miejsce, w którym iOS robi się drogi. Kupujący po zwrocie, który zachowuje aplikację, dalej wywołuje twój backend, a każde zapytanie inferencji, synchronizacja i wywołanie API po zwrocie to koszt bez przychodu. W płatnej aplikacji bez kosztów serwera zwrot to utracona sprzedaż. W aplikacji z backendem może zamienić się w rosnący rachunek.
Jak wykryć zwrot za płatną aplikację w samej aplikacji
Skoro serwer niczego nie słyszy, sprawdzenie musi zacząć się na urządzeniu, a potem poinformować twój serwer.
W iOS odczytaj revocationDate z AppTransaction
AppTransaction to podpisany przez App Store zapis zakupu aplikacji przez klienta. Dokumentacja StoreKit od Apple wymienia w nim teraz właściwość revocationDate, opisaną jako data unieważnienia zakupu aplikacji. Odczytaj AppTransaction.shared przy uruchomieniu, zweryfikuj wynik i traktuj revocationDate różne od nil jako zwrócone pobranie. Wyślij podpisaną wartość na swój serwer, żeby przestał obsługiwać to konto.
- appTransactionID pozostaje taki sam dla danego Apple Account nawet po zwrocie lub ponownym zakupie, mówi Apple, więc powiąż z nim swoje rekordy, a kupujący, który zapłaci ponownie, zostanie rozpoznany.
- AppTransaction.refresh() pobiera świeży zapis z App Store, ale wyświetla prośbę o zalogowanie. Apple zaleca wywoływać go tylko po wyraźnej akcji użytkownika, na przykład dotknięciu przycisku przywracania zakupów.
- Podpisana wartość znajduje się na urządzeniu. Dokumentacja Apple nie opisuje dla niej żadnego powiadomienia serwerowego, więc twój serwer wie tylko to, co zgłosi aplikacja.

W Androidzie zapytaj Play Integrity o werdykt licencyjny
Odinstalowanie przez Google załatwia większość przypadków, ale kopia może je przetrwać, na przykład zainstalowana z kopii zapasowej przez sideloading. Play Integrity API zwraca appLicensingVerdict dla zalogowanego konta. LICENSED oznacza, że użytkownik ma uprawnienie do aplikacji. UNLICENSED oznacza, że go nie ma, a Google sugeruje pokazanie okna GET_LICENSED. UNEVALUATED oznacza, że Google nie mogło tego sprawdzić, na przykład dlatego, że użytkownik nie jest zalogowany w Google Play. Google zaznacza też, że na niektórych starszych urządzeniach użytkownik zachowuje uprawnienie po odinstalowaniu, więc LICENSED nie jest na każdym urządzeniu dowodem ważnego zakupu.
Niech serwer będzie strażnikiem
Sprawdzenia po stronie klienta można wyciąć łatką. Warto chronić płatną pracę, którą wykonuje twój backend, więc niech backend odrzuca wywołania z konta, którego ostatnie zgłoszenie to zwrot, werdykt UNLICENSED albo brak jakiegokolwiek werdyktu po wybranym przez ciebie okresie karencji. To właśnie powstrzymuje zwrot przed zamianą w darmową moc obliczeniową.
Kiedy płatna aplikacja powinna przejść na zakupy w aplikacji
Własne wytyczne Apple dotyczące zmiany modelu biznesowego opisują przejście z płatnej aplikacji na darmową aplikację z zakupami w aplikacji i użycie originalAppVersion w AppTransaction, by nadal dawać funkcje premium osobom, które kupiły wersję płatną. Korzyść z tego kroku przy zwrotach jest konkretna. Gdy cena siedzi w produkcie niekonsumpcyjnym lub subskrypcji, zwroty przychodzą jako powiadomienia REFUND i anulowane zakupy, na które twój serwer może zareagować, a wniosek o zwrot za subskrypcję w App Store wywołuje CONSUMPTION_REQUEST. To są sygnały, których nasłuchuje RefundHalt i na które odpowiada w oknach 12-godzinnym i 24-godzinnym. Płatne pobranie nie daje ci żadnego z nich.
Często zadawane pytania
- Ile czasu ma kupujący na zwrot płatnej aplikacji w Google Play?
- Do dwóch godzin od zakupu na pełny zwrot, według pomocy Play Console Google, i tylko raz na aplikację. Zasady zwrotów Google mówią też, że kupujący może dostać zwrot w ciągu 48 godzin, a potem Google odsyła go do dewelopera. Aplikacja jest odinstalowywana w ramach zwrotu.
- Czy Apple powiadamia mój serwer, gdy ktoś zwraca moją płatną aplikację?
- Żadne powiadomienie nie jest udokumentowane. App Store Server Notifications od Apple obejmują zdarzenia zakupów w aplikacji, a typ REFUND wymienia tylko produkty konsumpcyjne, niekonsumpcyjne oraz subskrypcje odnawiane automatycznie i nieodnawialne. Aplikacja może odczytać revocationDate z AppTransaction na urządzeniu i zgłosić go twojemu serwerowi.
- Czy kupujący po zwrocie zachowuje dostęp do płatnej aplikacji na iOS?
- Deweloperzy na forach Apple piszą, że tak, a dokumentacja Apple nie opisuje żadnego kroku, który usuwa aplikację po zwrocie. Sprawdzaj revocationDate w AppTransaction przy uruchomieniu i niech twój serwer przestanie obsługiwać konta, które zgłaszają zwrócone pobranie.
- Czy mogę sam zwrócić pieniądze za płatną aplikację?
- W Google Play tak. Play Console pozwala wystawiać pełne zwroty za płatne aplikacje, nigdy częściowe, a Google oddaje swoją opłatę serwisową. W App Store nie. Tylko Apple może zwrócić pieniądze za zakup w App Store.
- Czy mogę zakwestionować zwrot za płatną aplikację, pokazując dane o użyciu?
- Nie. CONSUMPTION_REQUEST od Apple jest udokumentowany dla produktów konsumpcyjnych i subskrypcji odnawianych automatycznie, a weryfikacja chargebacku w Google Play przez orders.reviewrefund przychodzi powiadomieniami zbudowanymi dla produktów w aplikacji i subskrypcji. Żaden sklep nie dokumentuje procesu dowodowego dla samego zakupu aplikacji.
Źródła i materiały dodatkowe
- Play Console Help: Issue refunds and cancellations
- Google Play Help: Apps, games and in-app purchases refund policies
- Google Play Developer API: Voided Purchases API
- Android Developers: Real-time developer notifications reference
- Android Developers: Play Integrity API integrity verdicts
- Apple Developer Documentation: notificationType (App Store Server Notifications V2)
- Apple Developer Documentation: AppTransaction
- Apple Developer Documentation: Supporting business model changes by using the app transaction
- Apple Developer Program License Agreement, Schedule 2 section 6.3
- Apple Support: Request a refund for apps or content that you bought from Apple
- Apple Developer Forums: How to detect refund for paid app? (March 2025)
- Apple Developer Forums: AppTransactionId support and app-level refunds (June 2025)
- RevenueCat: Does Apple keep its commission after you refund a purchase?
RefundHalt
Autopilot zwrotów dla App Store i Google Play
Czytaj dalej
Jeśli Twoja aplikacja wciąż działa na App Store Server Notifications V1, Apple nigdy nie zapyta Cię o zwroty za subskrypcje
Apple oznaczyło App Store Server Notifications V1 jako przestarzałe w czerwcu 2023 roku, a V1 nigdy nie dostało CONSUMPTION_REQUEST dla subskrypcji, REFUND_DECLINED ani REFUND_REVERSED. Oto co traci serwer na V1, ile to kosztuje i jak przejść na V2, nie gubiąc żadnego zwrotu.
Zwrot w miesięcznej subskrypcji Apple z 12-miesięcznym zobowiązaniem może zakończyć cały rok albo tylko jeden jego miesiąc
W miesięcznej subskrypcji z 12-miesięcznym zobowiązaniem Apple dzieli zwroty na dwa przypadki. Zwrot za miniony miesiąc nie przerywa rozliczeń. Zwrot za bieżący miesiąc natychmiast kończy zobowiązanie. Pokazujemy, jak każdy przypadek trafia na Twój serwer, ile kosztuje i co wysłać do Apple.