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

Сравним три самых популярных варианта: ЮKassa, Stripe и Тинькофф. Каждый из них подходит для разных ситуаций.

ЮKassa — главный выбор для российского рынка

ЮKassa (бывший ЮMoney / Яндекс.Касса) — фактически стандарт де-факто для российских магазинов и сервисов. Поддерживает всё, что нужно: карты Visa, Mastercard, МИР, СБП, ЮMoney, WebMoney, наличные через терминалы.

Комиссии: от 2,8% до 3,5% в зависимости от оборота и типа бизнеса. Чем больше оборот, тем лучше условия — при обороте от 1 млн ₽ в месяц реально договориться до 2% и ниже.

Что хорошо:

  • Простая документация на русском языке
  • Готовые SDK для PHP, Python, Node.js, Java, .NET
  • Поддержка СБП — а это плюс 15–20% конверсии на мобильных
  • Встроенная фискализация через облачную кассу (54-ФЗ)
  • Время на подключение — от одного дня после подписания договора

Что плохо:

  • Нет поддержки международных платежей
  • Выплаты до трёх рабочих дней
  • Служба поддержки работает только в рабочее время

Пример подключения через API (PHP):

$client = new \YooKassa\Client();
$client->setAuth('shop_id', 'secret_key');

$payment = $client->createPayment([
    'amount' => ['value' => '1500.00', 'currency' => 'RUB'],
    'confirmation' => [
        'type' => 'redirect',
        'return_url' => 'https://example.com/success'
    ],
    'capture' => true,
    'description' => 'Заказ №1234'
]);

header('Location: ' . $payment->getConfirmation()->getConfirmationUrl());

Несколько строк конфигурации — и пользователь уже на странице оплаты. Реально просто.

Для кого: интернет-магазины, сервисы подписки, маркетплейсы — всё, что работает с российскими пользователями.

Stripe — если планируешь выходить за рубеж

Stripe — лучший вариант для международных проектов. Компания из США, работает в 46+ странах. Принимает карты Visa, Mastercard, American Express, Apple Pay, Google Pay, SEPA, iDEAL и ещё десятки методов по всему миру.

После 2022 года Stripe официально ушёл из России — зарегистрированные в РФ юрлица подключить не получится. Но для проектов с иностранным юрлицом или ИП в другой юрисдикции — без проблем.

Комиссии: 1,4% + €0,25 для европейских карт, 2,9% + $0,30 для американских. За валютную конвертацию — ещё плюс 1,5%.

Что хорошо:

  • Документация — одна из лучших в индустрии, с живыми примерами на всех языках
  • Готовые компоненты Stripe Elements — вставляешь виджет, не пишешь форму с нуля
  • Stripe Radar — антифрод на машинном обучении, обновляется постоянно
  • Мгновенные выплаты на поддерживаемые карты (за дополнительную комиссию 1%)
  • Webhook-система с автоматическими повторными попытками при ошибках
  • Stripe Billing — мощный инструмент для подписок из коробки

Что плохо:

  • Недоступен для российских юрлиц
  • Высокие комиссии на некоторых рынках
  • Поддержка только на английском

Пример создания платёжного намерения (Node.js):

const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);

const paymentIntent = await stripe.paymentIntents.create({
  amount: 2000, // в центах
  currency: 'usd',
  payment_method_types: ['card'],
  metadata: { order_id: '1234' }
});

// Возвращаем client_secret на фронтенд
res.json({ client_secret: paymentIntent.client_secret });

Фронтенд подтверждает платёж через Stripe.js — серверный ключ никогда не уходит на клиент. Безопасность встроена прямо в архитектуру.

Для кого: SaaS-продукты, международные магазины, стартапы с иностранным юрлицом.

Тинькофф (T-Bank) — альтернатива с конкурентной комиссией

Тинькофф Касса — платёжный шлюз от Т-Банка. Хорошая альтернатива ЮKassa, особенно если у бизнеса уже есть расчётный счёт там же.

Комиссии: от 2,19% до 3,5% — чуть ниже базовой ставки ЮKassa. При обороте от 1 млн ₽ в месяц можно договориться индивидуально.

Что хорошо:

  • СБП из коробки
  • Поддержка карт МИР, включая выпущенные после санкций
  • Быстрые выплаты — можно настроить ежедневные
  • Хорошая интеграция с эквайрингом Тинькофф
  • Поддержка 54-ФЗ через встроенную онлайн-кассу
  • API очень похоже на ЮKassa — удобно, если уже знаком с одним из них

Что плохо:

  • Документация хуже, чем у ЮKassa и тем более Stripe
  • Меньше готовых библиотек для нестандартных платформ
  • Служба поддержки бывает медленной

Пример инициализации платежа (curl):

curl -X POST https://securepay.tinkoff.ru/v2/Init \
  -H "Content-Type: application/json" \
  -d '{
    "TerminalKey": "YOUR_TERMINAL_KEY",
    "Amount": 150000,
    "OrderId": "order-1234",
    "Description": "Оплата заказа",
    "Token": "YOUR_TOKEN_HASH"
  }'

