Все статьи
Deep dive9 мин чтения

Возврат по месячной подписке Apple с 12-месячным обязательством может закончить весь год или только один его месяц

В месячной подписке с 12-месячным обязательством Apple делит возвраты на два случая. Возврат за прошлый месяц не останавливает списания. Возврат за текущий месяц сразу прекращает обязательство. Разбираем, как каждый случай приходит на ваш сервер, во что он обходится и что отправлять в Apple.

Настенный календарь на год с оторванным листом одного месяца рядом со смартфоном, иллюстрация возврата по месячной подписке с 12-месячным обязательством

Главное

  • В месячной подписке Apple с 12-месячным обязательством возврат за прошлый расчетный период отзывает только транзакцию этого месяца. Клиент остается подписчиком, списания идут по графику.
  • Когда Apple возвращает деньги за текущий расчетный период месячной подписки с 12-месячным обязательством, обязательство сразу прекращается, и оставшиеся ежемесячные платежи уже не списываются.
  • Клиент, который отменяет план с 12-месячным обязательством, отменяет продление обязательства, а не оставшиеся платежи. Apple продолжает списывать деньги каждый месяц и отправляет EXPIRED только после 12-го периода.
  • Billing Grace Period (льготный период при проблемах с оплатой) не применяется к месячным подпискам с 12-месячным обязательством. Apple советует отзывать доступ при DID_FAIL_TO_RENEW и возвращать его при DID_RENEW с подтипом BILLING_RECOVERY.
  • Если Apple не удается получить неудавшийся ежемесячный платеж по плану с 12-месячным обязательством в течение 90 дней, обязательство прекращается, и отзыв доступа становится окончательным.
  • Запрос на возврат по плану с обязательством вызывает CONSUMPTION_REQUEST. Apple просит в течение 12 часов прислать данные об использовании и предпочтение по возврату за этот расчетный период.
  • Переход с плана с 12-месячным обязательством на более высокий уровень сразу прекращает обязательство. Клиент может получить пропорциональный возврат за неиспользованную часть текущего периода.

Один одобренный возврат по месячной подписке Apple с 12-месячным обязательством может вернуть один платеж, а может отменить все платежи, оставшиеся до конца года. Что именно произойдет, зависит от детали, которую большинство серверного кода не проверяет: является ли возвращенный месяц текущим. В документации Apple это сказано прямо. Возврат за прошлый расчетный период оставляет обязательство в силе. Возврат за текущий период сразу его прекращает. Если обрабатывать оба случая одинаково, вы либо отключите клиента, который все еще платит, либо продолжите обслуживать того, кто уже не платит.

Как устроены списания в плане Apple с 12-месячным обязательством

Apple запустила эту опцию в апреле 2026 года. Это не новый тип продукта. Вы добавляете ежемесячный план оплаты к существующей годовой автовозобновляемой подписке в App Store Connect, и идентификатор продукта остается прежним. Клиент платит каждый месяц, обязался внести 12 платежей, а после последнего платежа обязательство продлевается еще на 12 месяцев, если клиент не отменит его раньше.

ПравилоЧто говорит документация Apple
Где продаетсяВо всех витринах, кроме Соединенных Штатов и Сингапура
Устройства и SDKOS 26.4 или новее, кроме watchOS, в приложениях, собранных с SDK 26.5 или новее
Ограничения ценыСумма за 12 месяцев должна быть не меньше годовой цены при предоплате и не больше 1,5 раза от нее
Обязательное условиеГодовая предоплата должна быть настроена в стране до того, как там можно будет предложить ежемесячную оплату
Как это выглядит в данныхbillingPlanType равен MONTHLY, а commitmentInfo содержит billingPeriodNumber, totalBillingPeriods, commitmentExpiresDate и commitmentPrice
Если вы уберете опциюТекущие клиенты не продлят обязательство по его окончании, а новые клиенты не смогут ее выбрать

Каждый расчетный период создает отдельную транзакцию и дает месяц доступа. Именно эта деталь определяет поведение возвратов. Apple возвращает деньги по транзакциям, а в плане с обязательством каждый месяц это отдельная транзакция.

Что возврат делает с 12-месячным обязательством

Руководство Apple по жизненному циклу обязательства делит возвраты на два случая. Разница в том, к какому расчетному периоду относится возврат.

