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

> ## Agent Instructions
> Money is always a decimal string at the currency's precision (for example "29.00"), paired with an ISO 4217 currency field. Never use minor units.
> Build against the sandbox first: base URL https://sandbox-api.bachs.io with sk_sandbox_ keys. Production is https://api.bachs.io with sk_live_ keys; going live is a key swap.
> Treat webhooks (for example collection.succeeded) as the source of truth for fulfilment, never client-side events or redirects.
> Subscriptions are created by completing a checkout for a recurring product. There is no direct create-subscription endpoint.
> IDs carry resource prefixes (cust_, prod_, sub_, chk_, inv_, ref_) and timestamps are ISO 8601 UTC.

# Connect Bachs to an AI app

> Connect your Bachs account to Claude, ChatGPT, Cursor or another AI app, and ask about your payments, payouts, disputes, compliance and API calls in plain words. Read-only, and you can disconnect it at any time.

The Bachs MCP server lets an AI app read your Bachs account. Ask "Which payments failed this week?" or "Why can't I get paid out?", and the app looks up the answer in your account.

It works with any AI app that supports remote MCP servers (sometimes called connectors), such as Claude, ChatGPT, Cursor and VS Code. It only reads. It cannot take payments, refund, pay out, or change anything in your account.

## Connector URLs

| Connector | URL | Sign-in |
| - | - | - |
| Live account | `https://mcp.bachs.io/mcp` | Your Bachs login |
| Bachs docs only | `https://mcp.bachs.io/docs` | None |

The account connector reads your live Bachs account.

The **Developer Portal > Connected apps** tab in the dashboard shows the connector URL, ready to copy.

## Connect an app

**1. Add the connector**

Add the connector URL to your AI app as a custom connector or remote MCP server.

> [tab] Claude
>
> In Claude, open **Settings > Connectors**, choose **Add custom connector**, and paste the URL.

> [tab] Claude Code
>
> ```bash Terminal theme={"dark"}
> claude mcp add --transport http bachs https://mcp.bachs.io/mcp
> ```

> [tab] Cursor
>
> Add the server to `.cursor/mcp.json`:
>
> ```json .cursor/mcp.json theme={"dark"}
> {
>   "mcpServers": {
>     "bachs": { "url": "https://mcp.bachs.io/mcp" }
>   }
> }
> ```

> [tab] VS Code
>
> Add the server to `.vscode/mcp.json`:
>
> ```json .vscode/mcp.json theme={"dark"}
> {
>   "servers": {
>     "bachs": { "type": "http", "url": "https://mcp.bachs.io/mcp" }
>   }
> }
> ```

> [tab] Other apps
>
> Follow your app's instructions for adding a remote MCP server, and use the URL from the table above.

**2. Sign in to Bachs**

The app opens the Bachs login. There is no API key to copy or paste.

**3. Allow access**

The Allow page lists what the app will be able to read, in four groups: payments and customers, money movement, account and compliance, and developer. Check it, then choose **Allow**.

**4. Ask a question**

For example: "What's my balance, and what settles tomorrow?"

## What you can ask about

| Area | What the app can read | For example |
| - | - | - |
| Find anything | One search across customers, payments and subscriptions, by name, email, reference or ID | "Find Ada Obi's payment." |
| Payments | Payments filtered by status, customer, currency, amount and date; one payment with its fees, refunds and status history; checkout sessions; payment links | "Which payments failed this week, and why?" |
| Customers and billing | Customers, their saved cards, subscriptions, invoices, products and product groups | "Show my open invoices." |
| Money and payouts | Balances per currency; what settles on which day; balance movements; the payout schedule; payouts and why one failed; payout accounts, fees and currencies; currency conversions; virtual accounts | "Why did my last payout fail?" |
| Disputes and risk | Disputes with their deadlines; dispute alerts; your dispute win rate and amount at risk; refunds; your payment health and the reasons for it | "Do I have disputes due soon?" |
| Account and compliance | Your account, payment methods and capabilities; what is blocking your account and what you still need to submit; onboarding progress | "Why can't I get paid out?" |
| Platforms | Transfers to connected accounts and platform fees | "Show my latest transfers." |
| Developers | Webhook endpoints, every event sent and whether it arrived; your own API calls, with the error for any that failed | "Why did my API call fail this morning?" |
| Bachs docs | Guides and the API reference | "How do I create a checkout session?" |

## Dashboard links

When an answer is about a specific record, the app can link you to that record in the dashboard, so you can act on it there. Ask for the link, for example "Link me to the dispute I need to respond to first."

These records have a dashboard page:

* Payments
* Customers
* Subscriptions
* Invoices
* Products
* Payment links
* Disputes
* Webhook endpoints
* API request logs

Payouts, refunds and transfers have no page of their own in the dashboard yet, so answers about them come without a link.

The dashboard remembers whether it is in live or sandbox mode, and a link cannot change that. Links point to your live account, so if one shows "not found", switch the dashboard out of sandbox mode and open the link again.

> [!NOTE]
>
> A general question such as "What can you link me to?" doesn't read any records, so the app answers from the docs instead. Ask about a payment, a dispute or another record to get dashboard links.

## What the app sees

* **Read-only.** Every call only reads. The access the app gets cannot create, change or delete anything.
* **Customer details are shown.** The app sees customer names, emails and phone numbers, so it can find the right payment. The Allow page tells you this before you connect.
* **Card and bank numbers are hidden.** Card, bank, wallet and mobile money numbers show only their last four digits.
* **Secrets are never shown.** This includes webhook signing secrets and API keys.

## Disconnect an app

Open **Developer Portal > Connected apps** in the dashboard and disconnect the app. Its access stops at once. You can also disconnect it from the AI app, but disconnecting in the dashboard is what removes its access to Bachs.

## Limits

* **Reconnect for new permissions.** An app keeps the permissions it was given when you connected it. When Bachs adds a new permission, an app connected before that gets an error for it until you disconnect it and connect it again.
* **Customer search only finds customers who have paid.** A customer you created through the API, who has no successful payment yet, does not show up in search.
* **No totals over a period yet.** "How much did I make this month?" means reading every payment for the month, which is slow on a busy account. Ask about specific payments, or use the dashboard for totals.

## Related

* [Use tested AI prompts](https://docs.bachs.io/build/ai/prompts.md) and [Build with AI](https://docs.bachs.io/build/ai/skills.md), for building a Bachs integration with an AI coding assistant.
* [Scopes](https://docs.bachs.io/authentication.md#scopes), the permissions a connection is given.


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