Wszystkie artykuły
Poradnik8 min czytania

Każde odnowienie ma własny numer zamówienia Google Play i to właśnie ten numer trzeba sprawdzić, zanim komukolwiek zwrócisz pieniądze

Numer zamówienia Google Play, taki jak GPA.1234-5678-9012-34567..2, wskazuje jedno konkretne obciążenie. Wyjaśniamy, jak odczytać sufiks odnowienia, znaleźć zamówienie w Play Console lub przez Orders API i zwrócić to obciążenie, o które chodzi klientowi, nie płacąc za niewłaściwe.

Programista przy biurku porównuje potwierdzenie z e-maila na telefonie z Androidem z listą zamówień na laptopie, dopasowując numer zamówienia Google Play do właściwego obciążenia

Najważniejsze wnioski

  • Numer zamówienia Google Play wygląda tak: GPA.1234-5678-9012-34567. Odnowienia subskrypcji dostają sufiks, więc GPA.1234-5678-9012-34567..0 to pierwsze odnowienie tej subskrypcji.
  • Metoda getOrderId() z Play Billing Library przy odnowieniach subskrypcji zwraca numer pierwotnego zamówienia, a nie własny numer odnowienia, i zwraca null, dopóki zakup ma stan PENDING.
  • 21 maja 2025 r. Google dodał metody get i batchGet do zasobu Orders w Play Developer API. batchGet przyjmuje od 1 do 1000 unikalnych numerów zamówień, a całe żądanie kończy się błędem, jeśli którykolwiek z nich nie zostanie znaleziony.
  • Order z Orders API ma stan PENDING, PROCESSED, CANCELED, PENDING_REFUND, PARTIALLY_REFUNDED lub REFUNDED oraz pole developerRevenueInBuyerCurrency, czyli przychód pomniejszony o częściowe zwroty, podatki i opłaty.
  • Metoda orders.refund w Google Play nie zwróci środków za zamówienia starsze niż 3 lata, a przekazanie revoke=true natychmiast odbiera klientowi dostęp do subskrypcji lub produktu.
  • W Play Console opcja Zwróć środki i cofnij dostęp (Refund and revoke) dotyczy najnowszego zamówienia w subskrypcji, a Tylko zwrot środków (Refund only) dotyczy starszego zamówienia i pozostawia subskrypcję aktywną.
  • Prośby o zwrot w ciągu 48 godzin od zakupu Google Play obsługuje sam. Po 48 godzinach kieruje klientów do dewelopera i wtedy zwykle numer zamówienia trafia do Twojej skrzynki wsparcia.

Zanim zwrócisz pieniądze klientowi Google Play, spójrz na koniec numeru zamówienia. GPA.1234-5678-9012-34567 to pierwsze obciążenie w subskrypcji. GPA.1234-5678-9012-34567..2 to trzecie. Mają wspólną podstawę, ale to różne płatności, a Play Console traktuje je inaczej przy zwrocie. Numer zamówienia Google Play to jedyny identyfikator, który widzi klient, więc to on trafia do Twojej skrzynki wsparcia. Odczytaj go poprawnie, a zwrócisz dokładnie to obciążenie, na które klient się skarży, i tylko raz.

Co mówi numer zamówienia Google Play

Dokumentacja Play Billing Library od Google przedstawia format na przykładzie. Numer zamówienia zaczyna się od GPA, po którym następują grupy cyfr. W subskrypcjach każde odnowienie dostaje podstawowy numer zamówienia z dwiema kropkami i licznikiem zaczynającym się od zera. Pierwotny zakup nie ma więc sufiksu, pierwsze odnowienie to ..0, drugie ..1 i tak dalej.

Sufiks pozwala więc szybko ocenić, jak długo ktoś płaci. Klient piszący w sprawie GPA.3333-4137-0319-36762..11 był odnawiany dwanaście razy. Klient podający sam numer podstawowy albo kupił coś jednorazowo, albo wskazuje swoją pierwszą płatność.

Numer zamówieniaCo oznacza
GPA.1234-5678-9012-34567Zakup jednorazowy lub pierwsze obciążenie w subskrypcji
GPA.1234-5678-9012-34567..0Pierwsze odnowienie tej subskrypcji
GPA.1234-5678-9012-34567..1Drugie odnowienie
null w Billing LibraryZakup wciąż w stanie PENDING, zanim Google przetworzy płatność

