Wszystkie artykuły
Playbook8 min czytania

Twoje raporty zwrotów nigdy nie zgadzają się między Apple, Google i serwerem, oto jak je uzgodnić

Apple pokazuje zwroty w dwóch raportach, Google w kolejnych dwóch, a serwer widzi czwarty. Żadna z liczb się nie zgadza, a rozbieżności są zamierzone. Oto dlaczego każda powierzchnia przypisuje zwroty inaczej i jak uzgodnić raporty zwrotów z własną ewidencją, transakcja po transakcji.

Biurko księgowego z trzema osobnymi stosami wydrukowanych raportów finansowych i lupą, ilustrujące, jak trudno uzgodnić raporty zwrotów między Apple i Google

Najważniejsze wnioski

  • Apple dzieli raportowanie zwrotów między dwa narzędzia, które z założenia nigdy się nie zgadzają. Sales and Trends szybko szacuje zwroty w USD, a Payments and Financial Reports rozlicza je później według kalendarza fiskalnego Apple. Powiadomienie REFUND z Twojego serwera to trzeci, czasu rzeczywistego widok tego samego zdarzenia.
  • W Summary Sales Report Apple zwrot to osobny wiersz z ujemnymi Units i ujemną Customer Price, a raport nie jest pomniejszony o zwroty. Jeśli zsumujesz kolumnę na oko, policzysz błędnie, bo wiersze zwrotów stoją obok wierszy sprzedaży, zamiast je znosić.
  • Raporty finansowe Apple działają na kalendarzu fiskalnym 4-4-5, a nie na miesiącach kalendarzowych, a raport za miesiąc fiskalny jest dostępny do pierwszego piątku następnego miesiąca fiskalnego. Każda suma zwrotów, którą porównasz ze zwykłym miesiącem kalendarzowym, będzie błędna, zanim zaczniesz.
  • Google Play rozdziela zwroty tak samo. earnings report wymienia Charge refund i Google fee refund jako osobne typy transakcji, każdy oznaczony jako Full lub Partial, podczas gdy estimated sales report to analityka o niskim opóźnieniu, która według Google nie jest przeznaczona do księgowości.
  • Zwrot jest przypisywany do daty rozliczenia, a nie do daty pierwotnej sprzedaży, więc zwrot zakupu z marca ląduje w Twoich liczbach za kwiecień w obu sklepach. Uzgadniaj zwroty po transaction id, nigdy przez zestawianie sum miesięcznych.
  • Deweloperzy rutynowo znajdują więcej powiadomień REFUND niż wierszy zwrotów w Summary Sales Report za ten sam okres, bo te dwa liczą różne momenty. Endpoint Get Refund History w App Store Server API jest wiarygodnym źródłem uzgodnień, po jednym transaction id naraz.
  • Tylko dwie z tych powierzchni są zbudowane do księgowości: Financial Report Apple i earnings report Google. Uzgadniaj pieniądze z nimi, uzgadniaj dostęp z powiadomieniami serwera i nigdy nie każ jednej liczbie wykonywać zadania drugiej.

Pobierz liczbę zwrotów z App Store Connect, potem pobierz ją z serwera, a te dwie liczby się nie zgodzą. Pobierz trzecią z Financial Report i nie zgodzi się z żadną z nich. To nie jest błąd w niczyim systemie. Apple i Google raportują zwroty przez więcej niż jedną powierzchnię, każda powierzchnia liczy inny moment w życiu zwrotu, a serwer widzi czwarty. Jeśli kiedykolwiek próbowałeś uzgodnić raporty zwrotów i poddałeś się, bo sumy się rozjeżdżają, oto dlaczego się rozjeżdżają, której liczbie ufać do którego zadania i jak zestawić je po transakcji zamiast po miesiącu.

Dlaczego jeden zwrot pojawia się jako trzy różne liczby

