# How to connect Dodo Payments to AI agents?

Connect Dodo Payments to Sequel with a read-only API key and ask about revenue, subscriptions, failed payments, refunds, disputes and payouts in natural language.

Connect **Dodo Payments** to Sequel and ask about your revenue, subscriptions, customers, refunds, disputes and payouts in plain English, from the Sequel app or any AI tool wired up to the [MCP server](/docs/install). Dodo connects with a single API key, and Sequel only ever reads.

## What you'll need

- A **Dodo Payments business** you can access the dashboard for.
- A **Dodo Payments API key** created with write access turned off.

<Callout type="tip" title="Create a read-only key">
When you add a key in Dodo, leave **Enable write access** unchecked. The key can then fetch payments, subscriptions, customers and products but cannot create or modify anything. The Sequel connector ships only read tools, so a read-only key enforces at Dodo's end what Sequel already guarantees. You can revoke the key in Dodo at any time.
</Callout>

## Connect it

<Steps>
<Step title="Open a new connection">
In the Sequel dashboard, go to **Connections → New connection** and choose **Dodo Payments**.
</Step>

<Step title="Create an API key in Dodo">
In the Dodo Payments dashboard, go to **Developer → API Keys → Add API Key**. Give it a name and leave **Enable write access** unchecked.
</Step>

<Step title="Paste the key into Sequel">
Copy the key (Dodo shows it once) and paste it into the **API key** field on Sequel's Dodo Payments connector.
</Step>

<Step title="Choose the environment">
Leave **Environment** on `live` for your real account. Choose `test` if the key came from Dodo's test mode.
</Step>

<Step title="Test and save">
Sequel verifies the key against the Dodo API and names the connection after your brand. A green check means it's live.
</Step>
</Steps>

<Callout type="info" title="Test mode and live mode are separate">
Dodo's test mode runs at `test.dodopayments.com` with its own keys and data. A test key will not authenticate against live, and vice versa. To query both, create two connections with the environment set on each.
</Callout>

## What you can query

Sequel exposes Dodo Payments as 10 read-only tools:

- **Payments**: every charge attempt, including failed ones, with status, amount, currency, customer, product, subscription, payment method and card details. Filter by status, date range, customer, product, subscription, brand or currency.
- **Payment detail**: one payment in full: the product cart, settlement amount and currency, tax, discount, and the refunds and disputes attached to it, plus the error code when it failed.
- **Subscriptions**: status (`active`, `on_hold`, `paused`, `cancelled`, `failed`, `expired`, `pending`), recurring amount, billing interval, next and previous billing dates, trial days, and whether the subscription is set to cancel at the next billing date.
- **Customers**: the customer list, filterable by email, name or created date.
- **Products**: the catalogue with price, recurring or one-time, tax category and entitlements.
- **Refunds** and **Disputes**: refund status, partial vs full and reason; chargebacks by stage and status.
- **Payouts**: each payout to your bank with fee, refunds, chargebacks and tax already netted out.
- **Discounts**: codes, type, times used, limits and expiry.
- **Balance ledger**: every payment, fee, refund, dispute, payout and adjustment as a signed entry with before and after balances, filterable by event type and currency.

<Callout type="info" title="Amounts are in the currency's smallest unit">
Dodo returns every monetary value as an integer in the currency's smallest unit: cents for USD and EUR, yen for JPY. Sequel's agent knows this and divides before reporting, and it never sums across currencies without saying so. Ledger entries also carry a USD-equivalent amount for cross-currency totals.
</Callout>

## Try it

- "What was our revenue last month, by currency?"
- "How many subscriptions are on hold, and which customers are they?"
- "Show payments that failed this week with their error codes."
- "How much has been paid out this year, net of fees?"

## Join it with other sources

Dodo is most useful next to the rest of your stack. With Search Console and GA4 also connected, ask:

> "Which organic search landing pages brought in the customers who paid in Dodo last quarter?"

Sequel's [revenue playbooks](/skills) already know about Dodo, so a question like that follows a tested procedure rather than an improvised join.

## Troubleshooting

| Symptom | Likely fix |
| --- | --- |
| Authentication fails (401) | Re-check the key for typos, and check the environment: a key created in test mode only works with **Environment** set to `test`. |
| A subscription question returns nothing | Check the status filter. Dodo has no `trialing` status; new subscriptions start as `pending`, and a failed renewal shows as `on_hold`. |
| Amounts look 100x too large | They are in the smallest currency unit. Divide by 100 for USD, EUR and most currencies; JPY and a few others have no decimals. |
| Rate limit (429) | Dodo allows 40 requests per second and 240 per minute on the default tier. Sequel surfaces the reset time; wait and retry. |
| Data looks empty | Confirm there's data in the period and environment you're asking about; a key is bound to one business and one environment. |

## Limitations

Dodo's list endpoints do not filter on metadata. If you store attribution (UTM or referrer values) in payment metadata, Sequel pulls the window and filters the metadata column in the workbench rather than at the API. Usage-based billing meters and license keys are not exposed by this connector yet.

## Related

- [Connecting your first data source](/docs/connecting-your-first-data-source)
- [Chatting with your data](/docs/chatting-with-your-data)
- [Browse all integrations](/docs/integrations)