Возврат относится кЧто происходит с обязательствомГде это видноЧто должен сделать ваш сервер
Прошлому расчетному периодуПродолжается без изменений. Списания идут по графикуrevocationDate в транзакции этого периодаОтозвать только эту транзакцию. Оставить подписку активной
Текущему расчетному периодуСразу прекращаетсяrevocationDate в последней транзакцииЗакрыть доступ. Новых платежей не будет
Переходу на более высокий уровеньСразу прекращается, начинается новый планDID_CHANGE_RENEWAL_PREF, подтип UPGRADEПереключить права доступа. Может последовать пропорциональный возврат за неиспользованный период

Отменяет ли возврат за второй месяц остаток года?

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

Когда возврат прекращает обязательство

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

Переход на другой план тоже может вернуть деньги

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

Отмена не равна возврату

Клиент, который нажимает Отменить в плане с 12-месячным обязательством, не перестает платить. По словам Apple, он отменяет продление обязательства, а не оставшиеся платежи в текущем сроке. Вот что приходит на ваш сервер.

  • Apple отправляет DID_CHANGE_RENEWAL_STATUS с подтипом AUTO_RENEW_DISABLED.
  • Статус автопродления обязательства падает до 0, поэтому обязательство не продлится по окончании срока.
  • В данных о продлении подписки willAutoRenew по-прежнему равен 1, потому что ежемесячные списания продолжаются.
  • Уведомления DID_RENEW продолжают приходить за каждый оставшийся месяц. EXPIRED приходит после 12-го периода, и только тогда доступ заканчивается.

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

Есть одно региональное исключение. В App Store Connect Help сказано, что клиент, отменивший подписку, платит до завершения обязательства, кроме некоторых регионов, и дана ссылка на страницу Apple об отмене подписок в Германии, Израиле, Южно-Африканской Республике и Турции. В этих четырех странах клиенты вправе в любой момент отменить подписку с немедленным вступлением в силу и получить пропорциональный возврат.

Неудачные платежи сразу закрывают доступ

В планах с обязательством нет страховки, на которую вы, возможно, полагаетесь в других случаях. Billing Grace Period не действует. Если ежемесячное продление не удалось, Apple велит отозвать доступ, пока подписка находится в режиме повторных попыток оплаты, и вернуть его, только если платеж пройдет.

УведомлениеЧто оно сообщаетЧто делать
DID_FAIL_TO_RENEWisInBillingRetryPeriod равен trueОтозвать доступ сейчас
DID_RENEW, подтип BILLING_RECOVERYcommitmentExpiresDate сдвигается с учетом даты восстановления платежаВернуть доступ и сохранить новую дату окончания
EXPIRED, подтип BILLING_RETRYApple не удалось получить платеж в течение 90 днейОбязательство завершено. Ваш прежний отзыв доступа окончателен

После восстановления платежа прочитайте commitmentExpiresDate из последней транзакции. Она не совпадет с исходной датой окончания, и каждое следующее продление идет по сдвинутому графику.

Разработчик поздно вечером за ноутбуком проверяет уведомления о подписках в панели сервера, рядом с клавиатурой лежит смартфон

Во что вам обходится возврат по плану с обязательством

Вот цифры на примерных ценах. Допустим, годовой план с предоплатой стоит 59,99 €, а ежемесячный вариант с обязательством 6,99 €, что дает 83,88 € за 12 месяцев. Это укладывается в лимит Apple в 1,5 раза от цены с предоплатой.

Сценарий, клиент в 4-м месяцеВозвращенные платежиПотерянные будущие платежиПотерянная стоимость обязательства
Apple возвращает месяц 26,99 €Нет. Месяцы с 5 по 12 по-прежнему списываются6,99 €
Apple возвращает месяц 4, текущий период6,99 €55,92 €, восемь платежей, которые не будут списаны62,91 €
Клиент отменяет, без возвратаНетНет. Месяцы с 5 по 12 по-прежнему списываются0 €
Клиент в Германии отменяетПропорциональная часть месяца 455,92 €До 62,91 €

Это цены для клиента. На самом деле вы теряете свою долю каждого платежа. Apple выплачивает 70% цены подписки за вычетом применимых налогов в первый год платного обслуживания подписчика и 85% после этого, а также участникам App Store Small Business Program.

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

