Все статьи
Подробный разбор8 мин чтения

Apple теперь продаёт вашу подписку целым компаниям по местам, и возврат многоместной подписки устроен иначе

22 октября 2026 года Apple включила многоместные подписки для компаний и школ, по умолчанию. Одна покупка теперь покрывает многих людей, удаление мест приходит уведомлениями REVOKE, а эндпоинт для доказательств по возвратам отказывается работать с назначенными местами. Что меняется и сколько это стоит.

Небольшая офисная команда за общим столом, у каждого в руках iPhone или iPad с одним и тем же рабочим приложением, купленным как одна из многоместных подписок Apple

Главное

  • С 22 октября 2026 года организации, использующие Apple Business или Apple School Manager, могут купить автовозобновляемую подписку приложения оптом через одну покупку In-App Purchase в Apple, назначить места через свои инструменты управления устройствами и в любой момент добавлять или удалять места.
  • Apple включила многоместные покупки по умолчанию в App Store Connect. Подписки, созданные до 14 сентября 2026 года, которые не используют StoreKit 2 или у которых включён Семейный доступ, изначально отключены. Подписки в заказных приложениях (custom apps) отключить нельзя вовсе.
  • При многоместной покупке поле quantity в payload транзакции Apple сообщает число мест, а каждый, кто получает место, получает транзакцию с inAppOwnershipType, равным ASSIGNED.
  • Когда организация отзывает у человека назначенную ему подписку, Apple отправляет уведомление REVOKE, а транзакция несёт revocationType ASSIGNMENT_REVOKE, доступный в продакшене с 23 октября 2026 года.
  • Эндпоинт Apple Send Consumption Information, ответ на CONSUMPTION_REQUEST, возвращает InvalidAssignedTransactionNotSupportedError при вызове с назначенной транзакцией, поэтому доказательства по возврату можно отправить только для транзакции покупателя.
  • Поле revocationType в Apple отличает REFUND_FULL от REFUND_PRORATED, а revocationPercentage сообщает возвращённую долю в тысячных долях, то есть 40000 означает 40 процентов.
  • Group Purchases (групповые покупки), где один клиент App Store покупает несколько мест и приглашает других, можно тестировать в песочнице с ноября 2026 года, а в App Store они появятся этой зимой.

С 22 октября 2026 года Apple продаёт подписки на приложения организациям по местам и включила эту опцию большинству разработчиков, не спрашивая. Компании и школы, использующие Apple Business или Apple School Manager, теперь могут купить вашу автовозобновляемую подписку оптом через одну покупку In-App Purchase. Это меняет то, как возврат многоместной подписки выглядит на вашем сервере. Одна транзакция теперь может оплачивать десятки людей, место может исчезнуть вообще без возврата, а эндпоинт, через который вы отстаиваете дело о возврате, отказывается говорить о людях, которые на самом деле пользуются приложением.

Что Apple включила и где об этом объявила

Запуск оформили короткой новостью Apple Developer под заголовком «Offer your subscriptions to businesses and schools». В ней сказано, что организации могут купить нужные места через одну покупку In-App Purchase, затем назначать места и управлять ими через существующие инструменты управления устройствами и в любой момент добавлять или удалять места. Там же сказано, что многоместные покупки включены по умолчанию в App Store Connect, если вы ещё не меняли эту настройку.

Техническая часть появилась за предыдущий месяц в журналах изменений, а не со сцены. App Store Server API 1.22 от 28 сентября добавил поля мест и групповые эндпоинты, только в песочнице. 23 октября однострочное обновление сервера перевело групповые эндпоинты и значение ASSIGNMENT_REVOKE в продакшен. Если ваш обработчик уведомлений не менялся с лета, он теперь получает данные, которые никогда не умел читать.