Pojedynczy zwrot przechodzi przez kilka systemów, zanim zostanie rozliczony, a każdy system zapisuje go w innej chwili. Twój serwer słyszy o nim najpierw, jako zdarzenie. Szybki raport analityczny szacuje go następnie. Raport księgowy rejestruje go na końcu, gdy pieniądze faktycznie się przemieściły. Ten sam zwrot, trzy znaczniki czasu, trzy sumy. Błędem jest traktowanie dwóch z nich tak, jakby miały być równe tego samego dnia.

Apple daje Ci dwie rodziny raportów, plus Twój webhook

Apple raportuje zwroty w dwóch miejscach, które nie są tym samym narzędziem i nie mają się zgadzać danego dnia. Sales and Trends to szybki, szacunkowy widok: raporty dzienne pojawiają się następnego dnia, tygodniowe w poniedziałki, miesięczne około pięciu dni po zakończeniu miesiąca, zwykle do 8 a.m. Pacific. Szacuje sprzedaż i przychody w USD, używając kroczącej średniej kursów wymiany z poprzedniego miesiąca, co czyni go dobrym do wychwytywania trendu i błędnym do uzgadniania wypłaty. Payments and Financial Reports to widok rozliczony: generowany raz w miesiącu według kalendarza fiskalnego Apple, dostępny do pierwszego piątku bieżącego miesiąca fiskalnego za poprzedni miesiąc fiskalny, i generowany tylko jeśli w tym okresie były zakupy lub zwroty. Używa ostatecznego kursu wymiany zastosowanego do Twojej wypłaty. Ten raport jest zapisem księgowym. Obok obu Twój serwer otrzymuje App Store Server Notification REFUND w chwili, gdy Apple przyznaje zwrot, powiązane z jednym transaction id.

Google dzieli tak samo

Google Play odzwierciedla podział. earnings report jest zapisem księgowym, generowanym miesięcznie i zwykle dostępnym do 5. dnia następnego miesiąca, i wymienia zwroty jako osobne typy transakcji: Charge refund za pieniądze zwrócone kupującemu i Google fee refund za opłatę serwisową, którą Google oddaje, każdy oznaczony jako Full lub Partial. estimated sales report to widok analityczny o niskim opóźnieniu, pokazujący, ile kupujący zapłacili przed podatkami i opłatami, a Google mówi wprost, że nadaje się do analityki i nie jest zalecany do księgowości. Po stronie serwera otrzymujesz Real-time Developer Notification w czasie rzeczywistym i możesz odczytać zwrot z Voided Purchases API.

Jak Apple pokazuje zwrot wewnątrz raportu i pułapka ujemnego wiersza

Otwórz Summary Sales Report, a zwrot nie odejmuje się po cichu od sprzedaży. Pojawia się jako osobny wiersz. Units i Customer Price w tym wierszu są ujemne, po czym w ogóle rozpoznajesz zwrot, a wartość Developer Proceeds nie zachowuje się tak jak cena. Raport nie jest z natury pomniejszony o zwroty. Wymienia wiersze zwrotów obok wierszy sprzedaży, a Twoim zadaniem jest je posegregować. Zsumuj kolumnę Units na oko, a albo policzysz podwójnie, albo w ogóle przeoczysz zwroty, bo wiersz zwrotu minus jeden stoi w tej samej kolumnie co Twoja dodatnia sprzedaż.

Praktyczna zasada jest prosta: znajdź zwroty po ujemnych Units, dodaj te wiersze osobno i nigdy nie zakładaj, że raport już je za Ciebie zbilansował. Liczba Twoich zwrotów nadająca się na featured snippet to liczba wierszy z ujemnymi Units, a nie arytmetyczna suma kolumny.

