stripe
Stripe Billing Operations
Execute billing and payment operations on Stripe: customers, products, invoices, payment links, subscriptions, refunds, and disputes.
MCP is optional. This skill works with MCP (auto), Stripe CLI, or Dashboard. See BACKENDS.md for execution options.
Three Hard Rules
- Read before write — Before creating customer/product/price, check if it already exists to avoid duplicates
- Money operations require confirmation — Refunds, subscription changes, dispute updates must be confirmed before execution
- When in doubt, search — If unsure about object ID or parameters, search first, don't guess
Security Rules
| Operation Type | Rule |
|---|---|
| Read (list, get, search) | Execute directly |
| Create (customer, product, price, invoice) | Check for duplicates first |
| Money (refund, subscription cancel/update, dispute) | Display details → Await confirmation → Execute |
| Mode | Test mode by default. Live requires explicit "live mode" + double confirmation |
Dangerous Actions (Require Confirmation)
Before executing these operations:
- Display — Show object ID and key fields
- Explain impact — Amount, timing, consequences
- Await confirmation — Wait for explicit "confirm"/"yes"/"proceed"
- Execute and receipt — Return result + object ID + status
| Action | Risk |
|---|---|
create_refund |
Money leaves account |
cancel_subscription |
Revenue loss |
update_subscription |
Contract change |
update_dispute |
Legal implications |
Example confirmation prompt:
About to execute refund:
- PaymentIntent: pi_xxx
- Amount: $50.00 (full amount)
- Reason: requested_by_customer
Reply "confirm" to proceed, or "cancel" to abort.
Common Workflows
Create Customer
1. Search/list to check if customer exists (by email)
2. If not exists, create_customer(name, email, metadata)
3. Return cus_xxx + key info
Create Product and Price
1. List products to check if already exists
2. create_product(name, description)
3. create_price(product=prod_xxx, unit_amount=cents, currency)
4. Return prod_xxx + price_xxx
Create and Send Invoice
1. Confirm customer ID (list_customers if unknown)
2. create_invoice(customer=cus_xxx, collection_method, days_until_due)
3. create_invoice_item(invoice=inv_xxx, price=price_xxx, quantity)
4. finalize_invoice(invoice=inv_xxx)
5. Return inv_xxx + hosted_invoice_url
Create Payment Link
1. Confirm price ID (list_prices if unknown)
2. create_payment_link(line_items=[{price, quantity}])
3. Return payment link URL
Refund (Dangerous)
1. list_payment_intents to find target payment
2. Display pi_xxx + amount + customer info
3. Request user confirmation
4. create_refund(payment_intent=pi_xxx, amount?, reason)
5. Return re_xxx + status
Cancel Subscription (Dangerous)
1. list_subscriptions(customer=cus_xxx) to find target
2. Display sub_xxx + status + next billing date
3. Ask: cancel immediately or at period end?
4. After confirmation, cancel_subscription(subscription=sub_xxx)
5. Return cancellation result
Default Configuration
- Currency: Use user-specified; else use existing object's currency; else ask
- Amount: Accept decimals, auto-convert to smallest unit (e.g., $19.99 → 1999)
- Output: Object type + ID + key fields + next steps
Limitations
These operations are NOT available via standard tools:
- ❌ Create PaymentIntent / charge directly
- ❌ Create subscription (only list/update/cancel)
- ❌ Create Promotion Code (only coupon)
- ❌ Delete objects
For these, use Dashboard or API directly.
File-based Pipeline
When integrating into multi-step workflows:
runs/<workflow>/active/<run_id>/
├── proposal.md # Requirements / objective
├── context.json # Known IDs (customer, invoice, etc.)
├── tasks.md # Checklist + approval gate
├── evidence/stripe-actions.md # Operations to execute (money ops written here first)
├── evidence/receipt.md # Results + object IDs
└── logs/events.jsonl # Optional tool call summary (no sensitive data)
Error Handling
| Situation | Action |
|---|---|
| Object doesn't exist | Search to find correct ID |
| Parameter error | Check documentation for correct format |
| Insufficient permissions | Check API key scope |
| Network error | Retry or check connection |
Related Files
- BACKENDS.md — Execution options (MCP/CLI/Dashboard)
- SETUP.md — MCP configuration (optional)
- tools.md — Detailed tool parameters
More from heyvhuang/ship-faster
mcp-supabase
Execute database operations via Supabase MCP (query/write/migration/logs/type generation). Triggers: query/statistics/export/insert/update/delete/fix/backfill/migrate/logs/alerts/type generation. Does not trigger for: pure architecture discussion or code planning. Write operations require confirmation; UPDATE/DELETE without WHERE is refused.
76tool-openclaw
Help users install, configure, and operate OpenClaw (gateway, channels, nodes, plugins). Use when answering OpenClaw setup/debug questions; use the local docs snapshot bundled with this skill as the source of truth. Triggers: openclaw, clawdbot, clawd, clawdhub, gateway, onboard, channels login, whatsapp, telegram, discord, mattermost, pairing, nodes, sandboxing, tailscale.
62review-doc-consistency
Documentation consistency reviewer that checks alignment between code implementation and documentation. Use when user requests reviewing documentation vs code consistency, checking if README/docs are outdated, verifying API documentation accuracy. Applicable for (1) reviewing README vs implementation consistency (2) checking if docs/ directory content is outdated (3) verifying API/config documentation accuracy (4) generating documentation consistency reports. Trigger words include doc review, documentation consistency, check outdated docs, verify docs.
53review-clean-code
Analyze code quality based on "Clean Code" principles. Identify naming, function size, duplication, over-engineering, and magic number issues with severity ratings and refactoring suggestions. Use when the user requests code quality checks, refactoring advice, Clean Code analysis, code smell detection, or mentions terms like code review, code quality, refactoring check.
50supabase
Database operations for Supabase: query/write/migration/logs/type generation. Triggers: query/statistics/export/insert/update/delete/fix/backfill/migrate/logs/alerts/type generation. Does not trigger for: pure architecture discussion or code planning. Write operations require confirmation; UPDATE/DELETE without WHERE is refused. MCP is optional — works with CLI/Console too.
50tool-better-auth
Use when implementing authentication with Better Auth in a TypeScript/Next.js app (session strategy, providers, cookies, CSRF, redirects, middleware, and security best practices).
49