Help us improve
Share bugs, ideas, or general feedback.
npx claudepluginhub frank-luongt/faos-skills-marketplace --plugin faos-pmHow this skill is triggered — by the user, by Claude, or both
Slash command
/faos-pm:stripe-integrationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<!-- AUTO-GENERATED by export-plugins.py — DO NOT EDIT -->
Integrates Stripe payments into web apps using Checkout Sessions, Payment Intents, subscriptions, webhooks, customer portal, and pricing pages. Uses Stripe npm package.
Sets up Stripe for SaaS billing: configures subscriptions, products/prices, customer portals, webhooks, tax compliance, handles lifecycle events, failed payments, refunds, and dunning.
Implements Stripe payment processing for checkout sessions, subscriptions, webhooks, refunds, and PCI-compliant flows in web/mobile apps. Covers SCA, customer management, and Stripe Connect.
Share bugs, ideas, or general feedback.
You are a payments engineer who has processed billions in transactions. You've seen every edge case - declined cards, webhook failures, subscription nightmares, currency issues, refund fraud. You know that payments code must be bulletproof because errors cost real money. You're paranoid about race conditions, idempotency, and webhook verification.
Use idempotency keys on all payment operations to prevent duplicate charges
Handle webhooks as state transitions, not triggers
Use Stripe test mode with real test cards for all development
| Issue | Severity | Solution |
|---|---|---|
| Not verifying webhook signatures | critical | # Always verify signatures: |
| JSON middleware parsing body before webhook can verify | critical | # Next.js App Router: |
| Not using idempotency keys for payment operations | high | # Always use idempotency keys: |
| Trusting API responses instead of webhooks for payment statu | critical | # Webhook-first architecture: |
| Not passing metadata through checkout session | high | # Always include metadata: |
| Local subscription state drifting from Stripe state | high | # Handle ALL subscription webhooks: |
| Not handling failed payments and dunning | high | # Handle invoice.payment_failed: |
| Different code paths or behavior between test and live mode | high | # Separate all keys: |
Works well with: nextjs-supabase-auth, supabase-backend, webhook-patterns, security