Powierzchnia AppleDo czego służyKiedy się aktualizujeJak pojawia się zwrot
Sales and TrendsSzybki szacunek trendu, nie księgowośćCodziennie następnego dnia, miesięcznie około 5 dni po końcu miesiącaUjemne units w trendzie, szacowane w USD
Summary Sales ReportSzczegóły do pobrania za Sales and TrendsTen sam rytm co Sales and TrendsOsobny wiersz, ujemne Units i ujemna Customer Price
Payments and Financial ReportsZapis księgowy i wypłatMiesięcznie według kalendarza fiskalnego Apple, do pierwszego piątkuRozliczone odliczenie od przychodów tego miesiąca fiskalnego
Powiadomienie serwera REFUNDKontrola dostępu w czasie rzeczywistymChwila, gdy Apple przyznaje zwrotJedno zdarzenie, jedno transaction id

Kalendarz fiskalny to powód, dla którego Twoje sumy miesięczne nigdy się nie zgadzają

Oto najważniejszy pojedynczy powód, dla którego staranny arkusz nadal odmawia się zbilansowania. Raporty finansowe Apple nie działają na miesiącach kalendarzowych. Działają na kalendarzu fiskalnym 4-4-5, gdzie większość miesięcy fiskalnych ma cztery tygodnie, a co trzeci pięć tygodni. Deweloper porównujący Financial Report ze zwykłym oknem od stycznia do stycznia porównuje dwa różne zakresy dni, więc sumy zwrotów nie mogą się zgadzać, nawet jeśli każda liczba u podstaw jest poprawna. Deweloperzy na własnych forach Apple obserwowali, jak liczby Sales i liczby Financial Report rozchodziły się o tysiące dolarów właśnie z tego powodu, a luka rosła z każdym miesiącem, w którym pozwalali jej narastać.

earnings report Google jest miesięczny, ale niesie własne rozłożenie w czasie i własną strefę czasową, a żadne z nich nie jest zegarem UTC Twojego serwera. Głębsza pułapka jest wspólna dla obu sklepów: zwrot jest przypisywany do daty rozliczenia, a nie do daty pierwotnej sprzedaży. Zwróć zakup z marca na początku kwietnia, a obniży on Twoje liczby za kwiecień, a nie za marzec. Zestaw dwa miesiące po ich etykietach, a zwrot wyda się zniknąć z jednego i pojawić w drugim.

Dwa wydrukowane arkusze ułożone obok siebie, gdy dłoń śledzi jeden wiersz przez oba, ilustrujące uzgadnianie raportów zwrotów po transaction id

Ile kosztuje zwrot i w którym raporcie go czytać

Uzgadnianie to w istocie pytanie księgowe, więc podążaj za pieniędzmi. Przy zwrocie sklep oddaje własną prowizję, co oznacza, że kwota, która faktycznie opuszcza Twoje konto, to Twój udział w sprzedaży, a nie pełna cena, którą klient widzi zwróconą. Na Google Play ten zwrot jest widocznym wierszem: typ transakcji Google fee refund w Twoim earnings report to opłata serwisowa wracająca do Ciebie, stojąca obok Charge refund, który poszedł do kupującego. W App Store Apple odejmuje Twoje przychody po prowizji i oddaje swoją prowizję w tym samym ruchu, więc Financial Report pokazuje odliczenie pomniejszone o udział Apple.

Rozłożenie przepływu gotówki w czasie to miejsce, gdzie deweloperzy są zaskakiwani. Na Google Play, jeśli zwrócisz zamówienie, zanim Google Ci za nie zapłaci, po prostu nigdy nie otrzymasz tej kwoty. Jeśli zwrócisz po wypłacie, Google odejmie ją od przyszłej wypłaty. A jeśli fala zwrotów zepchnie Twoje saldo na minus i pozostanie ujemne przez co najmniej 48 godzin, Google obciąży kontem bankowym, które normalnie otrzymuje Twoje wypłaty, kwotą niedoboru. Chargeback to ostrzejsza wersja tego samego zdarzenia: na Google Play, dla zamówień złożonych 3 sierpnia 2026 lub później, chargeback przenosi cenę zakupu plus opłaty banku na dewelopera i ląduje w raporcie za późniejszy miesiąc niż sprzedaż.

