Повернення коштів за платний застосунок ніколи не доходить до вашого сервера, тому помітити його має сам застосунок
Повернення коштів за застосунки з оплатою під час купівлі оминають усі сповіщення, які слухає ваш сервер. Google дає покупцям дві години на повернення й видаляє застосунок, Apple за вашою угодою може повернути кошти протягом 90 днів, і жоден із них не просить доказів. Ось що повідомляє кожен магазин, скільки це коштує і як перевірити повернення в застосунку.

Головне
- Повернення коштів за платний застосунок стосується ціни самого завантаження застосунку, а не вбудованої покупки, і ні Apple, ні Google не документують для нього серверного сповіщення.
- Довідка Play Console від Google каже, що після купівлі платного застосунку покупець має до двох годин, щоб повернути його з повним поверненням коштів, і повернути конкретний застосунок можна лише один раз.
- Правила повернення коштів Google Play кажуть, що в межах повернення застосунок видаляється, а покупець, який знову купить той самий застосунок, другого повернення не отримає.
- Тип REFUND в App Store Server Notifications V2 від Apple охоплює витратні та невитратні покупки, автоматично поновлювані та непоновлювані підписки. Покупки самого застосунку в цьому списку немає.
- Apple Developer Program License Agreement, Schedule 2 розділ 6.3, дозволяє Apple повернути кошти покупцеві, який відмовляється протягом 90 днів після завантаження, а розробник відшкодовує Apple цю суму.
- Документація StoreKit від Apple вказує revocationDate в AppTransaction, підписаному записі про купівлю застосунку, який застосунок може перевірити на пристрої.
- Ні CONSUMPTION_REQUEST, ні orders.reviewrefund від Google Play не задокументовані для покупок завантаження застосунку, тому рішення про повернення коштів за платний застосунок ухвалюють без доказів розробника.
Застосунки з оплатою під час купівлі повертають через бічні двері, за якими більшість інструментів для роботи з поверненнями ніколи не стежить. Коли покупець повертає сам застосунок, а не щось куплене всередині нього, Apple і Google забирають гроші з вашої виплати, не надіславши вашому серверу жодного сповіщення. Google принаймні видаляє застосунок. На iOS розробники на власних форумах Apple повідомляють, що покупці після повернення коштів і далі ним користуються. Якщо ви продаєте платний застосунок, повернення коштів за нього це єдине повернення, яке ви побачите лише як від'ємний рядок у звіті, якщо застосунок не перевірить його на пристрої.
Правила повернення коштів за платні застосунки в Google Play та App Store
Обидва магазини вважають купівлю завантаження окремим продуктом зі своїми правилами. Ось що каже документація кожного з них.
| Правило | Google Play | App Store |
|---|---|---|
| Швидке самостійне повернення | До двох годин після купівлі, повне повернення | Не задокументовано |
| Довше вікно для запиту | Покупець може подати запит протягом 48 годин, потім звертається до розробника | Apple може повернути кошти протягом 90 днів після завантаження, за Schedule 2 угоди з розробником |
| Скільки разів | Один раз на застосунок. Повторну купівлю повернути не можна | Не задокументовано |
| Що відбувається із застосунком | Видаляється в межах повернення | Не задокументовано. Розробники повідомляють, що покупці зберігають доступ після повернення |
| Розробник може повернути кошти | Так, лише повні повернення, через Play Console | Ні |
| Серверне сповіщення вам | Не задокументовано | Не задокументовано |
| Запит доказів у вас | Не задокументовано | Не задокументовано |
Як працює двогодинне повернення в Google Play
Довідка Play Console від Google каже про це прямо: після купівлі платного застосунку користувач має до двох годин, щоб повернути його з повним поверненням коштів, і повернути застосунок можна лише один раз. Правила повернення коштів для споживачів додають, що протягом 48 годин покупець може отримати повернення залежно від покупки, що в межах повернення застосунок видаляється і що той, хто знову купить той самий застосунок, повернення за нього не отримає. Після 48 годин Google скеровує покупців до розробника.
Як Apple повертає кошти за платний застосунок
В App Store покупець звертається до Apple через reportaproblem.apple.com, обирає причину й позначає застосунок. Apple обіцяє відповідь у строк від 24 до 48 годин. Самостійно повернути кошти за покупку в App Store ви не можете. Зовнішню межу задає ваш договір. Розділ 6.3 Schedule 2 угоди Apple Developer Program License Agreement передбачає, що якщо покупець хоче відмовитися протягом дев'яноста днів після завантаження або застосунок не відповідає вашим специфікаціям чи чинному законодавству, Apple може повернути повну ціну, а ви відшкодовуєте Apple цю суму або надаєте їй кредит на цю суму.
Чому ваш сервер ніколи не дізнається про повернення коштів за платний застосунок
Кожен сигнал про повернення коштів, який надсилають обидва магазини, створено для вбудованих покупок. Apple описує свій notificationType як подію вбудованої або зовнішньої покупки, що спричинила сповіщення. Її тип REFUND охоплює витратну покупку, невитратну покупку, автоматично поновлювану підписку або непоновлювану підписку. Get Refund History повертає вбудовані покупки клієнта, за які повернуто кошти. Завантаження застосунку немає в жодному з цих списків.
У Google так само. Сповіщення для розробників у реальному часі охоплюють підписки, одноразові продукти та анульовані покупки, а productType анульованої покупки це або підписка, або одноразова покупка. Voided Purchases API, за власним описом, застосовується до одноразових вбудованих замовлень і підписок і сягає назад лише на 30 днів.
Чи спричиняє повернення коштів за платний застосунок CONSUMPTION_REQUEST?
Ні. Документація Apple каже, що CONSUMPTION_REQUEST надсилається, коли клієнт просить повернути кошти за витратну вбудовану покупку або автоматично поновлювану підписку. Це один із лише двох процесів повернення в обох магазинах, які просять у розробника докази. Другий це перевірка чарджбеку в Google Play, на яку відповідають через orders.reviewrefund протягом 24 годин, і вона надходить тим самим потоком сповіщень про вбудовані покупки. Жоден із них не задокументовано для завантажень застосунків. Рішення про повернення коштів за платний застосунок ухвалюють без усього, що ви могли б надіслати.
Чи продовжує покупець користуватися застосунком після повернення коштів?
У Google Play правила кажуть, що застосунок видаляється. Щодо iOS, на форумах Apple є теми від розробників, які питають саме про це. В одній, від березня 2025, сказано: «Коли користувач повертає кошти за застосунок з оплатою під час купівлі, він і далі має доступ до застосунку.» Інша, з 2022 року, підозрює, що покупці купують, встановлюють, повертають кошти й користуються далі. Третя, від червня 2025, питає, чи App Store Server Notifications V2 взагалі повідомляють про повернення на рівні застосунку. Жодна з трьох не має відповіді від Apple.
Скільки грошей вам коштує повернення коштів за платний застосунок
Бік виплат передбачуваний. Довідка Play Console каже, що Google повертає свою сервісну комісію, коли ви повертаєте кошти, тож із вашої виплати вираховується ваша частка, а не ціна на вітрині. Повернення, оформлене після того, як Google вам заплатив, вираховується з майбутньої виплати, і якщо ваш баланс залишається від'ємним щонайменше 48 годин, Google може списати кошти з вашого банківського рахунку. З боку Apple договір каже, що ви відшкодовуєте суму, що дорівнює ціні. На практиці RevenueCat у 2022 році повідомив, що Apple вирахувала суму після комісії, показану як Extended Partner Share, тобто Apple не залишила собі свою частку.
Не повертаються ті витрати, яких ви зазнали, щоб обслужити цього покупця. Ось наочний приклад. Платний фотозастосунок за $6.99 застосовує фільтри через хмарну модель і синхронізує проєкти з хмарним сховищем. Ви заплатили за рекламу, яка привела покупця.
| Стаття витрат | Повертається в Google Play | Повертається в App Store |
|---|---|---|
| Ваша частка від $6.99 | Забирається з вашої виплати | Забирається з вашої виплати |
| Сервісна комісія магазину | Повертається вам від Google | Не стягується, за звітом RevenueCat |
| Уже використані хмарні обчислення та виклики API | Ні | Ні |
| Сховище для синхронізованих проєктів | Ні | Ні |
| Витрати на рекламу для залучення покупця | Ні | Ні |
| Поточні серверні витрати, якщо покупець і далі користується застосунком | Припиняються, застосунок видалено | Тривають, доки ваш застосунок не перевірить |
Саме в останньому рядку iOS стає дорогою. Покупець, який залишив застосунок після повернення коштів, і далі звертається до вашого бекенду, і кожен запит до моделі, кожна синхронізація та кожен виклик API після повернення це витрата без виручки за нею. Для платного застосунку без серверних витрат повернення означає втрачений продаж. Для застосунку з бекендом воно може перетворитися на рахунок, що постійно зростає.
Як виявити повернення коштів за платний застосунок усередині застосунку
Оскільки сервер нічого не дізнається, перевірка має починатися на пристрої, а потім повідомляти ваш сервер.
На iOS читайте revocationDate в AppTransaction
AppTransaction це підписаний App Store запис про купівлю застосунку клієнтом. Документація StoreKit від Apple тепер вказує в ньому властивість revocationDate, описану як дата відкликання покупки застосунку. Читайте AppTransaction.shared під час запуску, перевіряйте результат і вважайте revocationDate, відмінне від nil, поверненим завантаженням. Надсилайте підписане значення на свій сервер, щоб він припинив обслуговувати цей акаунт.
- appTransactionID, за словами Apple, залишається незмінним для Apple Account навіть після повернення коштів або повторної купівлі, тож прив'язуйте до нього свої записи, і покупця, який заплатить знову, буде впізнано.
- AppTransaction.refresh() отримує свіжий запис з App Store, але показує запит на вхід. Apple радить викликати його лише після явної дії користувача, наприклад натискання кнопки відновлення покупок.
- Підписане значення зберігається на пристрої. Документація Apple не описує для нього серверного сповіщення, тож ваш сервер знає лише те, що повідомить застосунок.