Токен формируется SHA-256 хешем от конкатенации параметров с секретным паролем — стандартная практика для защиты запросов.

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

Как выбрать: короткая шпаргалка

Критерий ЮKassa Stripe Тинькофф
Российское юрлицо Да Нет Да
Международные платежи Нет Да Нет
СБП Да Нет Да
Базовая комиссия от 2,8% от 1,4%+fix от 2,19%
Качество документации Хорошо Отлично Средне
Фискализация 54-ФЗ Да Нет Да

Если работаете в России — берите ЮKassa или Тинькофф. Если уже есть расчётный счёт в Тинькоффе и важна низкая комиссия — склоняйтесь к Тинькоффу. Если нужен международный охват и работаете с иностранным юрлицом — Stripe без вариантов.

Технические нюансы, которые часто упускают

Вебхуки — настраивайте сразу. Все три системы отправляют уведомления о статусе платежа через webhook. Не надейтесь только на редирект пользователя — он может закрыть браузер до возврата на ваш сайт. Вебхук придёт независимо от этого.

Минимальный обработчик вебхука на Python (Flask):

@app.route('/webhook/yukassa', methods=['POST'])
def yukassa_webhook():
    data = request.json

    if data['event'] == 'payment.succeeded':
        payment_id = data['object']['id']
        # Проверяем идемпотентность
        if not order_already_processed(payment_id):
            update_order_status(payment_id, 'paid')

    return '', 200

Идемпотентность — обязательно. Пользователь может нажать «оплатить» дважды, или вебхук придёт несколько раз (такое бывает). Всегда проверяйте, не обработан ли уже конкретный payment_id перед тем, как что-то делать с заказом.

Тестовая среда — используйте до запуска. У всех трёх есть тестовые терминалы с набором тестовых карт. ЮKassa и Тинькофф используют карту 4111 1111 1111 1111 для успешной оплаты, Stripe — 4242 4242 4242 4242. Не запускайте в продакшн без полного прохождения тестовых сценариев.

Хранение данных карты — не нужно. Ни в коем случае не храните CVV и полные данные карты у себя. Все три системы берут это на себя и предоставляют токен для повторных платежей. Самостоятельное хранение — это обязательная сертификация PCI DSS, которая обходится в десятки тысяч долларов в год.

HTTPS — это не опция. Все три платёжки требуют HTTPS на вашем домене. Без этого ни одна не запустит платёжную форму. Если сертификата ещё нет — это первый шаг перед интеграцией.

Рекуррентные платежи и подписки

Если ваш сервис работает по модели подписки — выбор платёжки становится ещё важнее.

Stripe Billing — лучший инструмент для подписок. Поддерживает пробные периоды, паузу подписки, пропорциональное списание при смене тарифа и дунинг — автоматические повторные попытки списания при неудаче с нарастающими интервалами.

ЮKassa поддерживает рекуррентные платежи через сохранённый метод оплаты. Работает, но логику повторных попыток придётся реализовывать самостоятельно.

Тинькофф — аналогично ЮKassa. Рекуррентные платежи есть, готовой системы управления подписками нет.

Если подписная модель — ключевая часть бизнеса, а юрисдикция позволяет, Stripe окупит разницу в комиссии экономией на разработке.

Сколько стоит интеграция

Если делать самому с нуля и опыт небольшой — закладывайте два-четыре дня на одну платёжку. Это с учётом тестирования, обработки всех статусов и настройки вебхуков.

Если нужно подключить сразу несколько платёжек или интегрировать их с CRM, складской системой или кастомной корзиной — задача усложняется. В REEXY (r3xy.ru) интеграция сервисов начинается от 1 500 ₽, и подключение платёжек — один из самых частых запросов при сдаче интернет-магазинов под ключ.

Частые ошибки при подключении

Не обрабатывать статус pending. Платёж может зависнуть на проверке антифрода. Если сразу выдавать пользователю доступ к товару без проверки финального статуса — получите кейсы с открытым доступом без реальной оплаты.

Не настраивать алерты на ошибки. Если платёжная система вернула ошибку или вебхук не дошёл — об этом нужно знать сразу, а не когда клиент позвонит. Настройте уведомления в Telegram или на почту.

Игнорировать UX при отказе. Если платёж не прошёл, пользователь должен понять почему и что делать дальше. Стандартные технические сообщения от платёжек часто пугают людей — адаптируйте их под человека.

Не тестировать сценарий двойной оплаты. Пользователь оплатил, нажал «назад», оплатил снова — у вас два платежа за один заказ. Или закрыл браузер до возврата на сайт — статус не обновился. Все эти сценарии нужно пройти руками ещё в тестовой среде.

Забыть про возвраты. Интерфейс возврата нужен сразу — не в следующем спринте. Все три платёжки поддерживают частичный и полный возврат через API, и это нужно реализовать до запуска.

Хорошая интеграция платёжки — это не просто вставить готовый виджет. Это правильно обработать все состояния платежа, настроить вебхуки, написать логику идемпотентности и убедиться, что ни один оплаченный заказ не потеряется. Один раз сделано правильно — работает годами без сюрпризов.