> ## Documentation Index
> Fetch the complete documentation index at: https://docs.minidesk.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Stripe

> Let the AI answer billing questions from the customer's own plan, invoices and payments.

Connect your own Stripe account and the AI can answer "when does my plan
renew?" or "did my last payment go through?" from the customer's real billing.
Members see the same customer in the panel beside each conversation.

This is your Stripe account, the one your customers pay you through. It is not
the one miniDesk bills you from.

> [!NOTE]
>
> The AI reads Stripe only for a customer whose identity is proven: a visitor
> your site signed in, the sender of an email or a contact form, or someone who
> confirmed their email with a code. See
> [how the AI knows who it is talking to](https://docs.minidesk.ai/ai/connectors.md#how-the-ai-knows-who-it-is-talking-to).

## Why a restricted key

miniDesk only reads, so it takes a **restricted key** with read access to five
resources, and nothing else. It refuses a secret key (`sk_live_…`): a secret key
can refund, cancel and delete, and nothing miniDesk does needs that.

## Create the restricted key

**1. Open API keys in Stripe**

In your Stripe dashboard, open **Developers**, then **API keys**, and choose
**Create restricted key**. The **Open Stripe API keys** button in the
miniDesk dialog takes you there.

> [!WARNING]
>
> Screenshot to come: the **API keys** page in Stripe with the **Create
> restricted key** button.

**2. Say who the key is for**

Under **How will you be using this key?**, choose **Providing this key to a
third-party application**, then **Continue**. miniDesk is the third-party
application.

![Stripe's Create a restricted key dialog, asking how the key will be used, with Providing this key to a third-party application as the second choice](https://mintcdn.com/minidesk/WWYQ4Xa_C8Uto7Ms/images/ai/stripe-key-usage.png?fit=max\&auto=format\&n=WWYQ4Xa_C8Uto7Ms\&q=85\&s=2921a9e324110dc86a00be7c67adbd1d)

Do not choose **Authorising an AI agent**. That one is for an agent that
acts in your Stripe account on its own, through Stripe's API, CLI or MCP.
miniDesk does not: it only reads the customer the conversation is about.

**3. Name it miniDesk**

Enter `miniDesk` as the name and `https://minidesk.ai` as the URL. Stripe
shows the name in your list of keys, so you know later what the key is for.

> [!WARNING]
>
> Screenshot to come: the name and URL step, filled in with `miniDesk` and
> `https://minidesk.ai`.

**4. Give it read access to five resources**

Tick **Customize permissions for this key**. Set these to **Read**:

* **Customers**
* **Subscriptions**
* **Invoices**
* **Charges**
* **Products**

Leave everything else on **None**. Products is there so the AI can name the
plan a customer is on, instead of an id like `prod_P7x…`.

> [!WARNING]
>
> Screenshot to come: the permissions list with the five resources on
> **Read** and the rest on **None**.

**5. Create it and copy the key**

Choose **Create restricted key** and enter the code Stripe sends you by email
or SMS. Copy the key. It starts with `rk_live_` (or `rk_test_` in test mode)
and Stripe shows it **only once**.

> [!WARNING]
>
> Screenshot to come: the new key, shown once, with the key itself blurred.

## Connect it in miniDesk

1. Go to **Channels & integrations** and choose **Connect** on the Stripe card.
   You need to be an owner of the workspace.
2. Paste the key under **Restricted key** and choose **Connect Stripe**.

![miniDesk's Stripe dialog: six numbered steps to get the restricted key, an Open Stripe API keys button, and the Restricted key field](https://mintcdn.com/minidesk/WWYQ4Xa_C8Uto7Ms/images/ai/stripe-dialog.png?fit=max\&auto=format\&n=WWYQ4Xa_C8Uto7Ms\&q=85\&s=63c711a06a3fd4fe4005a2505a402811)

The same steps, in the Stripe dialog on Channels & integrations.

miniDesk checks the key can read customers before saving it, and stores it
encrypted. Afterwards the dialog only shows the key's first and last characters.

A test key (`rk_test_…`) sees only test customers, and a live key only live
ones. The dialog says **Test mode** when the key is a test key.

## What the AI reads

When a proven customer asks about billing, the AI reads, for that customer
only:

* their subscriptions: plan, status, price, and when each renews or ends;
* their recent invoices;
* their recent payments, and whether one was refunded.

miniDesk finds the customer by the `stripe_customer_id` in the identity token
when you send one, and by the token's email otherwise. When two Stripe customers
share that email, the AI reads neither and says a member can check. It never
picks one.

## In the conversation panel

When Stripe is connected, the panel beside each conversation shows, under
**Stripe**:

* the customer, and since when;
* whether they have an unpaid invoice;
* their subscriptions, and when each renews or ends;
* their last five invoices, each linking to Stripe's hosted invoice;
* their last five payments, and whether one was refunded;
* **Open in Stripe**, to the customer in your Stripe dashboard.

The panel matches by the customer's email. When several Stripe customers share
it, all of them are shown and the panel says so.

## Turn it off or disconnect

On **Channels & integrations**, open Stripe:

* Switch off **Let the AI read Stripe** to stop the AI's lookups and keep the
  panel.
* Choose **Disconnect** to remove the key everywhere, the panel included. Then
  roll or delete the key in Stripe as well.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.