---
title: "Stripe MCP in Slack: ask an AI teammate about customers and payments | Chickpea"
description: "Use Stripe's MCP server from Slack. Give a channel an AI teammate connected to Stripe, then ask it to find a payment, read an invoice, or refund. Open source."
canonical: https://chickpea.co/connectors/stripe
keyword: "Stripe MCP in Slack"
verified: 2026-09-17
---

# A Stripe teammate in your Slack channel, running on Stripe's MCP server.

> Chickpea gives a channel a named AI teammate that holds its own Stripe connection. It calls Stripe's MCP server at [mcp.stripe.com](https://docs.stripe.com/mcp) with a restricted key you create in the Dashboard, so there is no client to configure and no secret key in play. Ask it in Slack who paid what, whether an invoice is still open, or to refund a charge, and it answers in the thread.

Facts checked against the sources on September 17, 2026. The HTML page is at https://chickpea.co/connectors/stripe; every connector is listed at https://chickpea.co/connectors; the site index for agents is at https://chickpea.co/llms.txt.

**Stripe** (Stripe, Inc., https://stripe.com): Search Stripe data and manage customers, invoices, payments, and subscriptions. Category: Business and support. Lane: Vendor MCP server. Sign in: API key.

**Chickpea**: an open source Slack app that gives a workspace named AI teammates, each with its own handle, instructions, memory, connected accounts, schedules, and model, deployed to your own Cloudflare account or a Node host.

## What people ask it
The teammate in these examples is @support, published to #billing.

### Look up a customer or a payment
- @support who is ap@northwind.co in Stripe, and what have they paid us this year
- @support what happened to the charge on Harbor Lane yesterday, it shows as failed

Reads never need confirmation, and a long answer comes back as a table in the thread. Stripe's server covers retrieving and listing customers, charges, and payment intents, so the teammate answers from the account itself rather than from a copy.

### Check a subscription or an invoice
- @support is Northwind still on the annual plan, and when does it renew
- @support show Harbor Lane's open invoices and say which one is past due

Listing and retrieving subscriptions, invoices, and invoice line items are all in the method list Stripe publishes for its MCP server. What the teammate can see is what the key you pasted has read permission for, and nothing else.

### Refund a charge
- @support refund Harbor Lane's October invoice, they cancelled on the 2nd and we billed on the 3rd
- @support refund 40 dollars of the Northwind charge, they were billed for a seat they gave back

A refund is money, so it asks first and waits for a yes. Two gates sit under that. Chickpea refuses any MCP tool whose name is not an unambiguous read verb unless your own message names the action, and Stripe asks a human to approve certain writes, refunds among them, at a link you open in the Dashboard.

### Update a customer record
- @support set the billing email on Northwind to ap@northwind.co
- @support put plan_review = 2026-10 in the metadata on Harbor Lane

An email, a description, or a metadata key is a small reversible write, so it applies at once and the reply says what changed. Your message still has to name the change: a thread that mentions it is not enough on its own.

### On a schedule
- @support every weekday at 9am Pacific, post yesterday's failed payments here
- @support every Monday at 8am Eastern, list the subscriptions that renew this week

A schedule saves on the spot. It needs an explicit time zone, runs under the Stripe connection of the person who asked, and is paused rather than run if that connection goes away. Ask for something the API lists, such as failed charges or renewals. Stripe puts metrics like MRR behind an analytics tool it marks private preview.

### Example conversations

**Find a customer**
> **Dana:** @support who is ap@northwind.co in Stripe, and what have they paid us this year?
> **@support:** That is Northwind Supply, cus_QeR4, a customer since March 2024. Four payments this year, 9,600 USD in total, all on the same card ending 4242.
>
> | Date | Invoice | Amount | Status |
> |---|---|---|---|
> | Sep 1 | INV-2291 | $2,400 | Paid |
> | Jun 1 | INV-2104 | $2,400 | Paid |
> | Mar 1 | INV-1955 | $2,400 | Paid |
> | Jan 4 | INV-1802 | $2,400 | Paid |

**Check a subscription**
> **Marco:** @support is Northwind still on the annual plan, and when does it renew?
> **@support:** Yes. sub_1Nx8, Team Annual, 12 seats at 200 USD a seat, active. It renews on Jan 4 for 2,400 USD, and the card on file expires in November, so that one needs a nudge. No open invoices and nothing past due.

**Refund a charge**
> **Priya:** @support Harbor Lane cancelled on Oct 2 and we billed them on Oct 3. Can we refund that invoice?
> **@support:** Harbor Lane cancelled on Oct 2 at 11:14. Invoice INV-2317 was charged the next morning for 890 USD, the full month. A refund is money, so I am asking first, and Stripe will want an approval of its own after you say yes.
> Buttons: Refund $890 · Refund a prorated amount · Leave it

**Every weekday**
> **Sofia:** @support every weekday at 9am Pacific, post yesterday’s failed payments here with the customer name.
> **@support:** Saved. Weekdays at 9:00 AM Pacific I’ll list the charges that failed the day before, with the customer and the reason, in #billing. First run is Thu Sep 18. It runs on your Stripe connection, so say "pause the failed payments digest" to stop it.

## Connect Stripe
1. In Stripe, open [Developers → API keys](https://dashboard.stripe.com/apikeys) and choose **Create restricted key**. Use a restricted key, not a full secret key. Stripe says the same: a restricted key is the recommended type for a key you hand to an AI agent.
2. Set its permissions. Each Stripe resource gets **None**, **Read**, or **Write**, and **Write** includes **Read**. A key with read on customers, charges, and invoices, and write on refunds, can do that and nothing more.
3. In Chickpea Admin, open the teammate, then **Connections**, find **Stripe**, and choose **Connect**. Or ask in Slack, `@support connect Stripe`, and follow the link it posts.
4. Choose who uses it. **Team** is one shared key that everyone who can use the teammate acts through. **Personal** means each member pastes their own. Then paste the `rk_live_…` key into the write-only **Credential** field, which is stored once on your deployment and never returned to the browser.
5. Ask something. `@support what did Northwind pay us last month` is a good first question, because it reads and cannot change anything.

A connection belongs to one teammate. Giving a second teammate Stripe means a second key with its own permissions, so the growth teammate never inherits what the support teammate can reach.

## What the teammate is handed with Stripe
There is no built-in Chickpea skill for Stripe, and none is needed. The tools arrive from Stripe's MCP server: Chickpea connects before it saves anything, records what the server answered with, and exposes only those tools. Stripe documents them as tools for searching the API, reading and writing through it, searching the documentation, and retrieving account information.

Stripe lists the tools and the API methods they cover: https://docs.stripe.com/mcp

## Beside Stripe
- **Zendesk:** The billing ticket and the charge behind it, read in one ask
- **Intercom:** A customer asking about an invoice, answered with the invoice
- **HubSpot:** What the deal says, next to what the customer is paying
- **Gmail:** A dunning email in the inbox, matched to the payment that failed
- All 37 connectors: https://chickpea.co/connectors

## Questions people ask

### Does Stripe have an MCP server?
Yes, at mcp.stripe.com. Stripe documents it as a server that lets AI agents interact with the Stripe API and search Stripe's knowledge base, with setup pages for Cursor, Claude Code, VS Code, ChatGPT, and the Codex CLI. Chickpea connects to that same server, so a teammate in Slack uses it without any of those clients installed.

### Can I use AI agents with Stripe?
Stripe documents the MCP server for exactly that, and recommends a restricted key as the key type to give an agent. A Chickpea teammate is one of those agents, living in a Slack channel instead of an editor, with a stored connection, saved instructions, schedules, and every action visible in the thread where someone asked for it.

### Can Claude Code be used with Stripe MCP?
Yes. Stripe documents the command, and either OAuth or a restricted key as a bearer header. That puts the server in one person's terminal, where only that person sees the answers. A teammate puts the same server in a channel, where the whole billing team can ask and everyone reads the reply. Teams often run both.

### Should I use a restricted key or a secret key?
A restricted key. A secret key can do anything in the account. A restricted key starts with rk_live_ or rk_test_ and does only what you allow, resource by resource, as None, Read, or Write. Stripe recommends restricted keys over unrestricted secret keys, especially for a key given to an AI agent, and so does the Chickpea connector catalog.

### Can it issue a refund?
Yes, if the key allows it. Creating a refund is in the method list Stripe publishes for the server. Because money is consequential, the teammate proposes the refund and waits for a yes in the thread, and Stripe adds its own approval step for writes of that kind, which expires after 24 hours if nobody approves it. Credit notes are different: Stripe lists them for the server but publishes no method to create one, so ask for a refund.

### Does it use Stripe's MCP server or the API?
The MCP server. Stripe is a vendor MCP lane: the deployment connects to mcp.stripe.com over streamable HTTP and sends your restricted key as a bearer token. Chickpea writes no Stripe endpoints of its own, and the connection cannot reach any other address.

### Can it see card numbers?
No. Stripe's Card object returns the brand, the last four digits, the expiry month and year, the cardholder name, and a fingerprint. A full card number is not one of its fields, so it is not something the server can hand back. Past that, the connector sees what the key's permissions allow and no more: a key with no permission on a resource gets an invalid request error instead of data.

### Where does the restricted key live?
On your deployment, in a write-only Credential field outside the teammate record. It never enters the model's context, the tool arguments the model writes, or Slack. The model picks a connection by id and the key goes in at the last step on the way out. Disconnect the account and the stored secret is removed, after any schedule that depended on it is paused.

### Does everyone act as the same Stripe account?
That is your choice when you connect. A team account is one restricted key that everyone with access to the teammate acts through, and Stripe records the actions against that key. A personal account belongs to one member inside one teammate, so your key is used only for your requests.

### Do I still need Stripe's Slack app?
Keep it if you want notifications. Stripe Workflows for Slack sends automated messages to a channel when events happen in Stripe, with your own message templates and a link into the Dashboard. It sends; it does not answer questions. A Chickpea teammate is the other direction: it hears nothing from Stripe on its own, and it reads and acts when someone asks. Both can be installed.

## Sources
- [Chickpea docs: connector catalog, the Stripe preset, its lane and its restricted key note](https://docs.chickpea.co/reference/connector-catalog/)
- [Chickpea docs: connections, team and personal accounts, the binding as a ceiling](https://docs.chickpea.co/agents/connections/)
- [Chickpea docs: authority and confirmation, including the read-verb gate](https://docs.chickpea.co/security/authority-and-confirmation/)
- [Chickpea docs: connect a service, the write-only credential field and the Slack link](https://docs.chickpea.co/agents/connect-a-service/)
- [Chickpea docs: schedules, time zones and what a paused schedule does](https://docs.chickpea.co/agents/schedules/)
- [Chickpea source: the Stripe preset (server URL, transport, bearer key)](https://github.com/pejmanjohn/chickpea/blob/main/src/config/presets.ts)
- [Chickpea source: an MCP connection exposes approved tools that are still discovered](https://github.com/pejmanjohn/chickpea/blob/main/src/config/types.ts)
- [Stripe docs: the MCP server, its tools, its clients, and human confirmation](https://docs.stripe.com/mcp)
- [Stripe docs: restricted API keys and why an agent should get one](https://docs.stripe.com/keys/restricted-api-keys)
- [Stripe docs: Stripe Workflows for Slack, what the notifications app does](https://docs.stripe.com/use-stripe-apps/stripe-workflows-slack)
- [Stripe API reference: the Card object and the fields it returns](https://docs.stripe.com/api/cards/object)
- [Chickpea source on GitHub](https://github.com/pejmanjohn/chickpea)

## More
- [Ahrefs MCP in Slack](https://chickpea.co/connectors/ahrefs.md)
- [Airtable MCP in Slack](https://chickpea.co/connectors/airtable.md)
- [Asana AI agent in Slack](https://chickpea.co/connectors/asana.md)
- [Jira and Confluence MCP in Slack](https://chickpea.co/connectors/atlassian.md)
- [BugSnag MCP in Slack](https://chickpea.co/connectors/bugsnag.md)
- [Cloudflare MCP in Slack](https://chickpea.co/connectors/cloudflare-api.md)
- [Exa MCP in Slack](https://chickpea.co/connectors/exa.md)
- [Firecrawl MCP in Slack](https://chickpea.co/connectors/firecrawl.md)
- [Fireflies MCP in Slack](https://chickpea.co/connectors/fireflies.md)
- [Gamma MCP in Slack](https://chickpea.co/connectors/gamma.md)
- [Gmail AI agent in Slack](https://chickpea.co/connectors/gmail.md)
- [Gong AI agent in Slack](https://chickpea.co/connectors/gong-managed.md)
- [Google Ads AI agent in Slack](https://chickpea.co/connectors/google-ads.md)
- [Google Analytics AI agent in Slack](https://chickpea.co/connectors/google-analytics.md)
- [Google Calendar AI agent in Slack](https://chickpea.co/connectors/google-calendar.md)
- [Google Docs AI agent in Slack](https://chickpea.co/connectors/google-docs.md)
- [Google Drive AI agent in Slack](https://chickpea.co/connectors/google-drive.md)
- [Google Search Console AI agent in Slack](https://chickpea.co/connectors/google-search-console.md)
- [Google Sheets AI agent in Slack](https://chickpea.co/connectors/google-sheets.md)
- [Google Slides AI agent in Slack](https://chickpea.co/connectors/google-slides.md)
- [Granola MCP in Slack](https://chickpea.co/connectors/granola.md)
- [HubSpot AI agent in Slack](https://chickpea.co/connectors/hubspot-managed.md)
- [Hugging Face MCP in Slack](https://chickpea.co/connectors/huggingface.md)
- [incident.io MCP in Slack](https://chickpea.co/connectors/incident-io.md)
- [Intercom MCP in Slack](https://chickpea.co/connectors/intercom.md)
- [Linear MCP in Slack](https://chickpea.co/connectors/linear.md)
- [LunarCrush MCP in Slack](https://chickpea.co/connectors/lunarcrush.md)
- [Meta Ads MCP in Slack](https://chickpea.co/connectors/meta-ads.md)
- [Monday.com MCP in Slack](https://chickpea.co/connectors/monday.md)
- [Neon MCP in Slack](https://chickpea.co/connectors/neon.md)
- [Notion Slack integration with an AI agent](https://chickpea.co/connectors/notion-managed.md)
- [PostHog MCP in Slack](https://chickpea.co/connectors/posthog.md)
- [Sentry MCP in Slack](https://chickpea.co/connectors/sentry.md)
- [Supabase MCP in Slack](https://chickpea.co/connectors/supabase.md)
- [YouTube AI agent in Slack](https://chickpea.co/connectors/youtube-managed.md)
- [Zendesk AI agent in Slack](https://chickpea.co/connectors/zendesk.md)
- [All connectors](https://chickpea.co/connectors.md)

## Try Chickpea
- Site: https://chickpea.co/
- Deploy to Cloudflare: https://deploy.workers.cloudflare.com/?url=https://github.com/pejmanjohn/chickpea
- Source, Apache 2.0: https://github.com/pejmanjohn/chickpea
- Docs: https://docs.chickpea.co