Gdzie pojawia się numer zamówienia i którą wersję dostajesz

Tu zespoły najczęściej się potykają. Różne miejsca podają różne formy tego samego numeru.

  • Potwierdzenie Google Play klienta pokazuje numer zamówienia tego obciążenia, którego dotyczy, również przy odnowieniach.
  • W aplikacji Purchase.getOrderId() z Play Billing Library przy odnowieniach subskrypcji zwraca numer pierwotnego zamówienia. Przykład samego Google: zamiast GPA.1234-5678-9012-34567..0 dostajesz GPA.1234-5678-9012-34567.
  • Na serwerze purchases.subscriptionsv2 podaje dla każdej pozycji latestSuccessfulOrderId, czyli numer ostatniego udanego zamówienia dla tego produktu. Google dodał to pole 21 maja 2025 r.
  • W Voided Purchases API orderId jednoznacznie identyfikuje zakup jednorazowy, zakup subskrypcji lub odnowienie subskrypcji. Dokumentacja Google zaleca używanie orderId, a nie tokena zakupu, do rozróżniania odnowień.

Do czego zamiast tego służy token zakupu

Token zakupu (purchaseToken) identyfikuje zakup jako całość. W subskrypcji jeden token obejmuje pierwotne obciążenie i każde kolejne odnowienie. Dlatego to dobry klucz do uprawnień i zły klucz do zwrotu. Zwroty i obciążenia zwrotne dotyczą pojedynczego obciążenia, a pojedyncze obciążenie wskazuje tylko numer zamówienia.

Jak znaleźć zamówienie Google Play

W Play Console

Zarządzanie zamówieniami (Order management) przyjmuje w polu wyszukiwania numer zamówienia albo pełny adres e-mail klienta. Każde zamówienie ma jeden z tych stanów: Przetworzone (Processed), Anulowane (Cancelled), Oczekujące (Pending), Oczekuje na zwrot (Pending refund), Zwrócone (Refunded), Oczekuje na częściowy zwrot (Pending partial refund) lub Częściowo zwrócone (Partially refunded). Jeśli klient zamiast potwierdzenia poda e-mail, wyszukaj po adresie, wybierz obciążenie po dacie i sprawdź sufiks, zanim cokolwiek zrobisz.

Przez Orders API

Od 21 maja 2025 r. zasób Orders w Google Play Developer API ma orders.get dla jednego zamówienia i orders.batchget dla listy. W praktyce liczy się kilka ograniczeń:

  • batchget przyjmuje od 1 do 1000 numerów zamówień na żądanie i muszą one być unikalne.
  • Jeśli choć jeden numer zamówienia nie zostanie znaleziony lub nie należy do pakietu, całe żądanie batchget kończy się błędem.
  • Wywołania Orders API wliczają się do limitu Play Developer API, który domyślnie wynosi 200 000 wywołań dziennie.

Najbardziej przydatny jest zwracany obiekt Order. Zawiera stan zamówienia, jego purchaseToken, createTime i lastEventTime, kwotę całkowitą i podatek, salesChannel, na przykład IN_APP lub PLAY_STORE, oraz orderHistory ze zdarzeniami przetworzenia, anulowania, zwrotu i częściowego zwrotu. Ma też pole developerRevenueInBuyerCurrency, które Google definiuje jako Twój przychód w walucie kupującego, pomniejszony o częściowe zwroty, podatki i opłaty. Gdy Google jest sprzedawcą (merchant of record), adres kupującego zawiera tylko kraj.

Stan zamówieniaCo mówi dokumentacja Google
PENDINGUtworzone i czeka na przetworzenie
PROCESSEDPrzetworzone pomyślnie
CANCELEDAnulowane przed przetworzeniem
PENDING_REFUNDZgłoszony zwrot czeka na przetworzenie
PARTIALLY_REFUNDEDZwrócono część kwoty zamówienia
REFUNDEDZwrócono pełną kwotę zamówienia

Zwrot za właściwe zamówienie

Gdy już wiesz, o które obciążenie chodzi klientowi, Play Console daje wybór zależny od tego, gdzie to zamówienie znajduje się w subskrypcji.

