Я уже больше года работаю над проектом Language Dove, и наконец пришло время его монетизировать.В этой статье - мой опыт с двумя платёжными сервисами: американсЯ уже больше года работаю над проектом Language Dove, и наконец пришло время его монетизировать.В этой статье - мой опыт с двумя платёжными сервисами: американс

Мой опыт монетизации проекта: шахматы по переписке с Paddle

2026/03/17 18:46
12м. чтение
Для обратной связи или замечаний по поводу данного контента, свяжитесь с нами по адресу crypto.news@mexc.com

Я уже больше года работаю над проектом Language Dove, и наконец пришло время его монетизировать.

В этой статье - мой опыт с двумя платёжными сервисами: американским MoR (merchant of record) Paddle и интернет-эквайрингом от IDBank в Армении, а также технические детали интеграции с тем из них, который я в итоге выбрал.

О проекте

Language Dove - это платформа для изучения языков: у меня есть курсы с нуля, интерактивные книги, упражнения на говорение.

Но главная фича сайта - это караоке-субтитры к фильмам с двумя видами перевода: адаптивным художественным и буквальным, но на уровне отдельных слов. Про то, как я их делаю, я недавно писал на Хабре.

Если у вас нормально работает YouTube, то фильмы с субтитрами можно посмотреть тут (с переводом на русский) или тут (с переводом на английский).

Если у вас проблемы с YouTube - есть демка на Google Drive: первая серия «Футурамы» с апскейлом до 2160p и с субтитрами, вшитыми прямо в видео.

ce12dca7dff311a818bd39daaa3b91a8.png

В базовом варианте все переводы делаются автоматически. Однако, есть возможность подправить их вручную. Для «Футурамы» я так и сделал - это заняло ~2 часа, по часу на каждый вид перевода.

Модель монетизации

Я реализовал 2 вида монетизации:

  1. Подписка на материалы сайта. Весь контент делится на платный и бесплатный - доступ к платному открывается единой подпиской. В библиотеке (курсы, книги, видео с субтитрами) у каждого материала хранится булевой флаг платности. Чуть сложнее с упражнениями на говорение: они разбиты на шесть уровней, каждый следующий (кроме последнего) вдвое длиннее предыдущего. Первый уровень (100 предложений) бесплатный, остальные - по подписке.

    a58ddfc85af030434134dcb980bd1bfc.png
  2. Заказ субтитров для кастомных видео. Пользователь оформляет заказ, оставляет контакты → мне приходит сообщение в Телеграм → я ему пишу, беру видео → я делаю субтитры → отдаю результат → пользователь платит. Нужны две страницы: страница заказа с калькулятором цен и страница оплаты после получения субтитров. Для пользователей из России вторая страница не используются - идёт расчет внутри РФ.

    7d091812f4902c20d159eb755b01a07e.png

Обо мне

Живу в Ереване.

Ради проекта уволился с работы, оформил ИП, а затем бизнес-ВНЖ.

ИП-счёт открыл в IDBank - потому что у них есть интернет-эквайринг.

Гражданство РФ.

Какие есть альтернативы

Stripe - самый популярный выбор у американских фаундеров, но в Армении он не работает. Есть обходной путь через удалённую регистрацию компании в США, но это даже на словах звучит запредельно сложно.

Я посмотрел другие американские сервисы: Lemon Squeezy, Paddle, Dodo Payments, FastSpring. Везде на определённом этапе требуется верификация по паспорту.

Patreon тоже рассматривал, но быстро отбросил. «Поддержите нас на Patreon, чтобы получить доступ к платным фичам сайта» - я такого ни на одном серьёзном сайте не видел. Для западной аудитории это выглядело бы схематозно и подозрительно.

Тогда я вспомнил про IDBank и решил подать заявку на «виртуальный POS-терминал» (это они так называют интернет-эквайринг). Сайт банка жёстко глючил, подать онлайн не получилось - пришлось звонить, и оператор оформила заявку по телефону.

Dodo Payments

Решил обходить сервисы по возрастанию популярности - в моём представлении, менее популярный сервис с большей вероятностью будет добрее к русским.

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

Fast Spring

