Guideline 3.1.2: застосунок відхилили через підписку
Автор: Mehdi Azizi
Опубліковано , 9 хв
Guideline 3.1.2: сума списання має бути найпомітнішою ціною на paywall, з тривалістю, автопродовженням і посиланнями на умови. Дві реальні відмови.
Guideline 3.1.2 регулює підписки з автопродовженням. Якщо Apple на неї посилається, перевір дві речі: сума, яку реально списують, має бути найпомітнішою ціною на твоєму paywall, а застосунок і його сторінка в App Store мають вказувати тривалість, ціну та робочі посилання на умови використання й політику конфіденційності.
Я отримав таку відмову для двох своїх застосунків у жовтні 2026: Solys 10-го, TradaZen 12-го. Причина була та сама: ціна за тиждень великим шрифтом, а реальна сума списання дрібним. Нижче текст правила, ці два випадки і чек-лист, який я тепер застосовую. Про інші причини читай у статті чому Apple відхиляє застосунок.
Що каже guideline 3.1.2?
Правило 3.1.2, «Subscriptions», входить до розділу 3 «Business» App Review Guidelines, частина 3.1 «Payments». Звідси й заголовок листа: «Guideline 3.1.2 - Business - Payments - Subscriptions». Воно має три пункти, і літера в дужках підказує, де шукати.
| Пункт | Що вимагає Apple | Типова відмова |
|---|---|---|
| 3.1.2(a) Permissible uses | Постійна цінність, мінімум 7 днів | Підписка без контенту, що оновлюється |
| 3.1.2(b) Upgrades and Downgrades | Зміна плану без дублювання | Два плани оплачуються одночасно |
| 3.1.2(c) Subscription Information | Що користувач отримує і за яку ціну | Розрахункова ціна більша за списувану |
Текст 3.1.2(c) короткий. Перш ніж пропонувати комусь підписатися, ти маєш «clearly describe what the user will get for the price»: чітко описати, що він отримає за цю ціну. Далі правило відсилає до додатка 2 (Schedule 2) ліцензійної угоди програми розробника. Цей додаток перелічує, що треба показувати «clearly and conspicuously», тобто чітко й помітно:
- назву підписки;
- її тривалість;
- її ціну, а також ціну за одиницю, якщо це доречно;
- посилання на політику конфіденційності та умови використання, доступні в застосунку.
Правило про розмір цін є на сторінці Apple про підписки. У процесі покупки «the amount that will be billed must be the most prominent pricing element in the layout»: сума, яку буде списано, має бути найпомітнішим елементом ціни. Еквівалент за місяць чи економія дозволені, якщо вони другорядні й менші. Та сама сторінка вимагає для безплатного пробного періоду вказувати його тривалість і ціну, яку спишуть після завершення.
Дві відмови 3.1.2(c), які я отримав
Solys: 0,38 € великим, 19,99 € дрібним
Solys це мій будильник, який присипляє твої соцмережі. На paywall в онбордингу картка «Річна» показувала «0,38 €/тиж.» розміром 21 пункт і жирним. Під нею, 15 пунктів: «тобто 19,99 €/рік». А списують саме 19,99 €, а не 0,38 €.
10 жовтня 2026 Apple відхиляє версію з посиланням на 3.1.2(c). У повідомленні вимагають, щоб сума списання була найчіткішим і найпомітнішим елементом ціни. Безплатний пробний період, стартова ціна й розрахункові ціни мають бути їй підпорядковані. Apple називає свої критерії: шрифт, розмір, колір і розташування.
Я залишив таке відображення свідомо: попередню версію TradaZen, побудовану за тим самим принципом, прийняли. Це була ставка, і вона коштувала один цикл перевірки.
Виправлення: «19,99 €/рік» великим, «тобто 0,38 €/тиж.» сірим підписом під ним, усіма 30 мовами застосунку. Оскільки paywall у коді, перед повторною відправкою знадобився новий білд.
TradaZen: та сама причина через два дні
TradaZen це мій симулятор трейдингу. 12 жовтня 2026 версію 1.5.1 відхилили за тим самим правилом. У повідомленні йшлося про ціну «weekly calculated», показану «more clearly and conspicuously than the billed amount»: тижневий еквівалент був помітніший за суму списання.
Моє перше виправлення не спрацювало, і я помітив це ще до відправки. Я зменшив «0,92 €/тиж», але залишив його праворуч, у рядку ціни. А картка тижневої підписки в тій самій колонці показувала свою справжню ціну: «8,99 €/тиж». Обидві суми читалися на одному рівні. Розрахункова ціна в колонці справжніх цін читається як сума списання, навіть дрібним шрифтом.
Остаточне виправлення: на кожній картці сума списання великим, праворуч. Ціна за тиждень стала сірим підписом під нею. Ліворуч лише назва плану. Під час наступної перевірки Apple вже не згадувала 3.1.2(c).
Інші уроки цього застосунку є в кейсі TradaZen.
Що Apple відхилила, а що пройшло
Ось реальні варіанти відображення, по порядку, з результатом.
| Відображення ціни | Результат |
|---|---|
| TradaZen, попередня версія: ціна за тиждень на першому плані | Прийнято на попередній перевірці |
| Solys: «0,38 €/тиж.» жирним, «19,99 €/рік» під ним | Відхилено 10.10.2026, 3.1.2(c) |
| TradaZen 1.5.1: ціна за тиждень помітніша за суму списання | Відхилено 12.10.2026, 3.1.2(c) |
| TradaZen: ціну за тиждень зменшено, але вона в колонці цін | Відкинув сам до відправки |
| TradaZen: сума списання великим праворуч, тиждень підписом | На наступній перевірці не згадано |
| Solys: «19,99 €/рік» великим, тиждень сірим підписом | Виправлено й надіслано в Apple |
Перший рядок найважливіший. Прийнята перевірка не гарантує, що твій paywall пройде наступну. Кожна версія знову потрапляє до рецензента, який може читати правило суворіше за попереднього. Єдине безпечне відображення це те, що відповідає тексту.
Сума списання це єдина ціна великим шрифтом. Будь-який еквівалент, за тиждень, місяць чи день, це менший і блідіший підпис, ніколи не на її місці.
Чек-лист paywall, сумісного з 3.1.2
Це список, який я тепер проходжу на кожному paywall своїх застосунків перед кожною відправкою:
- На кожній картці сума списання це найбільша, найконтрастніша й найкраще розташована ціна.
- Будь-яка розрахункова ціна (за тиждень, місяць, день) це підпис, менший і блідіший, під сумою списання.
- Жодна розрахункова ціна не стоїть у колонці, де інший план показує свою справжню ціну.
- Тривалість написана чітко: «на рік», «на тиждень».
- Безплатний пробний період вказує свою тривалість і суму, яку спишуть після нього.
- Є речення про те, що підписка продовжується автоматично й скасовується в налаштуваннях облікового запису Apple.
- Що відкриває підписка, написано до кнопки покупки.
- На paywall видно кнопку «Restore Purchases».
- Посилання на умови використання й політику конфіденційності є на paywall і відкриваються.
- Якщо пропонуєш кілька планів, вони в одній групі підписок, як радить Apple.
- Відображення перевірене на найменшому iPhone і з найдовшою ціною. У TradaZen я тестую ціну у в'єтнамських донгах: сума, що переноситься на новий рядок, ламає ієрархію.
Якщо користуєшся paywall від RevenueCat, документація RevenueCat попереджає про те саме: однієї змінної місячної ціни недостатньо, якщо сума списання та її періодичність ніде більше не показані. Повне підключення описано в статті RevenueCat: як налаштувати підписку в застосунку, а помилки дизайну в paywall iOS: 7 помилок новачка.
Посилання на умови й конфіденційність: у застосунку та на сторінці
Інша форма відмови 3.1.2 стосується не paywall, а метаданих. Повідомлення, які розробники публікують на форумах Apple, уточнюють, де це очікують побачити: посилання на політику конфіденційності в спеціальному полі App Store Connect, а посилання на умови використання (EULA) в описі або в полі EULA.
Пастка в стандартній угоді. Згідно з довідкою App Store Connect, якщо ти не додаєш власну угоду, діє стандартна угода Apple і «the license agreement link isn't shown on your App Store product page»: на твоїй сторінці жодного посилання не з'являється. Якщо використовуєш стандартну угоду, ти сам маєш додати посилання в опис, на свою сторінку умов або на стандартну ліцензійну угоду Apple.
У своїх застосунках з підпискою я завершую опис двома рядками, кожною мовою сторінки. Ось шаблон, адаптуй його під свою пропозицію і свій домен:
7 днів безплатно, потім річна або тижнева підписка,
яку можна скасувати будь-коли.
Умови: https://your-domain.com/terms
Конфіденційність: https://your-domain.com/privacy
Відкрий обидва посилання, перш ніж вставляти: неіснуюча сторінка дорівнює відсутньому посиланню. Що має містити політика, детально описано в статті політика конфіденційності застосунку, а решту сторінки на сторінці ASO App Store.
Це виправляється без нового білда: опис і поля App Store Connect це метадані.
3.1.2(a): підписка має давати постійну цінність
Інший пункт, через який відхиляють, стосується моделі, а не екрана. 3.1.2(a) вимагає «ongoing value»: цінність, яка триває в часі. Період становить щонайменше сім днів, і підписка працює на всіх пристроях користувача. Підписник отримує те, за що заплатив, без додаткових дій, як-от публікації в соцмережі.
Якщо твій застосунок надає послугу раз і назавжди, можливо, краще підійде разова покупка. Обидві моделі порівнюю в статті підписка чи разова покупка.
Що відповісти Apple після відмови 3.1.2
Листування відбувається в розділі App Review твого застосунку. Процедура, як відповісти App Review, така сама, як і для інших правил. Можливі два випадки:
- Проблема в застосунку (розмір цін, тексти на paywall): потрібен новий білд, як для Solys і TradaZen. Рецензент тестує вбудований код, я пояснюю це в гайді про guideline 2.1.
- Проблема на сторінці (посилань немає або вони не працюють): виправляєш метадані, відповідаєш, і та сама заявка йде далі.
Пиши англійською, стримано: що було не так, що змінилося, як це перевірити. Ось шаблон, яким я користуюся (заміни номер білда, ціни й шлях на свої):
Hello,
Thank you for your review.
Issue: on the paywall, the weekly equivalent price was displayed
more prominently than the billed amount.
Fix in build X:
- Each plan now shows its billed amount (e.g. "€19.99/year")
as the largest price on the card.
- The weekly equivalent is a smaller grey caption below it.
- The paywall states the duration, the auto-renewal, and links
to our Terms of Use and Privacy Policy.
How to verify: launch the app and complete the onboarding.
The paywall appears at the end.
Best regards,
Виправ свій paywall до наступної відправки
Якщо твій застосунок щойно відхилили за 3.1.2, Apple Review Kit допоможе знайти зазначене правило, зрозуміти, що воно вимагає, і дасть приклад виправлення та відповіді. Його skills для Claude Code також перевіряють твій paywall і сторінку перед відправкою. Якщо потрібен людський погляд, забронюй годину зі мною: прочитаємо повідомлення Apple і переробимо твій paywall просто на твоєму екрані. Увесь процес описано на сторінці застосунок відхилено Apple, а налаштування підписки на сторінці підписка в застосунку iOS.
Якщо готуєш свій перший реліз, пройди безплатну діагностику: вона розставить кроки по порядку і надішле тобі мій чек-лист проти відмов Apple. Щоб створити мобільний застосунок, який заробляє з першого дня, iOS Kit присвячує свій третій крок, «підключити гроші», підписці та paywall.
Ніхто не може гарантувати, що Apple прийме твій застосунок. Але я можу вберегти тебе від відмови 3.1.2(c), за яку я заплатив двічі.
Поширені запитання
Що означає «Guideline 3.1.2 - Business - Payments - Subscriptions»?
Це повна назва правила про підписки. Воно вказує на неправильну ієрархію цін, відсутню інформацію на paywall, відсутнє посилання на сторінці або підписку без постійної цінності. Літера в дужках, наприклад 3.1.2(c), показує, про який пункт ідеться.
Чи можна ще показувати ціну за тиждень або за місяць?
Так. Apple дозволяє еквівалент за тиждень чи місяць або економію, якщо вони менші й менш помітні, ніж реальна сума списання. У моїх застосунках еквівалент це сірий підпис під сумою списання, ніколи не в колонці справжніх цін.
Чи потрібен новий білд після відмови 3.1.2?
Так, якщо проблема на paywall, бо рецензент тестує вбудований код. Ні, якщо вона на сторінці, як-от відсутнє посилання в описі: виправляєш метадані, і та сама заявка йде далі.
Де розмістити посилання на умови використання (EULA)?
У застосунку, на paywall. На сторінці: в описі або в полі EULA в App Store Connect, якщо в тебе власна угода. Зі стандартною угодою Apple на сторінці жодне посилання не показується: додай його сам в опис, кожною мовою.
Мій paywall уже приймали, чому його відхиляють тепер?
Бо кожна версія знову проходить перевірку, іноді в іншого рецензента. Ціну за тиждень на першому плані прийняли в TradaZen, а потім відхилили в Solys і TradaZen у жовтні 2026. Захищає лише текст правила.