Ілля Шкура
EN UK RU

Нотатки · жовтень 2026

Застосунок каже, що тариф закінчився, а Stripe і далі списує гроші з картки.

Folioport — демонстраційний портал, зібраний для кейсу: студії вигадані, дані тестові, а Stripe працював у тестовому режимі. У ньому дизайн-студії діляться роботами зі своїми клієнтами, і в нього три тарифи: Free, Studio за €29 на місяць і Agency за €79. Оплату тарифів через Stripe додали в Claude Code за запитами звичайними словами. На звичайному шляху вона працювала. Студія могла купити тариф і продовжити його, невдалий платіж повторювався, а скасування діяло до кінця місяця.

Найдорожче коштували проблеми на шляхах, якими засновник користується рідше. На кожному з них застосунок казав про тариф одне, а Stripe тим часом робив інше.

Один тариф, два записи

Застосунок із підписками зберігає кожен тариф двічі. У застосунку є свій запис: ця студія на Agency. У Stripe є підписка: ця картка платить €29 щомісяця. Обидва з'являються разом, коли хтось купує тариф, а далі їх ніщо не пов'язує. Stripe списує гроші, доки йому не скажуть зупинитися: ваш код, хтось у кабінеті Stripe або його власні налаштування, коли платежі раз у раз не проходять. Те, що застосунок показує на своїх сторінках, тут нічого не важить.

Тож кожне місце в застосунку, яке змінює тариф клієнта, що платить, мусить визначати, що стається з підпискою Stripe і з наступним списанням. Де цього не визначено, картка й далі платить.

П'ять випадків, коли картка й далі платила

  • Подарований тариф. Засновник безкоштовно дав Agency студії, яка платила €29 за Studio. Застосунок показував Agency без оплати, а через місяць Stripe знову списав €29. На сторінці власника було написано «Contact us to change it», і жодного способу скасувати. У доході засновника стояло €0, а гроші й далі надходили.
  • Призупинена студія. Засновник призупинив студію, що платила, а Stripe і далі списував €29 на місяць. Власник пробував скасувати тариф і відкрити сторінку оплати, і застосунок відмовляв в обох випадках з написом «This studio is suspended». Тобто платили за студію, якою не можна було користуватися.
  • Передача студії. Власник передав студію учасникові команди, а підписка лишилася на картці попереднього власника. Новий власник перейшов на Agency, і за це заплатила картка попереднього. Попередній власник тепер був лише учасником і скасувати вже не міг.
  • Видалення, що зупинилося на півдорозі. Видалення студії скасовувало її підписку лише на самому останньому кроці. Коли видалення зупинялося після першого кроку, біля студії стояло «Being deleted», а через місяць з картки знову списували гроші.
  • Скасування, у якому застосунок відмовляв. Власник студії, де людей більше, ніж дозволяє Free, не міг перестати платити. Кнопка «Cancel and move to Free» була неактивна, а на сторінці самого Stripe скасувати теж було не можна. Вийти можна було, лише спершу прибравши людей.
Сторінка звіту: подарований тариф і далі списував гроші з картки. Як здано: через місяць знову списано €29, а власник бачить Contact us to change it. Після виправлення підписка одразу скасовується, і за невикористаний час повертається €28,99
Зі звіту: подарований тариф, як здано і після виправлення.

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

Та сама розбіжність, тільки навпаки

Два записи можуть розходитися й навпаки, і тоді втрачає бізнес. Студії, що були на Studio чи Agency ще до появи оплати, мали тариф у застосунку і жодної підписки в Stripe. Ніщо ніколи не просило їх заплатити, а дохід засновника рахував їх за повною ціною.

Виправлення

Правило стало простим: зміна тарифу в застосунку спершу проходить через Stripe, а клієнт завжди може піти.

  • Коли студії, що платить, дарують тариф, її підписка одразу скасовується, а невикористана частина місяця повертається. Іншим способом змінити тариф студії, що платить, засновник тепер не може.
  • Поки студія призупинена, з неї нічого не стягують, а її власник і далі може скасувати тариф і відкрити сторінку оплати. Після зняття призупинення студію просять оплатити поточний місяць, зі звичайним попередженням.
  • Кожен власник платить як окремий клієнт Stripe. Після передачі студії підписка попереднього власника діє до кінця оплаченого місяця і більше жодного разу не списує гроші. Далі новий власник платить своєю карткою.
  • Перший крок видалення зупиняє підписку, а регулярне прибирання зупиняє ті, що лишилися.
  • Скасувати тариф і перейти на менший можна завжди, хоч яка велика студія. Це діє з кінця оплаченого місяця, і нічого не видаляється.
  • Якщо за платний тариф ніхто не платить, власника попереджають за 14 днів, як перед кінцем пробного періоду. Власник може залишити тариф, заплативши, а після цієї дати студія переходить на Free.
Виправлена сторінка тарифів: Free, Studio за €29 і Agency за €79 на місяць, з оплатою через Stripe і доступною кнопкою Cancel and move to Free
Після виправлення: сторінка тарифів, де скасувати може кожна студія, що платить.

Після виправлення кожен із цих випадків прогнали знову на Stripe у тестовому режимі, переводячи час уперед крізь наступне продовження. Гроші з карток списувалися тільки там, де це передбачають правила засновника.

Перевірте свій застосунок

  • Випишіть усі способи, якими у вашому застосунку може змінитися тариф, крім купівлі й скасування. Згадайте адмінку, подарований тариф, купон, призупинення чи блокування, передачу акаунта іншій людині, його видалення і все, що може зробити ваша підтримка.
  • У тестовому режимі зробіть кожне з них з акаунтом, який платить. Потім відкрийте цього клієнта в кабінеті Stripe. Якщо ваш застосунок каже Free, призупинено чи видалено, а Stripe досі показує дату наступного платежу, з цієї картки спишуть гроші.
  • Щоб побачити саме продовження, не чекаючи місяць, скористайтеся тестовими годинниками Stripe (test clocks): вони переводять тестову підписку вперед у часі.
  • Спробуйте піти як клієнт у кожному стані: коли акаунт призупинено, щойно після передачі і коли акаунт більший, ніж дозволяє ваш безкоштовний тариф. Чи може клієнт скасувати тариф у застосунку? Чи дає це зробити сторінка оплати Stripe?
  • Якщо код писав хтось інший, поставте йому одне запитання: «Перелічіть усі місця, де змінюється тариф, і для кожного скажіть, що відбувається з підпискою Stripe». Якщо хоч десь відповідь на кшталт «нічого», це і є діра.

Повний кейс зі знімками до і після та звітом: Оплата тарифів і застосунки для телефона, які ШІ додав до порталу: перевірені й виправлені. Ще одна схожа діра в грошах: Повернення, більше за замовлення.

Хочете перевірити ці випадки у своєму застосунку? Застосунки, зібрані з ШІ: кожна проблема — з кроками, що її показують, з тим, що вона робить із грошима, і з тестом виправлення.