На следующий день после регистрации пришло письмо

Понял, что шансов мало, но на всякий случай я подробно расписал свою ситуацию. Ожидаемо отказали, причём формулировка породила больше вопросов, чем ответов:

Какое отношение русский паспорт имеет к валюте? (Мой ИП-счёт, естественно, долларовый.) Может, имели в виду «current restrictions»?

Проверка сайта в Paddle

На очереди Paddle.

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

С первой стадией всё прошло относительно гладко.

Нужно было добавить стандартные юридические страницы: Terms of Service, Privacy Policy, Refund Policy и Pricing.

После отправки на проверку через 3 дня пришло письмо с замечаниями:

1. Срок рефанда. Paddle требует минимум 14 дней на возврат - у меня было меньше, попросили исправить.

2. Распознавание речи. Потребовали убрать функцию распознавания речи в упражнениях на говорение с формулировкой: "Paddle cannot support products that have a voice-over feature". Я изучил список запрещённых продуктов - самое близкое к войсоверам - это "Content Generation with Voice Impersonations". Очевидно, сотрудник перепутал speech-to-text и text-to-speech. В ответном письме объяснил разницу, добавив, что распознавание речи используется практически всеми языковыми платформами.

3. Формат обучения. Спросили, предзаписаны ли материалы или я занимаюсь репетиторством вживую - последнее запрещено как "human services". Ответил, что всё предзаписано, и дал ссылку на курс испанского.

Ещё через 3 дня пришёл ответ - сайт одобрен.

Идём в армянский банк

Вспоминаем про IDBank. Ответа на заявку так и не было, поэтому я пошёл в отделение лично.

Сначала всё шло нормально - меня усадили обсуждать «виртуальный POS» с менеджером. Спрашиваю: есть стандартная процедура для подписочной модели? А если нет, то можно ли навелосипедить на основе разовых платежей? Менеджер кому-то позвонила и неуверенно ответила: подписок нет, но навелосипедить можно.

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

Уже собирался оставлять заявку, но на всякий случай спросил: «А ничего, что сайт на английском»? Оказалось - сайт обязательно должен иметь армянскую версию. Спрашиваю: «Можно нейронкой перевести»? Менеджер не поняла. «Ну, искусственным интеллектом.» (Сказать «машинный перевод» я побоялся - подумает, что я собираюсь построчно гнать через Google Translate.) Она всё равно не поняла. Тогда напрямую: «Ничего, если перевод будет звучать немного коряво?» - «Ничего страшного, главное, чтобы всё было понятно.»

Ушёл из банка с задачей: добавить локализацию на армянский.

Добавляем локализацию

Я решил сделать полноценный переключатель языка - не только на армянский, но и на другие языки.

Для каждого языка хранится .json-файл с локализованными строками. Файл генерируется автоматически, после чего перевод можно поправить вручную. Строки сгруппированы по страницам - каждая страница переводится отдельным запросом к LLM.

Стратегия перевода зависит от типа страницы:

  1. Для пользовательских страниц (лендинг, цены, блог, статьи по грамматике, страница заказа субтитров) используется транскреация, адаптивный перевод (такой же, как и для фильмов).

  2. Юридические (ToS, Privacy Policy, Refund Policy) - прямой перевод, потому что транскреация может накреативить там, где это крайне неуместно.

Про различия обычного перевода и транскреации я писал в предыдущей статье. Для перевода использовал Claude Opus 4.5 - по моим личным бенчмаркам, модели Anthropic лучше других справляются с языковыми задачами.

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

То, что вы видите на сайте в русской версии - это на 100% машинный перевод. По-моему, выглядит весьма достойно. А вот с армянским LLM справляются заметно хуже. Скорее всего, армянская версия ощутимо пахнет машинным переводом. Если среди читателей есть армяне - поделитесь впечатлениями, интересно.

После перевода сайта я снова пришёл в банк, и заявку наконец обработали.

Верификация личности в Paddle

Теперь самое «интересное» - верификация с паспортом РФ.

Paddle использует сервис Onfido: присылают ссылку, загружаешь фото документа и селфи, Onfido всё проверяет и возвращает вердикт. Россия в списке есть - можно отправить внутренний паспорт или загранпаспорт. Я выбрал загран.