OpcjaDotyczyCo się dzieje
Zwróć środki i cofnij dostęp (Refund and revoke)Najnowszego zamówienia w subskrypcjiZwrot wykonany, subskrypcja natychmiast usunięta, przyszłe odnowienia anulowane
Tylko zwrot środków (Refund only)Starszego zamówienia w subskrypcjiZwrot wykonany, subskrypcja pozostaje aktywna
Częściowy zwrot (Partial refund)Zakupów w aplikacji i subskrypcji zamówionych po marcu 2018 r., nie płatnych aplikacjiDowolny procent poniżej 100% lub kwota netto niższa niż suma zamówienia
Anuluj subskrypcję (Cancel subscription)Aktywnej subskrypcjiBrak zwrotu, dostęp trwa do końca bieżącego okresu rozliczeniowego

Przez API orders.refund przyjmuje nazwę pakietu i numer zamówienia. Zamówień starszych niż 3 lata nie można zwrócić. Opcjonalny parametr revoke ustawiony na true natychmiast kończy dostęp do subskrypcji lub produktu w aplikacji. Pomoc Google zaznacza też, że zwrotu nie da się cofnąć po jego wykonaniu, więc przekazany numer zamówienia jest ostateczny.

Dlaczego u subskrybenta pojawia się zamówienie na 0,00 USD?

Wyjaśnia to dokumentacja Google o cyklu życia subskrypcji. Gdy użytkownik ponownie zapisze się w Twojej aplikacji na ten sam plan podstawowy, zanim jego subskrypcja wygaśnie, Google Play tworzy zamówienie na 0,00 USD. Nie jest obciążany, bo już zapłacił za bieżący okres, a normalne rozliczenia wracają w pierwotnej dacie odnowienia. To nie jest bezpłatny okres próbny ani promocja. Przy tym zamówieniu nie ma czego zwracać. Jeśli klient chce pieniędzy z powrotem, znajdź wcześniejsze, opłacone zamówienie.

Ile kosztuje zwrot za niewłaściwe zamówienie

Zwrot oddaje cenę. Częściowe zwroty działają tak samo, proporcjonalnie. Przykład Google: częściowy zwrot 50% odbiera też 50% Twojej wypłaty i 50% opłaty serwisowej. Nie wraca natomiast nic z tego, co wydałeś na obsługę tego klienta: moc obliczeniowa, wywołania zewnętrznych API, przechowywanie danych, ewentualne prowizje partnerskie. Zwróć niewłaściwe zamówienie, a zapłacisz za to dwa razy.

Tak to wygląda w praktyce. Klient z planem miesięcznym pisze w sprawie obciążenia ..4 z zeszłego tygodnia. Ktoś z zespołu wyszukuje po e-mailu, widzi pierwsze zamówienie na górze listy i klika Tylko zwrot środków przy zamówieniu podstawowym sprzed kilku miesięcy. Klient dostaje zwrot za okres, z którego korzystał. Obciążenie, na które się skarżył, pozostaje nietknięte, a subskrypcja nadal się odnawia. Wciąż może poprosić bank o cofnięcie obciążenia z zeszłego tygodnia.

Dłonie trzymające telefon z Androidem nad wydrukowanym wyciągiem bankowym i długopisem, moment, w którym klient dopasowuje obciążenie do numeru zamówienia Google Play

Droga przez bank jest dziś tą kosztowną. W przypadku zamówień złożonych po 3 sierpnia 2026 r. Google wskazuje, że gdy obciążenie zwrotne zostanie uznane, deweloper odpowiada za cenę zakupu pomniejszoną o opłatę serwisową Play, plus opłaty za obciążenie zwrotne naliczone przez bank. Obciążenia zwrotne są w banku ostateczne. Jeden źle odczytany sufiks może skończyć się utratą równowartości dwóch zwrotów, plus opłaty.

Które zwroty nigdy nie trafią do Twojej skrzynki

Większość zwrotów w Google Play w ogóle nie wymaga ani Ciebie, ani numeru zamówienia. Zasady zwrotów Google mówią, że klient może otrzymać zwrot przez Google Play w ciągu 48 godzin od zakupu, a po 48 godzinach powinien skontaktować się z deweloperem. Google zwraca też środki i cofa dostęp do subskrypcji, których nie potwierdzisz w ciągu trzech dni. Dowiadujesz się o tym po fakcie z Voided Purchases API, które podaje voidedSource (0 dla User, 1 dla Developer, 2 dla Google) oraz voidedReason, na przykład Remorse, Chargeback lub Unacknowledged_purchase.