ДатаЧто изменилосьГде Apple об этом сообщила
Июнь 2026Многоместные подписки анонсированы на WWDC26Сессия 391, Offer subscriptions to groups and organizations
16 сентября 2026Многоместные покупки включены по умолчанию в App Store ConnectНовости Apple Developer
28 сентября 2026quantity сообщает число мест, добавлены ASSIGNED и ASSIGNMENT_REVOKE, только песочницаЖурнал изменений App Store Server API, версия 1.22
22 октября 2026Volume Purchasing (оптовые покупки) запущены для Apple Business и Apple School ManagerНовости Apple Developer
23 октября 2026ASSIGNMENT_REVOKE и групповые эндпоинты работают в продакшенеЖурналы изменений Server API и Server Notifications
Ноябрь 2026Group Purchases можно тестировать в песочницеНовости Apple Developer
Этой зимойGroup Purchases в App StoreНовости Apple Developer

У кого опция включена по умолчанию

Почти у всех. Справочная страница App Store Connect говорит, что подписки, созданные до 14 сентября 2026 года, изначально отключены, только если они не используют StoreKit 2 или у них включён Семейный доступ. Подписки в заказных приложениях автоматически доступны в Apple Business и Apple School Manager, и отключить их нельзя. Изменить настройку может роль Account Holder, Admin или App Manager, а убрать Apple Business или Apple School Manager из одобренной подписки может только Account Holder.

Как многоместная покупка выглядит на вашем сервере

Теперь у одной подписки два вида транзакций. Покупка организации это одна транзакция, и её поле quantity сообщает, сколько мест куплено. Каждый, кто получает место, получает собственную транзакцию. В сессии Apple на WWDC это описано так: App Store назначает транзакцию каждому участнику. Эти транзакции участников несут inAppOwnershipType ASSIGNED, рядом со значениями PURCHASED и FAMILY_SHARED, которые вы, возможно, уже обрабатываете.

Apple чётко говорит, какая запись определяет доступ. Документация Get Customer Groups сообщает, что членство в группе отделено от права доступа и что для открытия контента нужно читать транзакции клиента, а не полагаться на членство в группе. Выдавайте доступ по транзакциям. Используйте групповые эндпоинты только для функций вроде панели администратора.

Поле или значениеЧто оно сообщаетДобавлено
quantityЧисло мест в многоместной покупке28 сентября 2026
inAppOwnershipType = ASSIGNEDУ человека есть доступ через организацию или группу28 сентября 2026
revocationType = ASSIGNMENT_REVOKEПокупатель отозвал подписку у этого человека28 сентября 2026, продакшен 23 октября
revocationType = REFUND_FULL или REFUND_PRORATEDТранзакция возвращена полностью или частично10 декабря 2025
revocationPercentageВозвращённая доля в тысячных долях (40000 = 40%)10 декабря 2025

Удалённое место не равно возврату

Здесь ошибётся большинство обработчиков. Когда организация забирает место у сотрудника, Apple отправляет уведомление REVOKE, того же типа, что и в случае, когда покупатель в Семейном доступе перестаёт делиться покупкой. revocationType транзакции равен ASSIGNMENT_REVOKE, и указание Apple прямое: отзовите у клиента доступ к контенту, который даёт транзакция.

Ничто в этом событии не говорит о движении денег. Если ваш код считает каждый отзыв возвратом, ваша доля возвратов, чистая выручка и все построенные на них оповещения будут учитывать обычную смену персонала как потерянные продажи. Сначала ветвите логику по revocationType.

  • ASSIGNMENT_REVOKE: закройте доступ этому человеку. Не проводите возврат.
  • FAMILY_REVOKE: закройте доступ члену семьи. Не проводите возврат.
  • REFUND_FULL: закройте доступ и проведите всю транзакцию как возвращённую.
  • REFUND_PRORATED: проведите долю из revocationPercentage, затем решите, какой доступ остаётся.
Ряд одинаковых корпоративных iPad на офисном столе, один отставлен в сторону с тёмным экраном, как место, удалённое из многоместной подписки

Почему возврат по назначенному месту не оспорить