Важный нюанс: принимают только фотографию, не скан. У меня камера на планшете сломана, а вебка - так себе. К счастью, нашлось старое фото заграна, снятое ещё рабочей камерой.


Отправил всё днём, ночью пришёл ответ:

  • Фото недостаточно чёткое, нужно переснять.

  • Нужен proof of address в несанкционной стране: utility bill или договор аренды.

Отправил семь документов в качестве proof of address:

  • текущий и 3 предыдущих ВНЖ

  • договор аренды

  • скриншоты оплаты коммуналки из банковского приложения (в Армении счета на физическую почту не присылают)

Фото решил переснять вебкой крупным планом.


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


На этот раз к фото претензий не было. Зато попросили банковскую выписку с именем и адресом за последние 3 месяца.

А вот это проблема. В банке с личным счётом указан российский адрес (открывал в 2022-м, сразу после переезда). В банке с ИП-счётом мало транзакций, а армянский адрес не совпадает с адресом проживания - оформлял ИП удалённо, и компания вписала свой юрадрес вместо моего.

Попробовал сменить адрес в первом банке - отказали. Их устраивает только регистрация по адресу в паспорте, никакие другие документы не годятся; я делал регистрацию, но для предыдущего ВНЖ. Да и в выписке они адрес всё равно не указывают.

Делать нечего - отправил выписки из обоих банков и честно описал всю ситуацию. Для подтверждения адреса приложил справку о регистрации ИП.


Ответ снова про фото паспорта: у системы проблема с распознаванием (и это с профессиональным снимком!). Спросили, есть ли другой документ. Выбора нет - только потрёпанный временем внутренний паспорт РФ.

Снова пошёл в фотостудию. На этот раз сфоткал и загран, и внутренний паспорт по нескольку раз. Отправил всё.


В ответ - опять запрос proof of address в несанкционной стране. К этому моменту имена сотрудников Paddle начали повторяться - видимо, я перебрал их всех.

Снова отправил все документы.


На этот раз написали, что им нужно время проверить всё предоставленное. Через 3 дня пришло подтверждение - верификация пройдена. Ещё несколько дней занял «Final Review», но там прошло без проблем.

Ура, получилось! Наконец-то можно интегрировать монетизацию.

Как там с армянским банком.

Через 2 недели после подачи заявки позвонили и попросили добавить на сайт логотипы Visa, Mastercard, ArCa и IDram. Добавил - сказали, что отправили на дальнейшую проверку.

Ещё через месяц - когда аккаунт Paddle уже был верифицирован, но монетизация ещё не внедрена - пришло письмо с отказом от IDBank.

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

Как работает Paddle

В Paddle разработчик создаёт продукты, а для каждого продукта назначает одну или несколько цен.

Атрибуты цены:

  1. Тип платежа: единовременный, ежемесячный или ежегодный

  2. Значение для каждой страны - в долларах или другой поддерживаемой валюте (примерно у половины стран местная валюта не поддерживается)

  3. Отображение: с НДС, без НДС или по традиции страны. В США цены указывают без НДС (он добавляется при покупке), в большинстве других стран - с НДС

Есть два вида API-ключей:

  1. Фронтенд-ключ - публичный. Через него я получаю цены в локали пользователя для отображения на сайте

  2. Бекенд-ключ - секретный. Я использую его для проверки наличия подписки

Также есть скидочные коды: задаём, к каким ценам применим код, а также размер скидки. Скидка срабатывает, когда пользователь вводит код на странице покупки.

Комиссия Paddle: 5% + $0.50 за транзакцию. Из-за фиксированных 50 центов невыгодно дробить крупные покупки на несколько транзакций.

Процесс интеграции

  1. Создаём продукты, цены и скидочные коды

  2. На фронтенде делаем страницу с ценами - подтягиваем их c помощью фронтенд-ключа

  3. По кнопке «Купить» / «Подписаться» - редирект на страницу оплаты Paddle. Контролируем её косвенно: можно передать email и скидочный код для автозаполнения

  4. После покупки получаем событие на фронтенде и обновляем статус пользователя. Можно настроить вебхук для бекенда, но мне это не нужно - статус подписки проверяется при запросе контента

