Klienci obciążeni dwa razy za tę samą subskrypcję zwykle zapłacili na dwóch platformach, a tylko jeden z tych zwrotów zależy od ciebie
Gdy klient zostaje obciążony dwa razy za tę samą subskrypcję, zwykle chodzi o jeden plan kupiony w App Store i drugi przez Google Play lub twoją stronę. Wyjaśniamy, kto może zwrócić którą płatność, ile cię to kosztuje i jak zatrzymać drugie obciążenie.

Najważniejsze wnioski
- Klient obciążony dwa razy za tę samą subskrypcję zwykle kupił ją w dwóch osobnych sklepach, na przykład w App Store i Google Play. Każdy sklep rozlicza i zwraca swój zakup niezależnie.
- Deweloper nie może zwrócić zakupu z App Store. Decyduje Apple, przez reportaproblem.apple.com albo przez okno zwrotu, które aplikacja może otworzyć metodą beginRefundRequest ze StoreKit. Według Apple zatwierdzenie lub odrzucenie trwa do 48 godzin.
- W Google Play możesz sam zwrócić zamówienie w sekcji Order management w Play Console albo przez API orders.refund. API nie zwraca zamówień starszych niż 3 lata.
- Zwrot najnowszego zamówienia subskrypcji w Google Play od razu usuwa subskrypcję i anuluje przyszłe odnowienia. Zwrot starszego zamówienia pozostawia subskrypcję aktywną.
- Apple wysyła CONSUMPTION_REQUEST przy wnioskach o zwrot dla każdego typu produktu, także dla subskrypcji odnawianych automatycznie. Jeśli klient wyraził zgodę, masz 12 godzin na odpowiedź przez Send Consumption Information.
- W przypadku zamówień w Google Play złożonych po 3 sierpnia 2026 r. chargeback kosztuje cię cenę zakupu pomniejszoną o opłatę serwisową Play oraz opłatę banku za chargeback.
- Ustawienie appAccountToken przy zakupach Apple i zamaskowanego identyfikatora konta przy zakupach w Google Play pozwala twojemu serwerowi zobaczyć jednego klienta za dwiema subskrypcjami, zanim dojdzie do drugiego obciążenia.
Nic w systemach rozliczeniowych Apple ani Google nie powstrzyma jednej osoby przed zapłaceniem obu firmom za twoją subskrypcję w tym samym miesiącu. Gdy klient zostaje obciążony dwa razy za tę samą subskrypcję, prawie zawsze właśnie to się stało. Wykupił ją na iPhonie, potem jeszcze raz na tablecie z Androidem lub na twojej stronie, a twoja aplikacja nie rozpoznała pierwszego planu. Klient widzi dwa obciążenia i pisze do ciebie. Haczyk polega na tym, że sam możesz zwrócić tylko jedno z nich, i to tylko wtedy, gdy nie zostało kupione przez Apple. Wyjaśniamy, jak działa każda strona, ile kosztuje cię duplikat i jak zadbać, żeby to się nie powtórzyło.
Dlaczego klienci są obciążani dwa razy za tę samą subskrypcję
Każdy sklep zarządza własnym zakupem. Apple rozlicza subskrypcję z App Store, Google tę z Google Play, a twój operator płatności plan webowy. Żaden z nich nie wie o istnieniu pozostałych. Twój serwer to jedyne miejsce, gdzie oba zakupy mogą się spotkać, i to tylko wtedy, gdy oba niosą identyfikator łączący je z tym samym kontem.
Typowe drogi do podwójnego obciążenia wyglądają tak:
- Klient zmienia telefon, z iOS na Androida lub odwrotnie, i wykupuje subskrypcję ponownie, bo nowa aplikacja pokazuje paywall.
- Klient wykupuje subskrypcję na twojej stronie, instaluje aplikację i nie jest zalogowany, więc aplikacja sprzedaje mu dodatkowo subskrypcję w sklepie.
- Klient odinstalowuje aplikację i zakłada, że to zakończyło plan. Pomoc Google mówi, że odinstalowanie aplikacji nie anuluje subskrypcji w Google Play, a plan w App Store odnawia się, dopóki nie zostanie anulowany na koncie Apple.
„Wasza aplikacja i strona najwyraźniej się ze sobą nie komunikują”
Taką skargę przeczytasz w mailu do supportu i z perspektywy klienta jest ona uzasadniona. Zapłacił za jeden produkt. Prośba o ponowną zapłatę wygląda jak pułapka, nawet jeśli po obu stronach był to przypadek. Najszybciej uspokoisz sytuację, jeśli jasno powiesz, który zakup możesz zwrócić, a z którym klient musi zwrócić się do Apple.
Kto może zwrócić które obciążenie
Tu większość odpowiedzi supportu idzie w złą stronę. Możesz obiecać tylko to, nad czym masz kontrolę.
| Gdzie kupiono duplikat | Kto decyduje o zwrocie | Jak zatrzymać odnawianie | Twój udział |
|---|---|---|---|
| App Store | Tylko Apple, przez reportaproblem.apple.com lub okno zwrotu w twojej aplikacji | Klient anuluje na swoim koncie Apple | CONSUMPTION_REQUEST, odpowiedź w ciągu 12 godzin, jeśli klient wyraził zgodę |
| Google Play, w ciągu 48 godzin od zakupu | Klient może poprosić o zwrot Google, albo ty możesz go zwrócić | Zwrot najnowszego zamówienia anuluje przyszłe odnowienia | Brak przy samoobsługowym zwrocie Google |
| Google Play, po 48 godzinach | Ty, w Play Console lub przez orders.refund | Zwrot najnowszego zamówienia anuluje przyszłe odnowienia | Ty decydujesz |
| Twoja strona | Ty, przez swojego operatora płatności | Anulujesz po swojej stronie | Ty decydujesz |
Czy deweloper może zwrócić subskrypcję z App Store?
Nie. Każdy zwrot w App Store obsługuje Apple. Możesz za to skrócić drogę. Metoda beginRefundRequest ze StoreKit otwiera okno zwrotu Apple w twojej aplikacji, z już wypełnionymi szczegółami zakupu i listą powodów. Według dokumentacji Apple App Store potrzebuje do 48 godzin, żeby zatwierdzić lub odrzucić wniosek. Poza aplikacją klient loguje się na reportaproblem.apple.com, wybiera „Poproś o zwrot pieniędzy”, podaje powód i zaznacza subskrypcję.
Samodzielny zwrot po stronie Google Play
W Google Play to ty masz kontrolę. W Play Console otwórz Order management, wybierz zamówienie i zwróć je. Pomoc Play Console mówi wprost o subskrypcjach: zwróć najnowsze zamówienie, a subskrypcja zostanie od razu usunięta, a przyszłe odnowienia anulowane. Zwróć starsze zamówienie, a subskrypcja pozostanie aktywna. Jeśli to automatyzujesz, API orders.refund robi to samo. Przyjmuje flagę revoke, która od razu odbiera dostęp, i odrzuca zamówienia starsze niż 3 lata.
Ile kosztuje cię zduplikowana subskrypcja
Duplikat nigdy nie był przychodem, który mogłeś zatrzymać. Pytanie finansowe brzmi, ile kosztuje cię ponad sam zwrot.
Prosty przypadek
Załóżmy, że klient płacił $9.99 miesięcznie zarówno w App Store, jak i w Google Play przez trzy miesiące, zanim to zauważył. To $29.97 podwójnych obciążeń. Jeśli sam zwrócisz trzy zamówienia z Google Play, oddajesz $29.97 i problem znika tego samego dnia. Jeśli klient zamiast tego pójdzie ze stroną App Store do Apple, to Apple zdecyduje, ile zwrócić, a ty dowiesz się o tym tylko z powiadomień serwerowych. Tak czy inaczej przychód jednej platformy za te trzy miesiące wraca do klienta.
Kosztowny przypadek
Prawdziwa strata pojawia się, gdy klient rezygnuje z supportu i dzwoni do banku. Chargeback jest ostateczny, gdy bank podejmie decyzję. Google Play daje ci jedną szansę na sprzeciw, przegląd chargebacku, na który odpowiadasz w ciągu 24 godzin przez orders.reviewrefund. W przypadku zamówień w Google Play złożonych po 3 sierpnia 2026 r. przegrany chargeback kosztuje cię cenę zakupu pomniejszoną o opłatę serwisową Play oraz opłatę banku za chargeback. Zwrot $29.97, który mogłeś zrobić w minutę, zamienia się w $29.97 plus opłatę, na którą nie masz wpływu.
Koszty, które płacisz w międzyczasie
Dopóki oba plany są aktywne, twój backend obsługuje jedną osobę, ale widzi dwie subskrypcje. Jeśli liczysz stanowiska, synchronizujesz dane lub wywołujesz płatne zewnętrzne API dla każdej subskrypcji, możesz płacić podwójnie za moc obliczeniową, przechowywanie danych i wywołania API dla jednego klienta. Połączenie obu rekordów to kończy.

