back
loading skill details...
Automate Stripe payment processing, subscription management, invoicing, and financial reporting
Stripe Payments
Comprehensive skill for automating Stripe payment processing and subscription management.
Core Workflows
1. Payment Flow
STRIPE PAYMENT FLOW:
┌─────────────────┐
│ Customer │
│ Payment Intent │
└────────┬────────┘
▼
┌─────────────────┐
│ Checkout │
│ - Card Input │
│ - Validation │
└────────┬────────┘
▼
┌─────────────────┐
│ Processing │
│ - Auth │
│ - Capture │
└────────┬────────┘
▼
┌─────────────────┐
│ Confirmation │
│ - Receipt │
│ - Webhook │
└─────────────────┘
2. Webhook Events
webhook_handlers:
payment_intent.succeeded:
actions:
- fulfill_order
- send_receipt
- update_crm
payment_intent.payment_failed:
actions:
- notify_customer
- retry_payment
- log_failure
customer.subscription.created:
actions:
- provision_access
- send_welcome_email
- update_metrics
customer.subscription.deleted:
actions:
- revoke_access
- send_offboarding_email
- trigger_retention_flow
invoice.payment_failed:
actions:
- send_dunning_email
- update_subscription_status
- create_support_ticket
Subscription Management
Plan Configuration
subscription_plans:
- name: Starter
id: plan_starter
price: 29
currency: usd
interval: month
features:
- "5 users"
- "10GB storage"
- "Email support"
metadata:
tier: 1
- name: Growth
id: plan_growth
price: 79
currency: usd
interval: month
features:
- "25 users"
- "100GB storage"
- "Priority support"
metadata:
tier: 2
- name: Enterprise
id: plan_enterprise
price: custom
interval: month
features:
- "Unlimited users"
- "Unlimited storage"
- "24/7 support"
- "Custom integrations"
metadata:
tier: 3
Subscription Lifecycle
subscription_automation:
on_create:
- provision_service
- send_welcome_email
- create_customer_record
- schedule_onboarding_call
on_upgrade:
- adjust_limits
- prorate_billing
- send_upgrade_confirmation
- unlock_features
on_downgrade:
- schedule_limit_reduction
- send_downgrade_notice
- offer_retention_discount
on_cancel:
- schedule_access_revocation
- send_exit_survey
- trigger_win_back_campaign
on_renewal:
- send_renewal_receipt
- update_usage_quotas
- check_plan_eligibility
Invoice Management
Invoice Automation
invoice_settings:
defaults:
auto_advance: true
collection_method: charge_automatically
days_until_due: 30
templates:
header:
company_name: "{{company}}"
logo: "{{logo_url}}"
footer:
payment_terms: "Net 30"
thank_you: "Thank you for your business!"
automation:
- event: invoice.created
actions:
- add_line_items
- apply_discounts
- calculate_tax
- event: invoice.finalized
actions:
- send_to_customer
- log_to_accounting
- event: invoice.paid
actions:
- send_receipt
- update_revenue
Dunning Management
dunning_sequence:
- day: 0
event: payment_failed
actions:
- retry_payment
- email_template: payment_failed_1
- day: 3
actions:
- retry_payment
- email_template: payment_failed_2
- sms_reminder
- day: 7
actions:
- retry_payment
- email_template: payment_failed_3
- mark_at_risk
- day: 14
actions:
- final_retry
- email_template: final_notice
- pause_subscription
- day: 30
actions:
- cancel_subscription
- email_template: cancellation
- revoke_access
Checkout Integration
Checkout Session
// Create Checkout Session
const session = await stripe.checkout.sessions.create({
mode: 'subscription',
payment_method_types: ['card'],
line_items: [{
price: 'price_xxx',
quantity: 1,
}],
success_url: 'https://example.com/success?session_id={CHECKOUT_SESSION_ID}',
cancel_url: 'https://example.com/cancel',
customer_email: 'customer@example.com',
subscription_data: {
trial_period_days: 14,
metadata: {
plan_tier: 'growth'
}
},
allow_promotion_codes: true,
});
Payment Elements
// Create Payment Intent
const paymentIntent = await stripe.paymentIntents.create({
amount: 2000,
currency: 'usd',
customer: 'cus_xxx',
payment_method_types: ['card'],
metadata: {
order_id: '12345'
}
});
// Confirm Payment
const result = await stripe.confirmCardPayment(
paymentIntent.client_secret,
{
payment_method: {
card: cardElement,
billing_details: {
name: 'John Doe'
}
}
}
);
Revenue Analytics
Dashboard Metrics
STRIPE REVENUE DASHBOARD
═══════════════════════════════════════
MRR: $125,450 (+8.5%)
ARR: $1,505,400
New MRR: $12,340
Churned MRR: $4,120
Net MRR: +$8,220
SUBSCRIPTION BREAKDOWN:
Active: 892
Trialing: 156
Past Due: 23
Cancelled: 45 (this month)
BY PLAN:
Starter ████████░░░░░░░░ 45% │ $28,500
Growth ██████████░░░░░░ 38% │ $47,600
Enterprise ██████░░░░░░░░░░ 17% │ $49,350
CHURN ANALYSIS:
Monthly Churn Rate: 4.2%
MRR Churn: $4,120
Reasons:
- Price ████████░░░░ 35%
- Competitor ██████░░░░░░ 25%
- No longer needed ████░░░░░░░░ 20%
- Support issues ███░░░░░░░░░ 12%
- Other ██░░░░░░░░░░ 8%
Cohort Analysis
cohort_metrics:
- cohort: "2024-01"
customers: 150
month_1_retention: 95%
month_3_retention: 82%
month_6_retention: 71%
ltv_estimate: $890
- cohort: "2024-02"
customers: 180
month_1_retention: 93%
month_3_retention: 79%
ltv_estimate: $820
Fraud Prevention
Risk Rules
radar_rules:
- name: block_high_risk
condition: "risk_level = 'highest'"
action: block
- name: review_elevated_risk
condition: "risk_level = 'elevated'"
action: review
- name: block_disposable_email
condition: "email_domain in @disposable_domains"
action: block
- name: velocity_check
condition: "card_country != ip_country"
action: review
- name: amount_threshold
condition: "amount > 100000" # $1000
action: review
Customer Portal
Portal Configuration
customer_portal:
features:
subscription_update:
enabled: true
products:
- product_starter
- product_growth
- product_enterprise
proration_behavior: create_prorations
subscription_cancel:
enabled: true
mode: at_period_end
cancellation_reason:
enabled: true
options:
- "Too expensive"
- "Missing features"
- "Switched to competitor"
- "No longer needed"
- "Other"
payment_method_update:
enabled: true
invoice_history:
enabled: true
branding:
colors:
primary: "#5469d4"
icon: "{{company_icon}}"
Reporting Automation
Scheduled Reports
reports:
- name: daily_revenue
schedule: "0 9 * * *"
metrics:
- gross_volume
- net_volume
- new_customers
- failed_payments
destination: slack_finance
- name: weekly_mrr
schedule: "0 9 * * 1"
metrics:
- mrr
- arr
- churn_rate
- expansion_revenue
destination: email_leadership
- name: monthly_reconciliation
schedule: "0 9 1 * *"
metrics:
- total_revenue
- fees
- refunds
- payouts
destination: accounting_system
API Examples
Common Operations
// Create Customer
const customer = await stripe.customers.create({
email: 'customer@example.com',
name: 'John Doe',
metadata: {
user_id: '12345'
}
});
// Create Subscription
const subscription = await stripe.subscriptions.create({
customer: customer.id,
items: [{ price: 'price_xxx' }],
trial_period_days: 14,
payment_behavior: 'default_incomplete',
expand: ['latest_invoice.payment_intent']
});
// Update Subscription
await stripe.subscriptions.update(subscription.id, {
items: [{
id: subscription.items.data[0].id,
price: 'price_new_xxx'
}],
proration_behavior: 'create_prorations'
});
// Issue Refund
const refund = await stripe.refunds.create({
payment_intent: 'pi_xxx',
amount: 1000 // Partial refund
});
Best Practices
Use Webhooks: Don't rely on redirect alone
Idempotency Keys: Prevent duplicate charges
Error Handling: Graceful failure recovery
PCI Compliance: Use Stripe Elements
Test Mode: Validate before production
Monitor Disputes: Respond promptly
Dunning Strategy: Recover failed payments
Revenue Recognition: Track MRR properlydon't have the plugin yet? install it then click "run inline in claude" again.