Пока подписка активна, Paddle сам списывает деньги по расписанию - с нашей стороны ничего не требуется.

Paddle хранит платёжные данные пользователей и предоставляет персональную ссылку на управление подпиской - отмена, смена платёжных данных. Эта же ссылка приходит в письме при покупке.

Реализация подписки на платные материалы

Я создал два продукта: ежемесячная подписка ($9/мес) и годовая($72/год, т.е. $6/мес). Отображение цены - по традиции страны, чтобы не раздражать пользователей.

Красивый прайсинг

Проблема: при автоконвертации, цены во многих локалях выглядят некрасиво - получаются нецелые числа, плюс отсутствует «психологический прайсинг» (199 вместо 200 - мозг видит «сто с чем-то» и воспринимает цену ниже).

Решение - скрипт, который автоматически вычисляет цены во всех валютах с учётом НДС-традиции и подбирает красивые числа, сохраняя примерно одинаковый доход с транзакции:

  1. Вычисляем вещественное референсное значение в местной валюте

  2. Ищем целое число, которое меньше референсного не более чем на 10%, но при этом у него либо отличается ведущая цифра, либо меньше цифр в записи

  3. Если такого нет - просто округляем

Авторизация и защита

Авторизация у меня через Supabase: magic link или Google. При нажатии «Подписаться» пользователь обязан быть авторизован - иначе он может вписать произвольный email, а Paddle его не проверяет. Неавторизованных просим сначала залогиниться.

Пользователь идентифицируется по email. На бекенд передаётся не email напрямую, а JWT-токен сессии - email извлекается из него через Supabase API.

Бекенд умеет по email:

  1. Проверять наличие подписки

  2. Возвращать ссылку на управление подпиской

Если у залогиненного пользователя уже есть активная подписка — кнопки «Подписаться» деактивируются (Paddle, как выяснилось, не контролирует повторную подписку на тот же продукт).

Логика доступа к контенту

Если материал бесплатный → отдаём сразу.

Если платный → извлекаем email из JWT, проверяем подписку. Есть - отдаём. Нет - возвращаем ошибку, на фронтенде показываем попап «материал платный» с редиректом на страницу подписки.

Реализация заказа субтитров

Стоимость обработки видео зависит от:

  • Длины видео: короткое / среднее / длинное

  • Нужен ли адаптивный художественный перевод

  • Нужен ли контекстуальный перевод на уровне слов

  • Количества видео в заказе

Итого я создал 12 цен: 3 длины × 4 комбинации переводов. Скидки за объём реализованы через скидочные коды.

Внимание: цены указаны из расчета, что все переводы автоматические. Я в теории могу их улучшить вручную, но это весьма трудоёмко (напоминаю, на одну серию «Футурамы» ушло 2 часа). Можно об этом договориться отдельно.

bb5433696d37c769482d5bcfd6c3f60b.png

Также я сверстал страничку для оплаты после выполнения заказа.

Все настройки задаются через параметры URL. Предполагается, что я сам формирую соответствующую ссылку и отправляю её пользователю.

1eefc66bf598ad3a7269b8c878f4205d.png

Выводы

Таким образом, монетизировать свой проект через Paddle возможно даже с российским паспортом; однако процесс верификации будет небыстрым.

Я рассказал про подводные камни монетизации и надеюсь, что кому-то помог не совершить ошибок.

Источник

Отказ от ответственности: Статьи, размещенные на этом веб-сайте, взяты из общедоступных источников и предоставляются исключительно в информационных целях. Они не обязательно отражают точку зрения MEXC. Все права принадлежат первоисточникам. Если вы считаете, что какой-либо контент нарушает права третьих лиц, пожалуйста, обратитесь по адресу crypto.news@mexc.com для его удаления. MEXC не дает никаких гарантий в отношении точности, полноты или своевременности контента и не несет ответственности за любые действия, предпринятые на основе предоставленной информации. Контент не является финансовой, юридической или иной профессиональной консультацией и не должен рассматриваться как рекомендация или одобрение со стороны MEXC.

Цены на криптовалюту