Библиотека · Запуск: оплата, секреты, законы, журналы

Payments & Billing — Stripe MCP, подписки, webhooks

Строитель70 минОбновлено: октябрь 2026
84 из 105 в библиотеке

Время: ~25 мин теории + 45 мин практики


Суть урока

Stripe — это не просто "принять платёж". Это операционная система денег для твоего AI-бизнеса. А Stripe MCP превращает Claude в финансового оператора: создаёт продукты, читает транзакции, управляет подписками — через текст, без открытия дашборда.

🎨 Образ: Раньше деньги двигались через кассира в банке — нужно было прийти лично, заполнить бумаги, ждать. Stripe MCP — это как банковское API прямо в голове у Клода. Ты говоришь "создай платёжную ссылку на $49/мес", он делает это мгновенно.


Ключевые концепции

  • Stripe MCP — официальный инструмент от Stripe для управления через Claude
  • Payment Link — ссылка без сайта: отправил клиенту → он оплатил
  • Subscription — повторяющийся платёж (основа SaaS revenue)
  • Webhook — Stripe стучится в твой сервер когда что-то происходит
  • Dunning — автоматическая работа с просроченными платежами
  • MRR/ARR — метрики здоровья подписочного бизнеса

Теория

Почему Stripe, а не альтернативы

Выбор платёжного сервиса для indie-разработчика выглядит так (комиссии у разных сервисов и стран разные, актуальные ставки смотри на сайтах):

Сервис Тип Комиссия Особенность
Stripe Платёжный процессор На октябрь 2026 в США: 2.9% + 30¢ за карту, плюс 1.5% за иностранную карту и 1% за конвертацию валюты. В других странах ставки свои Официальный MCP; налоги и отчётность на тебе
Paddle Merchant of Record Смотри на сайте Продавцом выступает сервис и сам занимается налогами с продаж, поэтому комиссия обычно выше
Lemon Squeezy Merchant of Record Смотри на сайте Та же модель, что у Paddle
PayPal Платёжный сервис Смотри на сайте Знаком большинству покупателей

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

Важно: Stripe работает не во всех странах. Перед стартом проверь на сайте Stripe, поддерживается ли твоя страна. Если нет — посмотри платёжные сервисы, доступные у тебя.

Stripe MCP: что это и зачем

Stripe MCP — официальный сервер Stripe, который подключает Stripe API прямо в Claude Code. На октябрь 2026 это удалённый сервер по адресу https://mcp.stripe.com, вход через OAuth. После подключения ты можешь управлять бизнесом через текст.

bash
# Подключаем Stripe MCP (удалённый сервер)
claude mcp add --transport http stripe https://mcp.stripe.com/

# Затем в Claude Code открой /mcp и пройди авторизацию Stripe (OAuth)

Stripe также предлагает установку одной командой: npm install -g @stripe/cli@latest, затем stripe agent setup. Она сама подключит MCP и навыки для твоего агента.

После подключения в Claude появляются инструменты:

  • stripe_api_search и stripe_api_details — найти метод Stripe API и посмотреть его параметры
  • stripe_api_read — читать данные: клиентов, подписки, счета, баланс
  • stripe_api_write — создавать и менять: продукты, цены, платёжные ссылки, подписки
  • get_stripe_account_info — сведения об аккаунте
  • stripe_analytics — метрики и отчёты (на октябрь 2026 в предпросмотре)
  • search_stripe_documentation — поиск по документации Stripe

Список инструментов может меняться, актуальный смотри в документации Stripe MCP. Опасные действия, например возврат денег, Stripe просит подтвердить по ссылке: человек остаётся в контуре. Начинай в тестовом режиме (sandbox) и подтверждай действия с деньгами сам.

Если подключаешь MCP не через OAuth, а по ключу: с 31.10.2026 Stripe MCP не принимает обычные секретные и ограниченные ключи без метки Agent. Нужен ключ типа Agent (agent API key) либо OAuth.

🎨 Образ: Раньше управлял Stripe через веб-дашборд — как водить машину смотря в окно через перископ. MCP — это как сесть нормально за руль.

Базовые операции через MCP

Создать продукт и цену:

Напиши в чат
Ты: Создай продукт "AI Content Tool" за $49 в месяц, режим подписки

Claude [stripe_api_write: создать продукт]: {
  "name": "AI Content Tool",
  "description": "Monthly AI content generation subscription"
}

Claude [stripe_api_write: создать цену]: {
  "product": "prod_xxx",
  "unit_amount": 4900,
  "currency": "usd",
  "recurring": {"interval": "month"}
}

Создать платёжную ссылку:

Напиши в чат
Ты: Создай payment link для этой цены

Claude [stripe_api_write: создать платёжную ссылку]: {
  "line_items": [{"price": "price_xxx", "quantity": 1}]
}

Результат: https://buy.stripe.com/test_XXXXX

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

Посмотреть клиентов:

Напиши в чат
Ты: Покажи последних 10 клиентов и их статус подписки

Claude [stripe_api_read: список клиентов]: {"limit": 10}
Claude [stripe_api_read: подписки клиента]: {для каждого}

Результат: таблица с именами, email, статусом, суммой

Webhooks: Stripe рассказывает тебе что происходит

Webhook — это HTTP-запрос который Stripe отправляет на твой сервер когда что-то случается. Событий десятки, важнейшие:

Событие Что значит Твоё действие
payment_intent.succeeded Платёж прошёл Активировать аккаунт клиента
customer.subscription.deleted Подписка отменена Заблокировать доступ
invoice.payment_failed Платёж не прошёл Запустить dunning
customer.subscription.updated Апгрейд/даунгрейд Изменить план

Базовый webhook-обработчик:

python
import os
import stripe
from flask import Flask, request

app = Flask(__name__)
stripe.api_key = os.environ["STRIPE_SECRET_KEY"]
endpoint_secret = os.environ["STRIPE_WEBHOOK_SECRET"]

@app.route('/webhook', methods=['POST'])
def webhook():
    payload = request.data
    sig_header = request.headers.get('Stripe-Signature')
    
    try:
        event = stripe.Webhook.construct_event(
            payload, sig_header, endpoint_secret
        )
    except ValueError:
        return 'Invalid payload', 400
    except stripe.SignatureVerificationError:
        return 'Invalid signature', 400
    
    if event['type'] == 'payment_intent.succeeded':
        payment_intent = event['data']['object']
        # Активировать клиента
        activate_customer(payment_intent['customer'])
    
    elif event['type'] == 'invoice.payment_failed':
        invoice = event['data']['object']
        # Запустить dunning sequence
        start_dunning(invoice['customer'])
    
    return '', 200

🎨 Образ: Webhook — как дверной звонок. Ты не стоишь у двери 24/7 и не спрашиваешь "кто-то пришёл?". Stripe сам звонит когда нужно.

Подписочная модель: как Claude помогает строить SaaS billing

Схема подписочного SaaS с Claude:

Код
Клиент → Payment Link → Stripe webhook → твой сервер
                                              ↓
                                    Claude анализирует событие
                                              ↓
                              создаёт аккаунт / активирует / блокирует
                                              ↓
                                    отправляет welcome email

Claude может обрабатывать эти события по-умному. Например, при отмене подписки:

python
def handle_subscription_cancelled(customer_id):
    # Claude анализирует историю клиента
    client = anthropic.Anthropic()
    
    customer_history = get_customer_history(customer_id)
    
    response = "".join(b.text for b in client.messages.create(
        model="claude-sonnet-5-5",
        max_tokens=500,
        messages=[{
            "role": "user",
            "content": f"""
            Клиент отменил подписку. История:
            - Срок: {customer_history['months']} мес
            - Использование: {customer_history['usage']} запросов/мес
            - Последний вход: {customer_history['last_login']}
            
            Напиши персональный email для win-back через 7 дней.
            Тон: дружелюбный, без давления.
            """
        }]
    ).content if b.type == "text")
    
    schedule_email(customer_id, response, delay_days=7)

Dunning: просроченные платежи — деньги которые уже твои

Dunning — это процесс работы с неудачными платежами. Карты блокируются, истекают, кончаются деньги. Без dunning часть выручки теряется просто потому что клиенту не напомнили. В Stripe уже есть встроенные повторные попытки списания и письма о неудачном платеже: включи их первыми, а Claude подключай для персонального тона.

Smart dunning с Claude:

python
def smart_dunning_email(customer_id, attempt_number):
    """
    Attempt 1 (сразу): мягкое напоминание
    Attempt 2 (день 3): немного настойчивее  
    Attempt 3 (день 7): последнее предупреждение
    """
    customer = get_customer(customer_id)
    
    tone_map = {
        1: "дружелюбный, возможно просто забыл обновить карту",
        2: "немного более серьёзный, предлагаем помощь",
        3: "чёткий, объясняем что будет если не оплатит"
    }
    
    client = anthropic.Anthropic()
    email = "".join(b.text for b in client.messages.create(
        model="claude-haiku-4-5",  # Haiku достаточно для email
        max_tokens=300,
        messages=[{
            "role": "user",
            "content": f"""
            Попытка {attempt_number}/3. Тон: {tone_map[attempt_number]}
            Клиент: {customer['name']}, продукт: {customer['product']}
            Напиши короткий email про неудачный платёж.
            Включи прямую ссылку для обновления карты.
            """
        }]
    ).content if b.type == "text")
    
    send_email(customer['email'], email)

