Суть урока
Stripe — это не просто "принять платёж". Это операционная система денег для твоего AI-бизнеса. А Stripe MCP превращает Claude в финансового оператора: создаёт продукты, читает транзакции, управляет подписками — через текст, без открытия дашборда.
Ключевые концепции
- 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. После подключения ты можешь управлять бизнесом через текст.
# Подключаем 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.
Базовые операции через 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-обработчик:
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Подписочная модель: как Claude помогает строить SaaS billing
Схема подписочного SaaS с Claude:
Клиент → Payment Link → Stripe webhook → твой сервер
↓
Claude анализирует событие
↓
создаёт аккаунт / активирует / блокирует
↓
отправляет welcome emailClaude может обрабатывать эти события по-умному. Например, при отмене подписки:
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:
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
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 ключ
- Зарегистрируйся на stripe.com
- Dashboard → Developers → API keys (названия пунктов меню Stripe меняются; работай в тестовом режиме)
- Скопируй Publishable key (pk_test_...) и Secret key (sk_test_...). Для самого Stripe MCP ключи не нужны, вход идёт через OAuth: ключи пригодятся для скрипта с webhook
- Сохрани в
.env:Код STRIPE_SECRET_KEY=sk_test_xxx STRIPE_PUBLISHABLE_KEY=pk_test_xxx
Шаг 2: Подключить Stripe MCP
# Подключить 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: Протестировать платёж
- Открой payment link в браузере
- Используй тестовую карту Stripe:
4242 4242 4242 4242 - Любая дата в будущем, любой CVC
- Проверь в Stripe Dashboard → Payments
Шаг 5: Запустить локальный webhook (опционально)
# Установить 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 команды
Отметка хранится только в этом браузере и никуда не отправляется. Мой прогресс