На Android запитайте в Play Integrity вердикт щодо ліцензії
Видалення з боку Google розв'язує більшість випадків, але копія може його пережити, наприклад установлена з резервної копії в обхід магазину. Play Integrity API повертає appLicensingVerdict для акаунта, у який виконано вхід. LICENSED означає, що користувач має право на застосунок. UNLICENSED означає, що не має, і Google радить показати діалог GET_LICENSED. UNEVALUATED означає, що Google не зміг перевірити, наприклад тому, що користувач не ввійшов у Google Play. Google також зазначає, що на деяких старих пристроях користувач зберігає право після видалення, тож LICENSED не на кожному пристрої доводить чинну покупку.
Зробіть сервер вартовим
Перевірки на клієнті можна вирізати патчем. Захищати варто платну роботу, яку виконує ваш бекенд, тож нехай бекенд відхиляє виклики від акаунта, чий останній звіт був поверненням коштів, вердиктом UNLICENSED або відсутністю вердикту після обраного вами пільгового періоду. Саме це не дає поверненню коштів перетворитися на безкоштовні обчислення.
Коли платному застосунку варто перейти на вбудовані покупки
Власні настанови Apple щодо зміни бізнес-моделі описують перехід від платного застосунку до безкоштовного з вбудованими покупками і використання originalAppVersion в AppTransaction, щоб і далі давати преміум-функції тим, хто купив платну версію. Вигода цього кроку для повернень конкретна. Щойно ціна переходить на невитратну покупку або підписку, повернення надходять як сповіщення REFUND та анульовані покупки, на які ваш сервер може реагувати, а запит на повернення коштів за підписку в App Store спричиняє CONSUMPTION_REQUEST. Це ті сигнали, які слухає RefundHalt і на які відповідає в межах 12-годинного та 24-годинного вікон. Платне завантаження не дає вам жодного з них.
Поширені запитання
- Скільки часу має покупець, щоб повернути платний застосунок у Google Play?
- До двох годин після купівлі для повного повернення коштів, згідно з довідкою Play Console від Google, і лише один раз на застосунок. Правила повернення коштів Google також кажуть, що покупець може отримати повернення протягом 48 годин, після чого Google скеровує його до розробника. У межах повернення застосунок видаляється.
- Чи сповіщає Apple мій сервер, коли хтось повертає кошти за мій платний застосунок?
- Таке сповіщення не задокументовано. App Store Server Notifications від Apple охоплюють події вбудованих покупок, а тип REFUND перелічує лише витратні та невитратні покупки, автоматично поновлювані та непоновлювані підписки. Застосунок може прочитати revocationDate в AppTransaction на пристрої й повідомити його вашому серверу.
- Чи зберігає покупець доступ до платного застосунку на iOS після повернення коштів?
- Розробники на форумах Apple повідомляють, що зберігає, а документація Apple не описує жодного кроку, який видаляє застосунок після повернення коштів. Перевіряйте revocationDate в AppTransaction під час запуску, і нехай ваш сервер припиняє обслуговувати акаунти, які повідомляють про повернене завантаження.
- Чи можу я сам повернути кошти за платний застосунок?
- У Google Play так. Play Console дає змогу оформлювати повні повернення за платні застосунки, але ніколи часткові, і Google повертає свою сервісну комісію. В App Store ні. Повернути кошти за покупку в App Store може лише Apple.
- Чи можу я оскаржити повернення коштів за платний застосунок даними про використання?
- Ні. CONSUMPTION_REQUEST від Apple задокументовано для витратних покупок і автоматично поновлюваних підписок, а перевірка чарджбеку в Google Play через orders.reviewrefund надходить через сповіщення, створені для вбудованих продуктів і підписок. Жоден магазин не документує процесу надання доказів для купівлі самого застосунку.
Джерела та додаткове читання
- 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
Автопілот повернень для App Store і Google Play
Читайте далі
Якщо ваш застосунок досі працює на App Store Server Notifications V1, Apple ніколи не питає вас про повернення коштів за підписки
Apple визнала App Store Server Notifications V1 застарілою версією в червні 2023 року, і вона так і не отримала CONSUMPTION_REQUEST для підписок, REFUND_DECLINED чи REFUND_REVERSED. Розповідаємо, що пропускає сервер на V1, скільки це коштує і як перейти на V2, не втративши жодного повернення.
Одне повернення коштів за місячною підпискою Apple із 12-місячним зобов'язанням може завершити весь рік або лише один його місяць
Місячна підписка Apple із 12-місячним зобов'язанням ділить повернення коштів на два випадки. Якщо повернути минулий місяць, оплата триває. Якщо повернути поточний місяць, зобов'язання завершується одразу. Розповідаємо, як кожен випадок доходить до вашого сервера, скільки він коштує і що надсилати Apple.