Кожен тип покупки в застосунку повертається по-різному, і лише два з них колись питають про ваш бік
Витратні товари, невитратні товари, автоматично поновлювані підписки та непоновлювані підписки, кожен повертається за власними правилами. Деякі можна відновити, деякі зникають щойно витрачені, і лише запит щодо витратного товару та запит щодо підписки колись просять розробника про докази. Ось як тип покупки в застосунку, який ви продаєте, змінює те, що повернення робить із вами.

Головне
- У App Store є чотири типи покупок у застосунку, витратний, невитратний, автоматично поновлювана підписка та непоновлювана підписка, і кожен повертається за різними правилами. Google Play впорядковує той самий каталог на одноразові продукти та підписки.
- Лише два процеси Apple колись просять розробника про докази, перш ніж ухвалити рішення про повернення, CONSUMPTION_REQUEST для витратного товару та, від WWDC24, CONSUMPTION_REQUEST для автоматично поновлюваної підписки. Невитратні товари та непоновлювані підписки рідко взагалі відкривають це вікно.
- Витратні товари несуть найбільший ризик повернення. Вони витрачаються під час доставлення, їх не можна відновити, а їхня цінність зникає до того, як надійде повернення, і саме тому Apple просить ваші дані про споживання щодо них.
- Невитратні товари є постійними та відновлюваними, тож повернення має відкликати право, яке обліковий запис клієнта досі пам'ятає. У Google Play покупка, яку ви не підтвердите протягом 72 hours, повертається автоматично, а доступ відкликається.
- Автоматично поновлювані підписки повертаються за годинником. Apple обчислює, скільки було спожито, з часу, що минув, а не з числа, яке ви надсилаєте, тож ваше завдання це чесний refundPreference та докази використання за ним.
- У App Store лише Apple може оформити повернення за покупку в застосунку. У Google Play ви можете повернути замовлення самостійно з Play Console, що робить тип продукту, який ви продали, вашою власною відповідальністю.
- Хоч би який тип, повернення повертає клієнту комісію магазину, але ніколи не повертає ваших витрат. Обчислення, виклики API, сховище та виплати, які витратний товар уже спричинив, залишаються втраченими.
Тип покупки в застосунку, який ви обрали в App Store Connect або Play Console, вирішує більше, ніж лише те, як продукт продається. Він вирішує, як поводиться повернення, коли воно надходить, чи може клієнт отримати товар назад безкоштовно опісля, і чи вас колись спитають про ваш бік, перш ніж гроші рушать. Пакет монет, довічне розблокування, місячна підписка та одноразовий сезонний абонемент це чотири різні юридичні та технічні об'єкти, і правила повернення поводяться з ними саме так. Більшість розробників надсилають їх усі через той самий код покупки, а потім дивуються, чому повернення відчуваються непослідовними. Вони не непослідовні. Вони специфічні для типу.
Ось що таке кожен тип покупки в застосунку, як повернення в нього влучає, і чому лише два з чотирьох колись спрямовують рішення через ваш сервер.
Чотири типи покупок у застосунку, і чому повернення діляться за ними
Apple визначає чотири типи продуктів. Витратний товар використовується та купується знову: ігрова валюта, підказки, поповнення енергії. Невитратний товар купується один раз і зберігається назавжди: pro-розблокування, оновлення з видаленням реклами, завантажуваний набір рівнів. Автоматично поновлювана підписка виставляє рахунок у повторюваному циклі, доки клієнт не скасує. Непоновлювана підписка надає доступ на фіксований проміжок, що не поновлюється самостійно, як сезон контенту, проданий одним терміном.
Google Play впорядковує той самий каталог інакше, але приходить до того самого місця. Він ділить продукти на одноразові продукти та підписки, а одноразовий продукт позначається як витратний чи ні залежно від того, чи ваш застосунок споживає його після покупки. Слова відрізняються. Наслідки повернення ні.
| Тип покупки в застосунку | Відновлюваність після повернення | Цінність на момент повернення | Чи просить Apple ваші докази |
|---|---|---|---|
| Витратний | Ні, не можна відновити | Зазвичай уже витрачено | Так, CONSUMPTION_REQUEST |
| Невитратний | Так, прив'язаний до облікового запису | Досі утримується, право відкликано | Рідко |
| Автоматично поновлювана підписка | Так, поки активна | Пропорційно часу, що минув | Так, від WWDC24 |
| Непоновлювана підписка | Ваш застосунок має її відновити | Термін частково минув | Рідко |
Витратні товари це тип, у який справді цілить шахрайство з поверненнями
Витратний товар це найважчий випадок повернення, з яким ви зіткнетеся, і не випадково саме навколо нього Apple збудувала запит на споживання. Тієї миті, коли клієнт купує 10,000 монет, а ваш сервер їх надає, цінність доставлено. Якщо він витратить ці монети, а потім подасть на повернення, магазин може повернути його гроші, але монети зникли, а разом із ними те, що коштувало вам їх надати. Власні інструменти Apple відображають це: витратний товар покидає запис транзакції щойно завершено і ніколи не несе дати скасування, бо немає нічого постійного, що можна скасувати.
Ось чому витратний товар це тип продукту, де докази окупаються. Коли клієнт запитує повернення за витратний товар, Apple надсилає вашому серверу CONSUMPTION_REQUEST і чекає до 12 hours на виклик Send Consumption Information. У цьому виклику ви встановлюєте deliveryStatus і, якщо ви доставили, consumptionPercentage. Відсоток це ціле число в milliunits від 0 до 100,000, де 100,000 означає, що клієнт використав усю покупку. Баланс монет, який ваші записи показують повністю витраченим, це 100,000, який ви можете повідомити, і це найсильніший окремий факт, який ви можете поставити перед заявою про ненавмисну покупку.
Витратні товари не можна відновити, тож час це все
Оскільки витратний товар не можна відновити, ви не можете забрати його назад так, як можете відкликати підписку. Щойно повернення надано, ваш єдиний захист це запис, який ви вели на момент продажу. Якщо ви не зареєстрували доставлення та споживання, коли це сталося, ви відтворюєте це під годинником на 12 hours, що є найгіршою миттю шукати дані. Записуйте це на вході, а не на виході.
Підписки повертаються за годинником, який ви не контролюєте
Автоматично поновлювані підписки це те, де більшість застосунків заробляють гроші, і оновлення повернень із WWDC24 нарешті спрямувало їх через те саме вікно доказів, що й витратні товари. Від App Store Server Notifications version 2.11 запит на повернення для автоматично поновлюваної підписки також запускає CONSUMPTION_REQUEST. Тож повернення підписок, які раніше ухвалювалися цілком без вас, тепер надходять із доданим вікном на 12 hours.
Заковика в тому, як вимірюється споживання. Для автоматично поновлюваної підписки Apple не хоче, щоб ви вигадували відсоток використання. Вона обчислює споживання сама з часу, що минув, тож той, хто на шостому місяці річного плану, читається приблизно як наполовину спожитий, хоч би що ви надіслали. Ваш важіль це не відсоток. Це чесний refundPreference зі значенням GRANT_FULL, GRANT_PRORATED або DECLINE, підкріплений хоч би яким сигналом використання, який ви справді маєте. Надішліть уподобання, яке підтримують докази, і дайте Apple його зважити.
Непоновлювані підписки ближчі до одноразового розблокування
Непоновлювана підписка це фіксований термін, який клієнт купує один раз, і для цілей повернення вона поводиться радше як невитратний товар, ніж як автоматично поновлюваний план. Apple рідко спрямовує до неї CONSUMPTION_REQUEST, і немає автоматичного поновлення, проти якого нараховувати пропорцію. Ваш застосунок відповідає за відстеження терміну та відновлення його на пристроях клієнта, тож повернення означає завершення вікна доступу, яким ви керували самі, а не того, яке Apple відлічувала за вас.
Невитратні товари є постійними, що ріже в обидва боки
Невитратний товар це найчистіша річ для продажу і тиха пастка під час повернення. Він купується один раз, він прив'язаний до магазинного облікового запису клієнта назавжди, і магазин може відновити його на будь-який пристрій на вимогу. Ця постійність є перевагою, доки не надійде повернення, бо тепер ви маєте відкликати право, яке обліковий запис досі пам'ятає. Якщо ваша логіка відкликання перевіряє лише на момент покупки і ніколи не переперевіряє, клієнт після повернення може відновити покупки і зайти назад прямо в платну функцію.
Google Play додає тут одну тверду грань, яка ловить нових розробників. Якщо ваш застосунок не підтвердить покупку протягом 72 hours, Google автоматично її повертає і відкликає право. Невитратний товар, який ваш код виставлення рахунків забув підтвердити, не залишається у підвішеному стані. Він розвертається сам, і клієнт втрачає доступ до чогось, за що заплатив, без власного запиту.