Apple по-прежнему сама решает по каждому возврату в App Store. Когда клиент просит возврат, Apple отправляет CONSUMPTION_REQUEST и даёт вам 12 часов на ответ через Send Consumption Information. В многоместной модели человек, который пользуется приложением, и человек, который заплатил, это разные люди, и API Apple теперь проводит между ними жёсткую границу.

Send Consumption Information отклоняет назначенные транзакции

Вызовите Send Consumption Information, его версию V1 или Set App Account Token с назначенной транзакцией, и Apple вернёт InvalidAssignedTransactionNotSupportedError. Apple советует перед вызовом проверять, не равен ли inAppOwnershipType значению ASSIGNED. На практике ваши доказательства уходят на транзакцию покупателя или никуда. Данные об использовании, которые ваше приложение записывает по аккаунтам участников, всё равно стоит хранить: только так можно понять, использовались ли места вообще.

Как выглядит частичный возврат

Apple добавила REFUND_PRORATED и revocationPercentage в декабре 2025 года. В ответе на consumption request можно запросить такой исход через refundPreference со значением GRANT_PRORATED. Для автовозобновляемой подписки Apple просит не отправлять consumptionPercentage вместе с GRANT_PRORATED, потому что сама рассчитывает процент. Если возврат позже отменят, revocationPercentage исчезнет из транзакции.

Могу ли я продлить подписку одному сотруднику в качестве жеста доброй воли?

Нет. Extend a Subscription Renewal Date возвращает AssignedSubscriptionExtensionIneligibleError для назначенной подписки. Apple объясняет это тем, что назначенная подписка продлевается по тому же графику, что и подписка, купленная покупателем, поэтому отдельного участника сдвинуть нельзя.

Во что вам обходится возврат многоместной подписки

Новый риск в масштабе. В сессии Apple на WWDC разбираются оптовые цены с пятью ценовыми ступенями максимум. В примере места стоят $19.99 в месяц до 20 мест, $13.99 за места с 21 по 40 и $10.99 начиная с 41-го места. При таких цифрах заказ на 50 мест стоит $789.50 в месяц, около $15.79 за место. REFUND_FULL по этой одной транзакции возвращает все $789.50, а не цену одной подписки.

Затраты на обслуживание растут так же. Пятьдесят мест означают пятьдесят человек, которые запускают сессии на ваших серверах, делают вызовы сторонних API, оплачиваемые вашими функциями, и заполняют хранилище, за которое вам выставляют счёт. Если владельцы мест из возвращённого заказа сохранят доступ, потому что ваш обработчик посмотрел только на транзакцию покупателя, вы продолжите платить за каждого из них. Пропущенный ASSIGNMENT_REVOKE обходится дешевле, но случается чаще: покупка больше не покрывает этого человека, и каждый его запрос это расход без выручки.

СобытиеДвижение денегКакой доступ закрытьКакие доказательства можно отправить
ASSIGNMENT_REVOKE у участникаНе сообщаетсяЭтому участникуНеприменимо
REFUND_FULL по многоместной покупкеВся транзакция, все места в нейПокупателю и каждому владельцу местаТолько транзакция покупателя, в течение 12 часов после CONSUMPTION_REQUEST
REFUND_PRORATED по многоместной покупкеДоля из revocationPercentageЗависит от того, что покрывает возвратТолько транзакция покупателя
Ответ consumption по назначенной транзакцииНе принимаетсяНеприменимоОтклоняется с InvalidAssignedTransactionNotSupportedError

Какие процессы возврата вообще выслушивают вашу сторону

Многоместные подписки не меняют короткий список. Доказательства у разработчика запрашивают только два процесса возврата: CONSUMPTION_REQUEST от Apple, на который отвечают через Send Consumption Information в течение 12 часов, и проверка чарджбэков в Google Play, на которую отвечают через orders.reviewrefund в течение 24 часов. Всё остальное решается без вас. Для заказов в Google Play, оформленных после 3 августа 2026 года, чарджбэк стоит разработчику цену покупки за вычетом сервисного сбора Play плюс сборы банка за чарджбэк. RefundHalt отвечает на consumption requests от Apple в пределах 12-часового окна, используя данные об использовании, которые вы уже собираете.