Как отвечать на CONSUMPTION_REQUEST по плану с обязательством

Это единственный момент, когда у вас есть право голоса. Когда клиент запрашивает возврат по плану с обязательством, Apple отправляет CONSUMPTION_REQUEST на ваш эндпоинт App Store Server Notifications V2. Вы отвечаете через Send Consumption Information, и Apple просит ответить в течение 12 часов. Ответ содержит данные об использовании и ваше предпочтение по возврату за этот расчетный период, а не за все обязательство.

  • Отправляйте данные только с согласия клиента. Согласно документации Apple, без согласия на запрос вообще не следует отвечать.
  • Не передавайте consumptionPercentage. API возвращает ConsumptionPercentageAutoRenewableSubscriptionError, если отправить его для автовозобновляемой подписки.
  • Основывайте предпочтение по возврату на использовании в этом месяце. Клиент, который в спорном месяце запустил 300 платных генераций, оставил след реальных расходов. Тот, кто ни разу не открыл приложение, нет.
  • Смотрите, к какому периоду относится запрос. Запрос за текущий период, если Apple его одобрит, прекращает обязательство. Запрос за прошлый период нет.

Что должен обрабатывать ваш сервер

  • Читайте billingPlanType в каждой транзакции и каждом уведомлении о продлении. MONTHLY означает, что действуют правила обязательства.
  • Предоставляйте доступ по expirationDate транзакции. По словам Apple, дата окончания в commitmentInfo нужна для отображения прогресса, а не для решения о доступе.
  • При возврате проверьте, есть ли revocationDate в последней транзакции, прежде чем завершать подписку.
  • При отмене сохраняйте доступ, пока после 12-го периода не придет EXPIRED.
  • При DID_FAIL_TO_RENEW отзывайте доступ сразу. Не ждите льготного периода, которого не будет.
  • Заново сохраняйте commitmentExpiresDate после каждого BILLING_RECOVERY.

Apple принимает решение по каждому возврату в App Store, поэтому CONSUMPTION_REQUEST это ваш единственный шанс показать данные об использовании. RefundHalt отвечает на эти запросы автоматически в пределах 12-часового окна и фиксирует, к какому расчетному периоду относится каждый возврат, поэтому возврат за прошлый месяц никогда не примут за потерянного подписчика.

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

Что происходит, когда Apple возвращает один платеж месячной подписки с 12-месячным обязательством?
Это зависит от расчетного периода. Возврат за прошлый период отзывает только транзакцию этого месяца, и обязательство продолжается со списаниями по графику. Возврат за текущий период сразу прекращает обязательство, поэтому оставшиеся платежи не будут списаны.
Могут ли клиенты досрочно отменить месячную подписку Apple с 12-месячным обязательством?
Отменить могут, но отмена останавливает продление обязательства, а не оставшиеся платежи. Списания продолжаются все 12 периодов, и доступ вместе с ними. В App Store Connect Help указаны исключения для некоторых регионов, а на странице поддержки Apple сказано, что клиенты в Германии, Израиле, Южно-Африканской Республике и Турции могут отменить подписку с немедленным вступлением в силу и получить пропорциональный возврат.
Применяется ли Billing Grace Period к планам с 12-месячным обязательством?
Нет. По словам Apple, Billing Grace Period не применяется к месячным подпискам с 12-месячным обязательством. Отзывайте доступ при получении DID_FAIL_TO_RENEW, возвращайте его при DID_RENEW с подтипом BILLING_RECOVERY и считайте EXPIRED с подтипом BILLING_RETRY через 90 дней окончательным.
Приходит ли CONSUMPTION_REQUEST по плану с 12-месячным обязательством?
Да. Запрос на возврат по плану с обязательством отправляет CONSUMPTION_REQUEST на ваш эндпоинт App Store Server Notifications V2. Ответьте в течение 12 часов, передав данные об использовании и предпочтение по возврату за этот расчетный период, и только если клиент согласился на передачу данных Apple.
Доступна ли месячная подписка с 12-месячным обязательством в Соединенных Штатах?
Нет. Apple предлагает ее во всех витринах App Store, кроме Соединенных Штатов и Сингапура, на OS 26.4 или новее, кроме watchOS, в приложениях, собранных с SDK 26.5 или новее.

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

RefundHalt

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

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

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

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