Те, хто взагалі може оформити повернення, змінюється за магазином і типом
Перш ніж планувати будь-яку реакцію на повернення, знайте, хто тримає перо. У App Store лише Apple може оформити повернення за покупку в застосунку, для кожного типу продукту. Ваш код StoreKit не може повернути покупку, і ваша служба підтримки теж. Ви можете надіслати дані про споживання, щоб вплинути на рішення Apple для двох типів, які відкривають вікно, і це вся ваша пряма контроль.
Google Play протилежний. Ви можете повернути одноразовий продукт або замовлення підписки самі з Play Console чи через API Voided Purchases та повернень, повністю або частково. Ця свобода є також відповідальністю: повернення, яке ви оформлюєте на витратний товар, усе одно має відкликати товар у вашому власному бекенді, бо Google не знає, що ваші монети витрачені. Тип продукту, який ви обрали, вирішує, наскільки чистим є це відкликання.
Скільки кожен тип повернення насправді вам коштує
Повернена ціна це рядок, за яким усі стежать, і найменша частина рахунку. Коли будь-який магазин надає повернення, він розвертає разом із ним свою власну комісію, тож ви втрачаєте чистий виторг, а не повну прейскурантну ціну. Це добра новина, і на цьому вона закінчується. Те, що магазин повертає, це частка, яку він узяв. Те, що він ніколи не повертає, це те, що ви вже витратили на виконання продажу, і це число різко змінюється за типом продукту.
Витратний товар це дороге повернення
Повернений витратний товар це той, що може коштувати більше за свою ціну. Скажімо, клієнт купує 5,000 кредитів, кожен з яких запускає платний виклик інференсу, витрачає 4,000 з них, а потім подає на повернення. Магазин повертає ціну та свою комісію, але обчислення, рахунок API за токен, зображення, які ви згенерували, і будь-яка виплата творцю, яку ці кредити профінансували, усі витрачені. Повернення невитратного товару принаймні повертає право назад під ваш контроль. Повернення витратного товару повертає продаж, повну вартість якого ви вже сплатили.
Chargeback це важча версія того самого рахунку
Повернення і chargeback це різні події, і розрив між ними тепер має дату. Коли клієнт оскаржує списання у своєму банку замість того, щоб просити магазин, завершений chargeback є остаточним на рівні банку. Для замовлень Google Play, розміщених у день August 3 2026 або пізніше, програний chargeback виставляє розробнику рахунок на ціну покупки за вирахуванням сервісного збору Play, плюс збір за chargeback банку, фіксований платіж, який встановлює карткова мережа. Google Play спрямовує chargeback до вас на розгляд через orders.reviewrefund із вікном на 24 hours, єдиний процес Google, який просить ваші докази, і він може влучити в будь-який тип продукту.
Як реагувати, коли тип вирішує правила
Ви не можете змінити, на який тип продукту влучить повернення після продажу, але ви можете припинити обробляти всі чотири однаково.
- Реєструйте доставлення та споживання витратних товарів у мить, коли вони відбуваються. Цей журнал це весь ваш захист щодо єдиного типу, який не можна відновити, а вікно на 12 hours надто коротке, щоб будувати його з нуля.
- Переперевіряйте права невитратних товарів після повернення, а не лише під час покупки. Виклик відновлення має перевіряти поточний статус, щоб клієнт після повернення не міг зайти назад у платну функцію.
- Відповідайте на обидва вікна доказів автоматично. Запит на споживання тривалістю 12 hours та розгляд chargeback тривалістю 24 hours не можуть чекати, доки хтось прочитає скриньку, і вони не подовжуються заради часових поясів.
- Оцінюйте свій захист від повернень лише за двома оскаржуваними типами. Зростання кількості повернень за типами, які ніколи не відкривали вікна, це продуктовий або ціновий сигнал, а не провал ваших доказів.
Ніщо з цього не про перемогу над магазином. Це про приведення вашої реакції у відповідність до об'єкта, який насправді був проданий. RefundHalt відповідає на CONSUMPTION_REQUEST для витратного товару та підписки і на розгляд Google Play orders.reviewrefund автоматично, всередині вікна, з доказами доставлення та використання, які ви зареєстрували на момент продажу, і він зберігає повернення, які жодне вікно ніколи не дало вам оскаржити, у власному реєстрі, щоб число, яким ви себе міряєте, залишалося чесним.
Поширені запитання
- Чи можу я повернути покупку в застосунку самостійно?
- Це залежить від магазину. У App Store лише Apple може оформити повернення за покупку в застосунку, для кожного типу продукту, тож ваш єдиний вплив це дані про споживання, які ви надсилаєте у двох процесах, що їх просять. У Google Play ви можете повернути одноразовий продукт або замовлення підписки самі з Play Console чи через API повернень, повністю або частково.
- Який тип покупки в застосунку має найвищий ризик повернення?
- Витратні товари. Витратний товар витрачається під час доставлення, його не можна відновити, а його цінність зазвичай зникає до того, як надійде запит на повернення. Саме тому Apple надсилає CONSUMPTION_REQUEST для витратних товарів і просить ваші дані про споживання, і тому вартість обчислень чи API за витратним товаром може зробити його повернення дорожчим за продаж.
- Чи надсилає Apple запит на споживання для кожного типу покупки?
- Ні. Apple надсилає CONSUMPTION_REQUEST для витратних товарів і, від оновлення WWDC24, для автоматично поновлюваних підписок. Невитратні товари та непоновлювані підписки рідко відкривають це вікно доказів. Для кожного типу саме повернення все одно ухвалює Apple, а не ви.
- Чи може клієнт відновити витратний товар після повернення?
- Ні. Витратні товари не можна відновити, що робить їхні повернення остаточними для вас. Невитратні товари та активні підписки прив'язані до магазинного облікового запису клієнта і можуть бути відновлені, тож повернення щодо них має відкликати право, яке ваш бекенд має переперевірити, а не довіряти йому з моменту покупки.
- Як повернення підписок обчислюються інакше?
- Для автоматично поновлюваної підписки Apple обчислює, скільки було спожито, з часу, що минув, а не з відсотка, який ви надсилаєте, тож половина терміну читається приблизно як наполовину спожита. Ваша роль це чесний refundPreference зі значенням GRANT_FULL, GRANT_PRORATED або DECLINE, підкріплений доказами використання, які ви маєте, а не вигадане число споживання.
Джерела та додаткове читання
- Apple Developer: In-App Purchase (product types)
- Apple Developer: ConsumptionRequest (App Store Server API)
- Apple Developer: Send Consumption Information
- Google Play Console Help: Understand in-app product types
- Android Developers: One-time products (Play Billing)
- Android Developers: Process purchases and acknowledgement (72-hour auto-refund)
- WWDC24: Explore App Store server APIs for In-App Purchase
RefundHalt
Автопілот повернень для App Store і Google Play
Читайте далі
Закони про повернення коштів за застосунки змінюються залежно від країни клієнта, і майже жоден з них не дає вам права голосу
Закони про повернення коштів за застосунки відрізняються між ЄС, Великою Британією та США, але для більшості продажів застосунків результат однаковий. 14-денне право на відмову в ЄС зазвичай скасовується під час оформлення покупки, покупці у США покладаються на політику магазину, і жодне законодавче повернення не дає вам змоги відповісти. Лише два магазинні потоки коли-небудь запитують вашу сторону.
Friendly fraud, це зворотний платіж, за якого клієнт уже отримав те, за що заплатив, і це єдиний спір, на який ваші докази ще можуть вплинути
Friendly fraud виникає, коли справжній клієнт купує вашу внутрішню покупку в застосунку, користується нею, а потім каже своєму банку, що списання було помилковим. Товар зникає, а гроші повертаються. Ось скільки це коштує розробнику застосунку, чому це зростає та яке коротке вікно для заперечення дають вам Apple і Google.