Stripe MCP Server
A comprehensive Model Context Protocol (MCP) server that provides seamless integration with Stripe's payment platform. This server enables AI assistants and applications to interact with Stripe's full suite of payment processing, subscription management, customer management, and billing capabilities through a unified interface. Whether you're managing customers, processing payments, handling subscriptions, or generating invoices, this MCP server provides all the tools you need to build powerful payment workflows.
Overview
The Stripe MCP server acts as a bridge between your AI applications and Stripe's robust payment infrastructure. It exposes Stripe's most commonly used features through a set of well-defined tools and resources, allowing you to manage the complete payment lifecycle without writing custom API integrations. From creating customers and processing one-time payments to managing recurring subscriptions and handling refunds, this server provides comprehensive coverage of Stripe's capabilities.
Features
- Complete Customer Management: Create, update, delete, and list customers with full support for metadata and custom attributes
- Payment Processing: Handle one-time payments through both modern Payment Intents API and legacy Charges API
- Subscription Management: Full lifecycle management for recurring subscriptions including creation, updates, cancellation, and resumption
- Invoice Operations: Create, finalize, pay, and void invoices with flexible filtering and status management
- Product Catalog: Manage your product catalog and pricing structures with support for one-time and recurring prices
- Refund Processing: Handle full and partial refunds with detailed reason tracking
- Balance Monitoring: Track account balance and transaction history
- Pagination Support: Efficiently browse through large datasets with built-in pagination
Tools
Customer Management
list_customers
List all Stripe customers with optional filtering and pagination.
- email (string, optional): Filter results by customer email address
- limit (number, optional): Number of customers to return, between 1-100 (default: 10)
- starting_after (string, optional): Customer ID to use as a pagination cursor
create_customer
Create a new customer in your Stripe account.
- name (string, optional): Full name of the customer
- email (string, optional): Customer's email address
- phone (string, optional): Customer's phone number
- description (string, optional): Arbitrary description of the customer
- metadata (object, optional): Key-value pairs for storing additional custom information
update_customer
Update an existing customer's information.
- customer_id (string, required): The unique identifier of the customer to update
- name (string, optional): Updated customer name
- email (string, optional): Updated email address
- phone (string, optional): Updated phone number
- description (string, optional): Updated description
- metadata (object, optional): Updated metadata key-value pairs
delete_customer
Permanently delete a customer from your Stripe account.
- customer_id (string, required): The unique identifier of the customer to delete
Payment Intent Management
list_payment_intents
Retrieve a list of payment intents with optional filtering.
- limit (number, optional): Number of payment intents to return, between 1-100 (default: 10)
- customer (string, optional): Filter by customer ID
- starting_after (string, optional): Payment intent ID for pagination
create_payment_intent
Create a new payment intent for processing a payment.
- amount (number, required): Amount to charge in cents (e.g., 1000 = $10.00)
- currency (string, required): Three-letter ISO currency code (e.g., "usd", "eur")
- customer (string, optional): Customer ID to associate with this payment
- payment_method (string, optional): Payment method ID to attach
- description (string, optional): Description of the payment
- confirm (boolean, optional): Automatically confirm the payment intent upon creation
- metadata (object, optional): Custom metadata key-value pairs
update_payment_intent
Modify an existing payment intent before it's confirmed.
- payment_intent_id (string, required): The payment intent ID to update
- amount (number, optional): Updated amount in cents
- currency (string, optional): Updated currency code
- customer (string, optional): Updated customer ID
- description (string, optional): Updated description
- metadata (object, optional): Updated metadata
confirm_payment_intent
Confirm a payment intent to attempt payment processing.
- payment_intent_id (string, required): The payment intent ID to confirm
- payment_method (string, optional): Payment method ID to use for confirmation
cancel_payment_intent
Cancel a payment intent that hasn't been completed.
- payment_intent_id (string, required): The payment intent ID to cancel
capture_payment_intent
Capture a payment intent that was created with manual capture.
- payment_intent_id (string, required): The payment intent ID to capture
- amount_to_capture (number, optional): Amount to capture in cents (defaults to full authorized amount)
Charge Management
list_charges
List charges with optional filtering by customer or payment intent.
- limit (number, optional): Number of charges to return, between 1-100 (default: 10)
- customer (string, optional): Filter by customer ID
- payment_intent (string, optional): Filter by payment intent ID
- starting_after (string, optional): Charge ID for pagination
create_charge
Create a direct charge using the legacy Charges API. Note: Payment Intents API is recommended for new integrations.
- amount (number, required): Amount to charge in cents
- currency (string, required): Three-letter ISO currency code
- source (string, optional): Payment source token or card ID
- customer (string, optional): Customer ID
- description (string, optional): Charge description
- metadata (object, optional): Custom metadata
Subscription Management
list_subscriptions
Retrieve a list of subscriptions with filtering options.
- limit (number, optional): Number of subscriptions to return, between 1-100 (default: 10)
- customer (string, optional): Filter by customer ID
- price (string, optional): Filter by price ID
- status (string, optional): Filter by status: "active", "past_due", "unpaid", "canceled", "incomplete", "incomplete_expired", "trialing", or "all"
- starting_after (string, optional): Subscription ID for pagination
create_subscription
Create a new subscription for a customer.
- customer (string, required): Customer ID to subscribe
- items (array, required): List of subscription items, each containing:
- price (string, required): Price ID
- quantity (number, optional): Quantity (default: 1)
- trial_period_days (number, optional): Number of days for trial period
- metadata (object, optional): Custom metadata
update_subscription
Update an existing subscription's items or settings.
- subscription_id (string, required): The subscription ID to update
- items (array, optional): Updated subscription items with:
- id (string, optional): Existing subscription item ID
- price (string, required): Price ID
- quantity (number, optional): Quantity
- proration_behavior (string, optional): How to handle prorations: "create_prorations", "none", or "always_invoice"
- metadata (object, optional): Updated metadata
cancel_subscription
Cancel an active subscription.
- subscription_id (string, required): The subscription ID to cancel
- prorate (boolean, optional): Whether to prorate the cancellation
- invoice_now (boolean, optional): Whether to create an invoice immediately
resume_subscription
Resume a previously paused subscription.
- subscription_id (string, required): The subscription ID to resume
Invoice Management
list_invoices
Retrieve a list of invoices with filtering options.
- limit (number, optional): Number of invoices to return, between 1-100 (default: 10)
- customer (string, optional): Filter by customer ID
- subscription (string, optional): Filter by subscription ID
- status (string, optional): Filter by status: "draft", "open", "paid", "uncollectible", or "void"
- starting_after (string, optional): Invoice ID for pagination
create_invoice
Create a new invoice for a customer.
- customer (string, required): Customer ID
- description (string, optional): Invoice description
- auto_advance (boolean, optional): Whether to auto-finalize after 1 hour
- metadata (object, optional): Custom metadata
finalize_invoice
Finalize a draft invoice, making it ready for payment.
- invoice_id (string, required): The invoice ID to finalize
pay_invoice
Attempt to pay an open invoice.
- invoice_id (string, required): The invoice ID to pay
void_invoice
Void an invoice, marking it as uncollectible.
- invoice_id (string, required): The invoice ID to void
Product Management
list_products
List all products in your catalog.
- limit (number, optional): Number of products to return, between 1-100 (default: 10)
- active (boolean, optional): Filter by active status
- starting_after (string, optional): Product ID for pagination
create_product
Create a new product in your catalog.
- name (string, required): Product name
- description (string, optional): Product description
- active (boolean, optional): Whether the product is available for purchase
- metadata (object, optional): Custom metadata
update_product
Update an existing product's details.
- product_id (string, required): The product ID to update
- name (string, optional): Updated product name
- description (string, optional): Updated description
- active (boolean, optional): Updated active status
- metadata (object, optional): Updated metadata
delete_product
Delete a product from your catalog.
- product_id (string, required): The product ID to delete
Price Management
list_prices
List all prices with optional filtering.
- limit (number, optional): Number of prices to return, between 1-100 (default: 10)
- product (string, optional): Filter by product ID
- active (boolean, optional): Filter by active status
- starting_after (string, optional): Price ID for pagination
create_price
Create a new price for a product.
- product (string, required): Product ID this price belongs to
- unit_amount (number, required): Price in cents
- currency (string, required): Three-letter ISO currency code
- recurring (object, optional): Recurring billing settings with:
- interval (string, required): Billing interval: "day", "week", "month", or "year"
- interval_count (number, optional): Number of intervals between billings
- metadata (object, optional): Custom metadata
update_price
Update a price's metadata or active status.
- price_id (string, required): The price ID to update
- active (boolean, optional): Whether the price is active
- metadata (object, optional): Updated metadata
Refund Management
list_refunds
List all refunds with optional filtering.
- limit (number, optional): Number of refunds to return, between 1-100 (default: 10)
- charge (string, optional): Filter by charge ID
- payment_intent (string, optional): Filter by payment intent ID
- starting_after (string, optional): Refund ID for pagination
create_refund
Create a refund for a charge or payment intent.
- charge (string, optional): Charge ID to refund
- payment_intent (string, optional): Payment intent ID to refund
- amount (number, optional): Amount to refund in cents (defaults to full amount)
- reason (string, optional): Refund reason: "duplicate", "fraudulent", or "requested_by_customer"
- metadata (object, optional): Custom metadata
Balance and Transactions
get_balance
Retrieve your current Stripe account balance across all currencies.
list_balance_transactions
List balance transactions that affect your account balance.
- limit (number, optional): Number of transactions to return, between 1-100 (default: 10)
- type (string, optional): Filter by transaction type (e.g., "charge", "refund", "payout")
- starting_after (string, optional): Transaction ID for pagination
Resource Templates
The server provides direct access to specific Stripe objects through resource URIs:
customer
Access detailed information about a specific customer.
- URI Pattern:
stripe://customers/{customer_id}
payment_intent
Access detailed information about a specific payment intent.
- URI Pattern:
stripe://payment-intents/{payment_intent_id}
charge
Access detailed information about a specific charge.
- URI Pattern:
stripe://charges/{charge_id}
subscription
Access detailed information about a specific subscription.
- URI Pattern:
stripe://subscriptions/{subscription_id}
invoice
Access detailed information about a specific invoice.
- URI Pattern:
stripe://invoices/{invoice_id}
product
Access detailed information about a specific product.
- URI Pattern:
stripe://products/{product_id}
price
Access detailed information about a specific price.
- URI Pattern:
stripe://prices/{price_id}
refund
Access detailed information about a specific refund.
- URI Pattern:
stripe://refunds/{refund_id}
Use Cases
This MCP server is ideal for a wide range of payment-related workflows:
- Customer Relationship Management: Maintain comprehensive customer records with full contact information and custom metadata
- E-commerce Transactions: Process one-time payments for goods and services with support for multiple currencies
- Subscription Services: Manage recurring billing for SaaS products, memberships, and subscription boxes
- Invoicing: Generate and manage invoices for B2B transactions or usage-based billing
- Financial Operations: Track account balances, monitor transactions, and process refunds
- Product Catalog Management: Maintain your product inventory and pricing structures
- Payment Analytics: Access payment and subscription data for reporting and analysis
The server provides all the essential functionality needed to build complete payment workflows while maintaining the flexibility to handle complex business requirements through metadata and custom configurations.