What it does
The Stripe MCP Server gives Claude direct access to the Stripe API, enabling your AI assistant to query payment data, automate billing operations, and help you debug payment flows — all without leaving your terminal. It is the official integration maintained by Stripe's own engineering team.
Common workflows include pulling revenue summaries across date ranges, creating one-off charges, applying refunds on disputed transactions, looking up customer subscription states, generating invoices, and answering billing questions by pulling live data from your Stripe account.
- Create and retrieve charges, payment intents, and payment methods
- Manage customers — create, update, search by email or metadata
- List and modify subscriptions, plans, and prices
- Create and finalize invoices; retrieve invoice line items
- Issue full and partial refunds with reason codes
- Query balance transactions and payout histories
- Look up disputes and retrieve evidence submission status
- Search across objects using Stripe's query language
How to connect
Generate an API key in your Stripe Dashboard under Developers → API keys. Use a restricted key in production — scope it to only the resources Claude needs to read or write.
export STRIPE_API_KEY="sk_live_your_key_here" claude mcp add stripe -- npx -y @stripe/mcp
sk_test_ key while you explore. Switch to a restricted live key (sk_live_) only after you're confident in the operations Claude will run.Available tools
create_payment_intent— create a PaymentIntent with amount, currency, and metadataretrieve_charge— fetch charge details by ID including outcome and risk datacreate_refund— issue a refund against a charge or PaymentIntentlist_customers— search customers by email, name, or metadata fieldsretrieve_customer— get full customer profile including payment methodslist_subscriptions— filter active, trialing, or canceled subscriptionscreate_invoice— generate a draft invoice and optionally finalize itlist_balance_transactions— query balance history with date and type filterssearch_charges— use Stripe Search syntax across charges
Example usage
Ask Claude to investigate a disputed charge and prepare a refund summary for your team:
# User prompt
Find all charges from customer john@example.com
this month, show the total billed, flag any
disputes, and refund the most recent failed charge.
list_customers({ email: "john@example.com" }) → returns cus_ABC123 search_charges({ customer: "cus_ABC123", created: { gte: month_start } }) → returns 4 charges, 1 disputed create_refund({ charge: "ch_failed_xyz", reason: "fraudulent" }) → refund issued: re_ABC123
Restricted keys: In the Stripe Dashboard, create a restricted API key and grant only the permissions Claude needs (e.g., read charges, write refunds). This limits blast radius if the key is ever exposed.