Аналитика MRR/ARR через Claude + Stripe data

python
def monthly_revenue_report():
    # Получаем данные из Stripe
    subscriptions = stripe.Subscription.list(status='active', limit=100)
    
    # Годовые тарифы раздели на 12, чтобы получить помесячную сумму
    mrr = sum(
        item['price']['unit_amount'] * item.get('quantity', 1) / 100
        for sub in subscriptions.data
        for item in sub['items']['data']
    )
    
    churned_last_month = get_churned_count()
    new_last_month = get_new_customers_count()
    
    # Claude делает анализ
    client = anthropic.Anthropic()
    report = "".join(b.text for b in client.messages.create(
        model="claude-sonnet-5-5",
        max_tokens=800,
        messages=[{
            "role": "user",
            "content": f"""
            Данные за месяц:
            - MRR: ${mrr:.2f}
            - ARR (прогноз): ${mrr * 12:.2f}
            - Новые клиенты: {new_last_month}
            - Отменили: {churned_last_month}
            - Churn rate: {churned_last_month / (len(subscriptions.data)) * 100:.1f}%
            
            Дай короткий анализ (5-7 предложений) и 2-3 конкретных действия.
            """
        }]
    ).content if b.type == "text")
    
    return report

Практика

Шаг 1: Получить Stripe API ключ

  1. Зарегистрируйся на stripe.com
  2. Dashboard → Developers → API keys (названия пунктов меню Stripe меняются; работай в тестовом режиме)
  3. Скопируй Publishable key (pk_test_...) и Secret key (sk_test_...). Для самого Stripe MCP ключи не нужны, вход идёт через OAuth: ключи пригодятся для скрипта с webhook
  4. Сохрани в .env:
    Код
    STRIPE_SECRET_KEY=sk_test_xxx
    STRIPE_PUBLISHABLE_KEY=pk_test_xxx

Шаг 2: Подключить Stripe MCP

bash
# Подключить Stripe MCP (удалённый сервер, вход через OAuth)
claude mcp add --transport http stripe https://mcp.stripe.com/

# Проверить подключение и пройти авторизацию
claude
> /mcp  # должен показать stripe в списке

Шаг 3: Создать первый продукт через Claude

В Claude Code напиши:

Напиши в чат
Создай через Stripe MCP:
1. Продукт "Мой AI-сервис" с описанием на русском
2. Цену $29 в месяц (recurring, monthly)
3. Payment link для этой цены
Покажи итоговую ссылку.

Шаг 4: Протестировать платёж

  1. Открой payment link в браузере
  2. Используй тестовую карту Stripe: 4242 4242 4242 4242
  3. Любая дата в будущем, любой CVC
  4. Проверь в Stripe Dashboard → Payments

Шаг 5: Запустить локальный webhook (опционально)

bash
# Установить Stripe CLI
brew install stripe/stripe-cli/stripe

# Слушать события локально
stripe listen --forward-to localhost:5000/webhook

# В другом терминале — симулировать платёж
stripe trigger payment_intent.succeeded

Шаг 6: Задание для практики

Создай через Claude:

  • Продукт с 3 тарифами: Basic ($9), Pro ($29), Agency ($99)
  • Payment link для каждого тарифа
  • Простой скрипт который выводит список всех активных подписок
  • Email-шаблон для просроченного платежа (dunning attempt 1)

Инструменты и ресурсы

  • Stripe MCP: https://mcp.stripe.com (вход через OAuth), подробности в docs.stripe.com/mcp
  • Stripe CLI: brew install stripe/stripe-cli/stripe
  • Stripe Docs: docs.stripe.com
  • Stripe тестовые карты: docs.stripe.com/testing
  • Webhooks: docs.stripe.com/webhooks
  • Stripe Python SDK: pip install stripe

Ключевые выводы

Stripe MCP превращает Claude в твоего биллинг-менеджера. Создание продуктов, управление подписками, dunning — через текст. Webhook — это уши системы: Stripe говорит тебе что происходит, а Claude решает что с этим делать. Payment link без сайта — это минимальный viable billing для первого клиента. Начни с него, усложняй по мере роста. Действия с деньгами подтверждай сам.


Следующий урок

→ MLOps для indie — мониторинг, drift, retraining без DevOps команды

Отметка хранится только в этом браузере и никуда не отправляется. Мой прогресс