# Offer codes в App Store Connect: как создать промокод

> С марта 2026 года offer codes заменили промокоды для встроенных покупок: уникальные или свои коды, активация по ссылке, в App Store или в приложении.

Оригинальная страница: [Offer codes в App Store Connect: как создать промокод](https://devoria.fr/ru/blog/offer-codes-app-store-connect-promo-code)
Автор: [Mehdi Azizi](https://devoria.fr/ru/mehdi-azizi)
Опубликовано: 2026-11-04
Последняя правка контента: 2026-11-04


В App Store Connect промокод на подписку или встроенную покупку теперь называется кодом предложения, или offer code. **С 26 марта 2026 года Apple больше не позволяет создавать промокоды для встроенных покупок**: они нужны только для того, чтобы подарить скачивание платного приложения. Ты создаёшь предложение для своего продукта, а потом уникальные коды или один свой код. Человек активирует его по ссылке, в App Store или прямо в твоём приложении.

Мои приложения бесплатные для скачивания и продают подписки, так что промокоды на приложение мне ничего не дают. Поэтому в коде TradaZen реферальная программа награждает кодом предложения, и приложение само открывает активацию кода. Ниже: что изменилось, таблица предложений Apple, создание кодов, их активация и то, что запрещает правило 3.1.1.

## Промокоды и коды предложений: что изменилось в 2026 году

Apple объявила об этом 29 октября 2025 года в своих [новостях для разработчиков](https://developer.apple.com/news/?id=gf6mgrs6): коды предложений теперь работают для всех встроенных покупок. К автовозобновляемым подпискам добавились расходуемые, нерасходуемые покупки и невозобновляемые подписки. Как следствие, с 26 марта 2026 года создать промокод для встроенной покупки уже нельзя. Созданные раньше продолжают работать до истечения срока.

А вот промокоды на приложение никуда не делись. Согласно [справке App Store Connect](https://developer.apple.com/help/app-store-connect/offer-promo-codes/request-and-manage-promo-codes/), они дают бесплатную копию платного приложения. Каждый код используется один раз и действует четыре недели. Можно запросить до 100 штук на версию и платформу через Promo Codes в боковой панели приложения. Тот, кто его использует, не может ни оценить приложение, ни оставить отзыв.

**Для бесплатного приложения с подпиской промокод на приложение ничего не дарит**: дарить нужно подписку, через код предложения.

## Предложения Apple: для кого и как их получить

Вот предложения Apple вокруг подписки плюс промокод на приложение, в таблице, которую я держу под рукой, чтобы выбирать:

| Тип предложения            | Для кого                      | Как получить                     |
| -------------------------- | ----------------------------- | -------------------------------- |
| Вводное предложение        | Новые подписчики группы       | Автоматически при покупке        |
| Уникальный код предложения | Конкретный человек            | Ссылка, App Store или приложение |
| Свой код                   | Кампания, аудитория           | Ссылка или ввод в приложении     |
| Промо-предложение          | Текущие или бывшие подписчики | Показывает твоё приложение       |
| Предложение для возврата   | Бывшие подписчики             | Настройки, App Store, приложение |
| Промокод на приложение     | Только платное приложение     | Ввод в App Store                 |

**Коды предложений созданы для того, чтобы ты раздавал их сам, вне приложения**: по e-mail, на своём сайте, на мероприятии, автору контента. Остальные предложения в основном показываются сами или в твоём приложении, по правилам, которые ты задаёшь. У вводного предложения, того самого бесплатного пробного периода, есть отдельный гайд: [introductory offer и бесплатный пробный период](https://devoria.fr/ru/blog/introductory-offer-app-store-connect-free-trial).

## Создание кодов предложений для подписки

Процедура из [справки по кодам предложений для подписок](https://developer.apple.com/help/app-store-connect/manage-subscriptions/set-up-subscription-offer-codes/) идёт в два этапа: предложение, потом коды. Названия взяты из справки Apple.

**1. Предложение.** В Subscriptions открой группу, затем подписку. В Subscription Prices нажми кнопку «плюс», затем Create Offer Codes. Дальше:

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

Созданное предложение больше не редактируется. Чтобы изменить условия, создай новое.

**2. Коды.** Два типа, генерируются на странице предложения:

- **Уникальные коды**: один код на человека, создаются пачками от 500 до 25 000. Истекают не позже чем через шесть месяцев после создания. Ты скачиваешь файл с кодами и их ссылками.
- **Свои коды**: слово, которое ты выбираешь сам, до 64 символов без спецсимволов, например SEPTEMBER (вымышленный пример). Ты задаёшь, сколько человек могут его использовать, до 25 000 на пачку, и необязательную дату окончания.

Общие лимиты: миллион кодов на приложение в квартал, десять активных предложений на подписку, один код на предложение на человека. Код может стать рабочим только через час. И главное: **твоё приложение должно быть в продаже, чтобы коды активировались**. Подарить подписку до релиза нельзя.

Для тестов Apple предусматривает sandbox-коды, от 10 до 10 000 на пачку, которые активируются в настройках sandbox-аккаунта на iOS 16.3 или новее.

## Коды предложений для разовой покупки или кредитов

Страница о [кодах предложений для встроенных покупок](https://developer.apple.com/help/app-store-connect/manage-in-app-purchases/create-offer-codes-for-in-app-purchases/) следует той же логике. В In-App Purchases открой покупку, затем Create Offer в разделе Offer Codes. Право на предложение зависит от истории покупок в твоём приложении: никогда не покупал, покупал за последние 30 дней или больше 30 дней назад. Предложение бесплатное или платное.

Чтобы генерировать коды, приложение должно быть в продаже, а покупка одобрена. У приложения может быть не больше десяти активных предложений одновременно. Активация в приложении требует iOS 16.3 или новее.

## Как пользователь активирует код

[Документация StoreKit](https://developer.apple.com/documentation/storekit/supporting-offer-codes-in-your-app) описывает три пути:

1. **Ссылка для активации.** App Store Connect даёт пример ссылки на странице предложения, к которой ты добавляешь код. Если приложение не установлено, человеку сначала предложат его скачать.
2. **App Store.** Уникальный код вводится на странице Redeem Gift Card or Code в аккаунте. Свой код при этом работает только через ссылку или твоё приложение.
3. **Твоё приложение.** На Swift это `offerCodeRedemption` в SwiftUI или `presentOfferCodeRedeemSheet` в UIKit. С RevenueCat в приложении на Expo это `presentCodeRedemptionSheet`.

[Документация RevenueCat](https://www.revenuecat.com/docs/subscription-guidance/subscription-offers/ios-subscription-offers) приводит формат ссылки: `https://apps.apple.com/redeem?ctx=offercodes&id={apple_app_id}&code={code}`. Ещё она предупреждает, что окно активации Apple с момента запуска работает очень нестабильно, и предлагает ссылку как запасной вариант. Вот принцип на TypeScript:

```ts
import { Linking } from "react-native";
import Purchases from "react-native-purchases";

const PAGE_ECHANGE = "https://apps.apple.com/redeem";

export async function echangerUnCode(): Promise<void> {
  try {
    await Purchases.presentCodeRedemptionSheet();
  } catch {
    await Linking.openURL(PAGE_ECHANGE); // запасной вариант, если окно не сработало
  }
}
```

Окно не возвращает никакого результата. Доступ приходит потом, как после покупки, через слушатель `addCustomerInfoUpdateListener`, который в твоём приложении уже есть. Чтобы RevenueCat правильно учитывал выручку с этих кодов, ему нужен твой ключ In-App Purchase.

Именно такая схема подготовлена в коде TradaZen. Чтобы использовать реферальную награду, приложение открывает ссылку с уже подставленным кодом: это надёжнее окна, где код пришлось бы перепечатывать. Чтобы ввести полученный код, оно открывает нативное окно, а запасным вариантом служит страница активации в App Store. **Код, который человек не знает, куда ввести, бесполезен**: страница аккаунта App Store спрятана, и ничто на неё не указывает. Кнопка «У меня есть код» в твоём приложении решает проблему.

## Промо-предложения и предложения для возврата, коротко

Эти два предложения не работают через коды, которые ты раздаёшь, но решают ту же задачу: вернуть или удержать подписчика.

**Промо-предложение** нацелено на текущих или бывших подписчиков. Ты сам решаешь в приложении, когда его показать, например тому, кто собирается отменить подписку. Согласно [справке по промо-предложениям](https://developer.apple.com/help/app-store-connect/manage-subscriptions/set-up-promotional-offers-for-auto-renewable-subscriptions/), активных может быть десять на подписку. Они действуют во всех странах подписки, и человек имеет на них право, даже если уже получал вводное предложение. Для подписи предложения нужен ключ In-App Purchase.

**Предложение для возврата**, или win-back, нацелено на бывших подписчиков. [Справка по предложениям для возврата](https://developer.apple.com/help/app-store-connect/manage-subscriptions/set-up-win-back-offers/) описывает критерии: минимальный срок оплаченной подписки, время с момента окончания, пауза между двумя предложениями. Apple сама показывает его на странице управления подписками, а в твоём приложении на iOS 18 или новее. Ещё она генерирует ссылку, которой можно поделиться, но отправлять её стоит только тем, у кого есть право. Чтобы предложение появилось в App Store, его нужно продвигать с одобренным изображением подписки, которое не повторяет ни иконку, ни скриншоты. Об этом я пишу в гайде про [промо-изображение подписки](https://devoria.fr/ru/blog/guideline-2-3-2-promo-image-subscription-rejected).

## Что запрещает правило 3.1.1

[Guideline 3.1.1](https://developer.apple.com/app-store/review/guidelines/#3.1.1) требует встроенную покупку, чтобы разблокировать функцию или контент. Она запрещает самодельные механизмы вроде лицензионных ключей или QR-кодов. **Придуманный тобой код, который вводится в поле приложения для разблокировки премиума, грозит отказом по 3.1.1**, даже если он бесплатный. А коды предложений Apple как раз идут через встроенную покупку. Правило целиком разобрано в моём гайде по [guideline 3.1.1](https://devoria.fr/ru/blog/guideline-3-1-1-in-app-purchase-app-store).

Ещё один момент про реферальную программу: [guideline 5.1.2](https://developer.apple.com/app-store/review/guidelines/#5.1.2) запрещает требовать включения уведомлений, геолокации или отслеживания ради награды, включая коды. Значит, награда не может зависеть от этих разрешений. Подробности в гайде по [guideline 5.1.2](https://devoria.fr/ru/blog/guideline-5-1-2-third-party-ai-att-data-sharing).

## Как подарить подписку и не ошибиться с инструментом

До релиза, чтобы дать попробовать приложение бесплатно, используй [TestFlight](https://devoria.fr/ru/blog/testflight-testirovanie-iphone-prilozheniya): покупки там идут через тестовую среду, без списания денег. После релиза используй коды предложений. Настройка самой подписки описана в статье [RevenueCat для подписки на iOS](https://devoria.fr/ru/blog/revenuecat-podpiska-ios-prilozhenie).

[iOS & Android Kit](https://devoria.fr/ru/kits/ios) построен на стартовом коде моих приложений: онбординг, paywall и подписки уже написаны, а его третий этап, «подключить деньги», проведёт тебя через их настройку. Вся цепочка есть на странице [подписка в приложении iOS](https://devoria.fr/ru/expertise/ios-in-app-subscription). Если готовишь первый релиз, [пройди бесплатную диагностику](https://devoria.fr/ru/diagnostic): она расставит шаги по порядку и пришлёт тебе мой чек-лист против отказов Apple.

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

### Как сгенерировать промокод в App Store Connect?

Для платного приложения открой Promo Codes в боковой панели приложения: до 100 кодов на версию, действуют четыре недели. Для подписки или встроенной покупки создай предложение для продукта через Create Offer Codes или Create Offer, затем сгенерируй уникальные коды или свой код.

### Чем промокод отличается от кода предложения?

Промокод дарит скачивание платного приложения. Код предложения даёт подписку или встроенную покупку, бесплатно или со скидкой, на выбранный срок. С 26 марта 2026 года для встроенной покупки можно создать только код предложения.

### Сколько кодов предложений можно создать?

До миллиона на приложение в квартал, по всем продуктам вместе. Уникальные коды создаются пачками от 500 до 25 000, а свой код допускает до 25 000 использований на пачку. У подписки может быть не больше десяти активных предложений одновременно.

### Можно ли использовать код предложения до релиза приложения?

Нет: приложение должно быть в продаже, чтобы коды активировались. До релиза используй TestFlight для тестировщиков и sandbox-коды, чтобы проверить активацию в приложении.

### Может ли текущий подписчик использовать код предложения?

Да, если ты отметил текущих подписчиков в условиях предложения. [Страница Apple о подписках](https://developer.apple.com/app-store/subscriptions/) уточняет, что он может активировать только код того же уровня, что и его подписка, или выше.

### Где пользователь вводит код предложения?

По ссылке для активации, на странице Redeem Gift Card or Code своего аккаунта App Store для уникального кода или в твоём приложении, если ты добавил туда окно активации. Свой код работает через ссылку или приложение.


## Твой проект

[iOS & Android Kit](https://devoria.fr/ru/kits/ios): Создай своё приложение для iPhone и Android с Claude Code: стартовый код моих приложений, путь до публикации в сторах и все киты. 109 $.

[Диагностика: что отделяет тебя от твоего iPhone-приложения](https://devoria.fr/ru/diagnostic): 7 вопросов, 60 секунд: ты узнаешь, что на самом деле мешает тебе опубликовать iPhone-приложение, получишь путь из 4 этапов и подходящий тебе кит.