Przy zwrocieApp StoreGoogle Play
Co opuszcza Twoje kontoTwoje przychody po prowizjiCena zakupu minus opłata serwisowa Play
Co sklep oddajeProwizję AppleOpłatę serwisową, jako wiersz Google fee refund
Z którym raportem uzgadniaćPayments and Financial ReportsEarnings report
Kiedy się rozliczaMiesiąc fiskalny, w którym zostało przetworzone, do pierwszego piątku po nimOdejmowane od wypłaty za ten okres lub następny
Zwrot z chargebackApple pochłania machinę sporu kartowegoOd 3 sie 2026 cena plus opłaty banku przechodzą na Ciebie

Jak uzgodnić raporty zwrotów, krok po kroku

Zadanie staje się proste, gdy przestaniesz próbować zrównać każdą liczbę i zamiast tego przypiszesz każdą liczbę do pytania, na które odpowiada. Są tylko dwa pytania: ile pieniędzy się przemieściło i kto nadal ma dostęp.

  • Zdecyduj o pytaniu, zanim otworzysz raport. Dla pieniędzy odpowiedź leży w Financial Report Apple i earnings report Google, kropka. Dla dostępu odpowiedź leży w powiadomieniach serwera. Nigdy nie uzgadniaj jednego z drugim.
  • Wybierz transaction id jako klucz łączenia na wszystkich czterech powierzchniach. To jedyne pole, które dzielą sprzedaż, jej zwrot, raporty i Twój webhook.
  • W Apple, gdy Summary Sales Report i Twój webhook się nie zgadzają, wywołaj endpoint Get Refund History w App Store Server API pod /inApps/v2/refund/lookup/{transactionId}. Zwraca podpisane zwrócone transakcje dla klienta, z revocationDate i revocationReason, po jednym transaction id naraz, i stronicuje przez ich historię. Ten endpoint jest rozstrzygający.
  • W Google porównaj wiersze Charge refund w earnings report z tym, co Voided Purchases API raportuje dla tych samych zamówień, i pamiętaj, że częściowy zwrot jest oznaczony jako Partial i nie wyzeruje pierwotnego obciążenia.
  • Wyrównaj do zegara raportu, nie do swojego. Zegar Apple to miesiąc fiskalny w czasie Pacific. earnings report Google ma własny miesiąc i strefę czasową. Twoje logi są niemal na pewno w UTC. Przelicz na kalendarz raportu, zanim porównasz, bo inaczej same granice dni stworzą fantomowe rozbieżności.
  • Spodziewaj się, że szacunek się przesunie. Sales and Trends to szacunek i będzie się zmieniał, w miarę jak transakcje się rozliczają. Uzgadniaj z Financial Report, nigdy z szacunkiem i nigdy z wczorajszą migawką szacunku.

Gdy serwer pokazuje więcej zwrotów niż raport

Najczęstsza panika to znalezienie więcej powiadomień REFUND na serwerze niż wierszy zwrotów w raporcie sprzedaży za ten sam okres. To zwykle nie są utracone pieniądze. Te dwie powierzchnie liczą różne momenty, powiadomienie może wyprzedzać wiersz raportu o dni, a częściowy zwrot lub ponownie złożone żądanie może wygenerować więcej niż jedno zdarzenie. Deweloperzy zgłaszali dokładnie taki kształt, tysiące powiadomień REFUND wobec mniejszej liczby wierszy z ujemnymi Units za ten sam miesiąc. Rozwiązuj to za każdym razem tak samo: weź transaction id, które widział Twój serwer, przepuść je przez Get Refund History i pozwól własnemu zapisowi Apple rozstrzygnąć, które faktycznie zostały zwrócone i za ile.

Krótka wersja