Что поменять в обработчике App Store на этой неделе

  • Читайте quantity в каждой транзакции подписки и сохраняйте его вместе с покупкой.
  • Сохраняйте inAppOwnershipType и обрабатывайте ASSIGNED как отдельный случай рядом с PURCHASED и FAMILY_SHARED.
  • Ветвите обработку REVOKE по revocationType, чтобы ASSIGNMENT_REVOKE закрывал доступ без проведения возврата.
  • Проводите REFUND_PRORATED по доле из revocationPercentage, а не как полный возврат.
  • Проверяйте ASSIGNED перед вызовом Send Consumption Information, Set App Account Token или Extend a Subscription Renewal Date.
  • Решите в App Store Connect, хотите ли вы вообще продавать организациям, до того как одна из них купит 50 мест.

Частые вопросы

Включены ли многоместные подписки Apple для моего приложения?
Скорее всего, да. Apple включила многоместные покупки по умолчанию в App Store Connect. Подписки, созданные до 14 сентября 2026 года, изначально отключены, только если они не используют StoreKit 2 или у них включён Семейный доступ, а подписки в заказных приложениях отключить нельзя. Проверить это можно в разделе Purchase Options на странице каждой подписки.
Означает ли уведомление REVOKE с ASSIGNMENT_REVOKE, что я потерял деньги?
Нет. ASSIGNMENT_REVOKE означает, что организация или групповой покупатель отозвал подписку у одного человека. Apple просит закрыть этому человеку доступ, но событие не сообщает о возврате. Проводите возвраты только по REFUND_FULL или REFUND_PRORATED.
Можно ли отправить данные о потреблении для сотрудника с назначенным местом?
Нет. Эндпоинт Apple Send Consumption Information возвращает InvalidAssignedTransactionNotSupportedError для транзакций, которые организация или группа назначила клиенту. Сначала проверьте, не равен ли inAppOwnershipType значению ASSIGNED, и отправляйте доказательства по транзакции покупателя.
Как узнать, какую часть многоместной покупки вернула Apple?
Прочитайте revocationType и revocationPercentage в транзакции. REFUND_FULL означает, что возвращена вся транзакция. REFUND_PRORATED приходит с revocationPercentage в тысячных долях, то есть 40000 означает 40 процентов транзакции.
Когда запускаются Group Purchases от Apple?
По словам Apple, Group Purchases, где один клиент App Store покупает несколько мест и приглашает других, можно настраивать и тестировать в песочнице с ноября 2026 года, а в App Store они станут доступны этой зимой. Volume Purchasing для компаний и школ запущены 22 октября 2026 года.

Источники и дополнительное чтение

RefundHalt

Автопилот возвратов для App Store и Google Play

Читайте дальше

Руководство8 мин чтения

Чрезмерные запросы на возврат обходятся дороже самих возвратов: оба магазина приложений считают их сигналом качества

Правило 5.6.4 Apple прямо называет чрезмерные запросы на возврат признаком того, что приложение не соответствует стандартам качества, а соглашение Google о распространении позволяет удалять приложения новых разработчиков по доле возвратов. Разбираем, что пишет каждый магазин, во что обходится удаление и как не попасть под удар.

Подробный разбор8 мин чтения

Проверяйте серверные уведомления App Store, прежде чем реагировать на возврат, ведь отправить запрос на ваш URL вебхука может кто угодно

Уведомление о возврате остается обычным HTTPS-запросом, пока вы не проверили его подпись. Рассказываем, как проверять серверные уведомления App Store и сообщения RTDN из Google Play, что подписывает каждый магазин и во что обходится поддельный или ошибочно отклоненный возврат.

Следующий запрос на возврат уже в пути.

Настройте RefundHalt за то время, что уходит на чтение очередного письма в поддержку о возврате, который вы не успели оспорить.