Tylko jeden proces zwrotu w Google Play pyta o Twoje stanowisko. Gdy obciążenie zwrotne wymaga oceny dewelopera, masz 24 godziny na odpowiedź przez orders.reviewrefund z preferencją zwrotu APPROVE, DECLINE lub NEUTRAL oraz dowodami korzystania z zakupu. RefundHalt odpowiada na tę ocenę za Ciebie w wyznaczonym czasie, korzystając z danych o użyciu, które już masz, więc sporne zamówienie dostaje Twoje dowody zamiast milczenia.

Krótka lista kontrolna dla zgłoszeń z numerem zamówienia

  • Poproś o pełny numer zamówienia z potwierdzenia Google Play, razem z sufiksem.
  • Wyszukaj go w Play Console lub przez orders.get i najpierw sprawdź jego stan.
  • Upewnij się, że data obciążenia zgadza się z opisem klienta.
  • Używaj opcji Zwróć środki i cofnij dostęp tylko przy najnowszym zamówieniu, a Tylko zwrot środków przy starszych.
  • Zapisz numer zamówienia, za które zwróciłeś środki, żeby późniejsze obciążenie zwrotne innego zamówienia łatwo było zauważyć.

Często zadawane pytania

Co oznacza ..0 na końcu numeru zamówienia Google Play?
Oznacza pierwsze odnowienie subskrypcji. Google Play nadaje każdemu odnowieniu podstawowy numer zamówienia subskrypcji z dwiema kropkami i licznikiem zaczynającym się od zera, więc GPA.1234-5678-9012-34567..0 to pierwsze odnowienie, a ..1 drugie. Numer podstawowy bez sufiksu to pierwotne obciążenie.
Dlaczego getOrderId() w mojej aplikacji zwraca inny numer zamówienia niż ten na potwierdzeniu klienta?
Bo Play Billing Library przy odnowieniach subskrypcji zwraca numer pierwotnego zamówienia. Przykład Google: zamiast GPA.1234-5678-9012-34567..0 dla pierwszego odnowienia getOrderId() zwraca GPA.1234-5678-9012-34567. Aby uzyskać własny numer odnowienia, użyj na serwerze latestSuccessfulOrderId z purchases.subscriptionsv2.
Jak znaleźć zamówienie Google Play po numerze zamówienia?
Wyszukaj je w Zarządzaniu zamówieniami w Play Console, które przyjmuje numer zamówienia lub pełny adres e-mail klienta, albo wywołaj orders.get w Google Play Developer API. orders.batchget wyszukuje od 1 do 1000 unikalnych numerów naraz, a całe żądanie kończy się błędem, jeśli którykolwiek z nich nie zostanie znaleziony.
Czy mogę zwrócić środki za zamówienie Google Play starsze niż rok?
Tak, do 3 lat. Dokumentacja orders.refund od Google mówi, że zamówień starszych niż 3 lata nie można zwrócić. Przy starszym zamówieniu w subskrypcji opcja Tylko zwrot środków w Play Console oddaje pieniądze i pozostawia subskrypcję aktywną.
Dlaczego u subskrybenta jest zamówienie Google Play na 0,00 USD?
Pojawia się, gdy użytkownik ponownie zapisze się w Twojej aplikacji na ten sam plan podstawowy, zanim jego subskrypcja wygaśnie. Użytkownik nie jest obciążany, bo już zapłacił za bieżący okres, a zwykłe rozliczenia wracają w pierwotnej dacie odnowienia. Google zaznacza, że nie oznacza to przyznania bezpłatnego okresu próbnego ani rabatu promocyjnego.

Źródła i materiały dodatkowe

RefundHalt

Autopilot zwrotów dla App Store i Google Play

Czytaj dalej

Kolejny wniosek o zwrot jest już w drodze.

Skonfiguruj RefundHalt w czasie potrzebnym na przeczytanie kolejnej wiadomości od pomocy technicznej o zwrocie, którego nie udało Ci się zakwestionować.