Nie zmusisz szacunku Apple, Financial Report Apple, earnings report Google i swojego webhooka, by wszystkie pokazały tę samą sumę zwrotów tego samego dnia, i powinieneś przestać próbować. Czytaj każdy pod kątem tego, do czego jest zbudowany, by Ci powiedzieć. Ufaj Financial Report i earnings report w kwestii pieniędzy, ufaj powiadomieniom serwera w kwestii dostępu, a gdy dwie powierzchnie się kłócą, połącz je po transaction id i pozwól, by wyszukanie Get Refund History lub Voided Purchases przecięło spór. Uzgodnione zwroty to nie dopasowane sumy. To dopasowane transakcje.

Często zadawane pytania

Dlaczego moja sprzedaż w App Store i Financial Report się nie zgadzają?
Mierzą różne rzeczy na różnych zegarach. Sales and Trends to szybki szacunek w USD z kroczącym średnim kursem wymiany, podczas gdy Payments and Financial Reports to rozliczony zapis księgowy na kalendarzu fiskalnym Apple 4-4-5, z ostatecznym kursem wymiany. Ponieważ miesiące fiskalne nie są miesiącami kalendarzowymi, a zwroty rozliczają się później niż sprzedaż, obie sumy z założenia się rozchodzą. We wszystkim, co dotyczy pieniędzy, uzgadniaj z Financial Report.
Jak zwroty są pokazywane w App Store Summary Sales Report?
Zwrot pojawia się jako osobny wiersz z ujemnymi Units i ujemną Customer Price. Raport nie jest pomniejszony o zwroty, więc wiersze zwrotów stoją obok wierszy sprzedaży, zamiast je znosić. Rozpoznaj zwroty po ujemnych Units i zsumuj te wiersze osobno, bo sumowanie kolumny na oko policzy Twoje zwroty błędnie.
Kiedy zwroty pojawiają się w earnings report Google Play?
earnings report jest generowany miesięcznie i zwykle dostępny do 5. dnia następnego miesiąca. Zwrot pojawia się jako dwa typy transakcji, Charge refund za pieniądze zwrócone kupującemu i Google fee refund za opłatę serwisową, którą Google oddaje Tobie, każdy oznaczony jako Full lub Partial. Jeśli zwróciłeś, zanim Google Ci zapłacił, nigdy nie otrzymasz tej kwoty; jeśli po, jest odejmowana od przyszłej wypłaty.
Dlaczego mój serwer pokazuje więcej powiadomień REFUND niż raport sprzedaży?
Bo te dwa liczą różne momenty. Twój serwer słyszy zdarzenie zwrotu w czasie rzeczywistym, podczas gdy raport sprzedaży rejestruje rozliczony wiersz później, a częściowe lub ponownie złożone zwroty mogą wygenerować więcej niż jedno powiadomienie. Aby rozstrzygnąć różnicę, weź transaction id, które widział Twój serwer, i przepuść je przez endpoint Get Refund History w App Store Server API, który zwraca własny zapis Apple tego, co faktycznie zostało zwrócone.
Której liczby zwrotów użyć do księgowości?
Payments and Financial Reports Apple i earnings report Google Play. To rozliczone zapisy o jakości księgowej. Sales and Trends Apple i estimated sales report Google to szybkie analityki, o których oba sklepy mówią, byś nie używał ich do księgowości, a powiadomienia serwera służą do kontroli dostępu, a nie do księgowania przychodu.
Czy zwrot pojawia się w tym samym miesiącu co pierwotna sprzedaż?
Zwykle nie. Zwrot jest w obu sklepach przypisywany do daty rozliczenia, a nie do daty pierwotnego zakupu. Sprzedaż z marca zwrócona w kwietniu obniża Twoje sumy za kwiecień, więc dopasowanie dwóch miesięcy po ich etykietach sprawi, że zwrot będzie wyglądał, jakby zniknął z jednego miesiąca i pojawił się w innym. Zamiast tego dopasuj po transaction id.

Ź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ć.