Jak obsłużyć podwójne obciążenie w supporcie
Odpowiedz szybko i w jednej wiadomości. Każda dodatkowa wymiana zwiększa ryzyko sporu z bankiem.
- Wyszukaj oba zakupy po koncie klienta, a nie po adresie e-mail, z którego napisał.
- Zapytaj, który plan chce zachować. Zwykle jest to plan na urządzeniu, z którego teraz korzysta.
- Jeśli duplikat jest w Google Play lub na twojej stronie, zwróć go sam i daj znać, że sprawa załatwiona.
- Jeśli duplikat jest w App Store, odeślij klienta na reportaproblem.apple.com albo do przycisku zwrotu w twojej aplikacji, jeśli go zbudowałeś, i powiedz mu, żeby anulował subskrypcję w ustawieniach konta Apple.
- Jeśli Apple wyśle potem CONSUMPTION_REQUEST, a klient wyraził zgodę, odpowiedz w ciągu 12 godzin z dokładnymi danymi o użyciu. Zduplikowany plan, z którego nikt nie korzystał, Apple łatwo zatwierdzi.
Jak zatrzymać drugie obciążenie, zanim do niego dojdzie
Zapobieganie jest tańsze niż jakikolwiek zwrot, a narzędzia już istnieją w obu sklepach.
Powiąż każdy zakup z identyfikatorem konta
Na iOS wygeneruj UUID dla każdego konta i przekaż go jako opcję zakupu appAccountToken. Apple zwraca tę samą wartość w transakcji i w informacjach o odnowieniu subskrypcji. Jeśli zakup odbył się poza twoją aplikacją, endpoint Set App Account Token pozwala później dołączyć lub zaktualizować token. Na Androidzie przekaż do setObfuscatedAccountId zahaszowany identyfikator konta o długości do 64 znaków, nigdy surowych danych osobowych.
Sprawdź uprawnienia, zanim pokażesz paywall
Zanim pojawi się paywall, zapytaj własny serwer, czy zalogowane konto ma już aktywny plan na dowolnej platformie. Najpierw pokaż prośbę o zalogowanie, a paywall tylko kontom bez aktywnego planu.
Pilnuj dwóch aktywnych planów na jednym koncie
Codziennie sprawdzaj konta, które mają więcej niż jedną aktywną subskrypcję w różnych sklepach. Wyłapanie tego w pierwszym tygodniu oznacza zwrot za jeden miesiąc zamiast za trzy i krótki e-mail zamiast chargebacku.
RefundHalt śledzi subskrypcje z App Store i Google Play według twoich własnych identyfikatorów kont. Dzięki temu klient płacący podwójnie pojawia się jako jedna osoba z dwoma planami, zanim zauważy to jego bank.
Często zadawane pytania
- Dlaczego klient został obciążony dwa razy za tę samą subskrypcję?
- Zwykle dlatego, że kupił ją na dwóch platformach, na przykład w App Store i Google Play, albo w sklepie i na twojej stronie. Każdy sklep rozlicza własną subskrypcję i nie wie o drugiej, więc obie się odnawiają, dopóki jedna nie zostanie anulowana.
- Czy mogę zwrócić klientowi subskrypcję z App Store?
- Nie. Tylko Apple może zwracać zakupy z App Store. Możesz otworzyć okno zwrotu Apple w swojej aplikacji metodą beginRefundRequest ze StoreKit albo skierować klienta na reportaproblem.apple.com. Według Apple zatwierdzenie lub odrzucenie wniosku trwa do 48 godzin.
- Jak zwrócić zduplikowaną subskrypcję w Google Play?
- Zwróć zamówienie w sekcji Order management w Play Console albo wywołaj API orders.refund. Zwrot najnowszego zamówienia od razu usuwa subskrypcję i anuluje przyszłe odnowienia. API nie zwraca zamówień starszych niż 3 lata.
- Czy zwrot subskrypcji ją też anuluje?
- W Google Play zwrot najnowszego zamówienia anuluje przyszłe odnowienia, ale zwrot starszego zamówienia pozostawia subskrypcję aktywną. W App Store o zwrocie decyduje Apple, a klient anuluje subskrypcję na swoim koncie Apple.
- Jak zapobiec podwójnej subskrypcji na iOS i Androidzie?
- Dołącz własny identyfikator konta do każdego zakupu, przez appAccountToken w Apple i zamaskowany identyfikator konta w Google Play. Potem, zanim pokażesz paywall, sprawdź na serwerze, czy na dowolnej platformie istnieje aktywny plan, i najpierw poproś użytkownika o zalogowanie.
Źródła i materiały dodatkowe
- Apple Support: Request a refund for apps or content that you bought from Apple
- Apple Developer: beginRefundRequest(in:)
- Apple Developer: Send Consumption Information
- Apple Developer: appAccountToken
- Play Console Help: Manage your app's orders and issue refunds
- Google Play Developer API: orders.refund
- Google Play Help: Apps, games, and in-app purchases refund policies
- Play Console Help: Updates to refund protection and chargeback cost responsibility
RefundHalt
Autopilot zwrotów dla App Store i Google Play
Czytaj dalej
Jeśli twoja aplikacja zostanie usunięta z Google Play lub App Store, zwroty nadal mogą obciążać twoje wypłaty
Aplikacja usunięta z Google Play lub App Store przestaje zarabiać, ale umowy ze sklepami nadal obciążają cię odpowiedzialnością za zwroty i pozwalają Apple i Google wstrzymać twoje wypłaty. Oto co mówi każda umowa, co dzieje się z subskrybentami i ile kosztuje usunięcie aplikacji.
Usunięcie konta w aplikacji nie anuluje subskrypcji, a kolejne prośby o zwrot wciąż mogą trafić do Ciebie
Apple i Google Play wymagają, by aplikacja umożliwiała usunięcie konta, ale usunięcie konta nie zatrzymuje rozliczeń w żadnym ze sklepów. Oto czego wymaga każdy sklep, dlaczego wyczyszczone konto może zostawić Cię bez odpowiedzi na CONSUMPTION_REQUEST lub weryfikację obciążenia zwrotnego i co warto zachować.