General
PromptBeginner5 minmarkdown
Untitled Skill
193
Automate Stripe payment processing, subscription management, invoicing, and financial reporting
Loading actions...
Main instructions and any bundled files for this skill.
Comprehensive skill for automating Stripe payment processing and subscription management.
STRIPE PAYMENT FLOW:
┌─────────────────┐
│ Customer │
│ Payment Intent │
└────────┬────────┘
▼
┌─────────────────┐
│ Checkout │
│ - Card Input │
│ - Validation │
└────────┬────────┘
▼
┌─────────────────┐
│ Processing │
│ - Auth │
│ - Capture │
└────────┬────────┘
▼
┌─────────────────┐
│ Confirmation │
│ - Receipt │
│ - Webhook │
└─────────────────┘
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_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_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_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_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
// 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: '[email protected]',
subscription_data: {
trial_period_days: 14,
metadata: {
plan_tier: 'growth'
}
},
allow_promotion_codes: true,
});
// 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'
}
}
}
);
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_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
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:
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}}"
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
// Create Customer
const customer = await stripe.customers.create({
email: '[email protected]',
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
});
---
name: Stripe Payments
description: Automate Stripe payment processing, subscription management, invoicing, and financial reporting
version: 1.0.0
author: Claude Office Skills
category: payments
tags:
- stripe
- payments
- subscriptions
- billing
- fintech
department: finance
models:
- claude-3-opus
- claude-3-sonnet
- gpt-4
mcp:
server: payments-mcp
tools:
- stripe_charges
- stripe_customers
- stripe_subscriptions
- stripe_invoices
capabilities:
- Payment processing
- Subscription lifecycle
- Invoice management
- Revenue analytics
input:
- Payment details
- Customer data
- Subscription plans
- Invoice configurations
output:
- Payment confirmations
- Subscription status
- Financial reports
- Webhook events
languages:
- en
related_skills:
- subscription-management
- invoice-automation
- saas-metrics
---
# 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
```yaml
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
```yaml
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
```yaml
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
```yaml
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
```yaml
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
```javascript
// 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: '[email protected]',
subscription_data: {
trial_period_days: 14,
metadata: {
plan_tier: 'growth'
}
},
allow_promotion_codes: true,
});
```
### Payment Elements
```javascript
// 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
```yaml
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
```yaml
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
```yaml
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
```yaml
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
```javascript
// Create Customer
const customer = await stripe.customers.create({
email: '[email protected]',
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
1. **Use Webhooks**: Don't rely on redirect alone
2. **Idempotency Keys**: Prevent duplicate charges
3. **Error Handling**: Graceful failure recovery
4. **PCI Compliance**: Use Stripe Elements
5. **Test Mode**: Validate before production
6. **Monitor Disputes**: Respond promptly
7. **Dunning Strategy**: Recover failed payments
8. **Revenue Recognition**: Track MRR properly
TypeScript and ESLint rules that MUST be followed when creating, modifying, or reviewing any file under apps/frontend/, including .ts, .tsx, .js, and .jsx files. Also apply when discussing frontend li...
risks