# Paddle MCP connector

The Paddle connector brings your products, prices, discounts and customer records into Claude, ChatGPT, Cursor and the Elaichi Agent, so each person can look them up and update them inside their own Paddle access, with every change logged.

Source: https://elaichi.ai/connectors/paddle/

## Facts

| | |
| --- | --- |
| Application | Paddle |
| Category | Subscription Platform |
| AI tools | 99 |
| Authentication | Connects with an API key |
| Bring your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. Connected tools are never listed one by one, however few there are. The endpoint advertises `search_tools` and `execute_tool` instead |

## What you can ask once Paddle is connected

- List every active discount and what it takes off
- Create an annual price for the Pro plan at 290 USD
- Update Acme Ltd's billing address to their new London office

## Connect Paddle in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Paddle.
2. Optionally set Share with, then press Connect.
3. Paste a Paddle API key. One person generates a token in Paddle and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Paddle tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Paddle MCP connector for Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Paddle MCP connector for ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Paddle MCP connector for Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Paddle to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Paddle tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Paddle through Elaichi

### Check a price before the invoice goes out

Finance. Ask what a customer is currently charged for a product and see the live price from Paddle, with currency and billing period, before you confirm anything with them.

### Set up a discount for one deal

Sales. Create a Paddle discount with the code, amount and expiry your prospect agreed to, then check it landed in the right discount group.

### Fix a customer's billing address

Support. When a customer emails a new address, update the one on file in Paddle from the conversation instead of opening another tab.

### Launch a new plan and its prices

Product. Create the product in Paddle, add monthly and annual prices, and confirm everything reads correctly before it goes live.

### Audit which promo codes are still active

Marketing. List every Paddle discount, see which are still running and what they take off, and tidy up the ones a campaign left behind.

### Keep customer business details current

Revenue Operations. Add or correct a customer's company name and tax ID in Paddle so invoices carry the right details the first time.

## Frequently asked questions

### How do I connect Paddle to Claude?

In Elaichi, choose Paddle and paste in a Paddle API key, which you create in your Paddle dashboard. There is no OAuth application to register and no client ID or secret to generate. Then in Claude go to Customize, then Connectors, then Add, and paste the endpoint https://api.elaichi.ai/mcp. Sign in with Elaichi and Paddle is available in your conversations.

### Does Paddle work with ChatGPT and Cursor as well as Claude?

Yes. Once Paddle is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent. You connect Paddle once and every client picks it up.

### What can an AI agent actually do with my Paddle data?

With Paddle connected, an agent can look up and update your products, prices, discounts and discount groups, and find or correct a customer's addresses and business details. You can ask it to create a new price for a plan, set up a promo code, or tell you what a customer is being charged. Short, concrete asks like 'list active discounts' work better than long paragraphs.

### Does connecting Paddle give the AI everything in my account?

No. Every call to Paddle runs inside the access of the person who signed in to Elaichi and the Paddle account they connected, so an agent can only reach what that person is allowed to see and do. An administrator can narrow that further in Elaichi, by team or by action, and Elaichi can never widen it beyond what Paddle itself allows.

### Can my team share one Paddle connection?

Yes. One person connects Paddle with an API key and shares the connection with a team in Elaichi, and nobody else ever sees or handles that key. Each teammate still signs in to Elaichi as themselves, so the audit log names who changed a price or created a discount in Paddle.

### Can I stop an agent from changing things in Paddle?

Yes. Restrictions in Elaichi work per action, so you can allow an agent to read Paddle products and prices while blocking it from creating or updating discounts. A restricted action is never shown to Claude, ChatGPT or any other client, so no prompt can reach it.

### What happens to a Paddle connection when someone leaves?

Offboarding a person in Elaichi ends their access to Paddle at once, across every client they used. A Paddle connection they shared keeps working for everyone else on the team. If you want Paddle gone entirely, disconnecting it once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client.

### Does the Paddle MCP connector work with Gemini, Codex, Claude Code or other MCP clients?

Yes. Paddle is reached over the same MCP endpoint every client uses, so anything that speaks MCP can call it — Gemini, Codex, Claude Code, Windsurf, Cline, Zed and OpenCode among them — alongside Claude, ChatGPT, Cursor, and the Elaichi Agent. The tools on offer and the access behind them are identical whichever client asks. Only the setup screen differs.

## All 99 Paddle tools

Every tool below is callable through https://api.elaichi.ai/mcp once Paddle is connected, subject to the toolbox it is in and the restrictions on the caller.

- **Create a Paddle discount group** (Create). Create a discount group in Paddle. Returns the new discount group entity including id, name, status, created_at, and updated_at. Required: name.
- **Get single Paddle discount group by ID** (Get). Get a Paddle discount group by its ID. Returns the discount group including id, name, status, created_at, and updated_at. Required: id.
- **List all Paddle discount groups** (List). List Paddle discount groups, newest first by default. Returns each group's id, name, status, created_at, and updated_at. Supports filtering by id and ordering via order_by.
- **Update a Paddle discount group by ID** (Update). Update a Paddle discount group by its ID. Returns a copy of the updated discount group entity including id, name, status, created_at, and updated_at. Required: id.
- **Create a Paddle discount** (Create). Create a new discount in Paddle. Returns the created discount object including id, status, code, amount, type, expires_at, times_used, and created_at/updated_at. Required: description, type, amount.
- **Get single Paddle discount by ID** (Get). Get a single Paddle discount by id. Returns the full discount object including id, status, description, code, type, amount, restrict_to, expires_at, times_used, and created_at/updated_at. Required: id.
- **List all Paddle discounts** (List). List Paddle discounts, newest first. Returns discount objects including id, status, description, code, type, amount, usage_limit, times_used, and created_at. Active discounts are returned by default; use the status filter to also include archived or expired ones.
- **Update a Paddle discount by ID** (Update). Update a Paddle discount by id. Returns the updated discount object including id, status, description, code, restrict_to, discount_group_id, times_used, and created_at/updated_at. Checkout recovery discounts are managed in the dashboard instead. Required: id.
- **Create a Paddle price** (Create). Create a price in Paddle for a product. Returns the new price entity including id, product_id, name, unit_price, billing_cycle, trial_period, quantity, status, and created_at/updated_at. Requires product_id and unit_price. If you omit quantity, Paddle sets a minimum of 1 and a maximum of 100. Required: description, product_id, unit_price.
- **Get single Paddle price by ID** (Get). Get a single Paddle price by id. Pass include=product to also return the price's related product entity. Returns: id, product_id, description, type, name, billing_cycle, trial_period, tax_mode, unit_price, unit_price_overrides, quantity, status, custom_data, import_meta, created_at, updated_at, product. Required: id.
- **List all Paddle prices** (List). List Paddle prices with pagination and filters. Returns prices: id, product_id, name, unit_price, billing_cycle, trial_period, quantity, status, created_at. Active prices are returned by default — use status to include archived. Up to 200 per page.
- **Update a Paddle price by ID** (Update). Update a Paddle price by id, changing its unit_price, country-specific unit_price_overrides, or billing_cycle. Returns the updated price: id, product_id, unit_price, unit_price_overrides, quantity, status, updated_at. Required: id.
- **Create a Paddle product** (Create). Create a product in Paddle. Returns the created product object including its id, name, tax_category, status, and created_at. Requires name and tax_category. Host image_url images on your own publicly accessible HTTPS server — Paddle does not upload images to a CDN. Required: name, tax_category.
- **Get single Paddle product by ID** (Get). Get a single Paddle product by id. Returns: id, name, description, type, tax_category, image_url, custom_data, status, import_meta, created_at, updated_at, prices. Pass include=prices to embed related price entities in the response. Required: id.
- **List all Paddle products** (List). List Paddle products, paginated. Returns product objects with id, name, tax_category, description, status, and created_at. Active products are returned by default; filter by status, tax_category, type, or id.
- **Update a Paddle product by ID** (Update). Update a Paddle product by id. Returns the updated product object including its id, name, tax_category, status, and updated_at. Only the fields included in the request body are changed. Required: id.
- **Create a Paddle customer address** (Create). Create a Paddle address for a customer. Returns the created address object including id, status, description, first_line, city, postal_code, region, country_code, customer_id, custom_data, created_at, updated_at, and import_meta. A postal_code is mandatory for some countries (e.g. US ZIP codes, UK postcodes) for tax and compliance purposes. Required: customer_id, country_code.
- **Get single Paddle customer address by ID** (Get). Get a single Paddle address for a customer by its id and related customer_id. Returns the address object including id, status, customer_id, description, first_line, second_line, city, postal_code, region, country_code, custom_data, created_at, updated_at, and import_meta. Required: id, customer_id.
- **List all Paddle customer addresses** (List). List Paddle addresses for a customer, paginated. Returns address objects including id, status, customer_id, description, first_line, city, postal_code, region, country_code, custom_data, created_at, updated_at, and import_meta. Only active addresses are returned by default; pass status to include archived ones. Required: customer_id.
- **Update a Paddle customer address by ID** (Update). Update a Paddle address for a customer using its id and related customer_id. Returns the updated address object including id, status, description, first_line, city, postal_code, region, country_code, custom_data, created_at, updated_at, and import_meta. Required: id, customer_id.
- **Create a Paddle customer auth token** (Create). Generate a temporary authentication token for a Paddle customer, for passing to Paddle.js when opening a checkout so the customer can work with saved payment methods. Returns: customer_auth_token, expires_at. Tokens are short-lived and shouldn't be cached; they are valid until expires_at. Required: customer_id.
- **Create a Paddle customer business** (Create). Create a new business for a Paddle customer. Returns the created business entity including id, status, name, company_number, tax_identifier, contacts, custom_data, and created_at/updated_at timestamps. Required: customer_id, name.
- **Get single Paddle customer business by ID** (Get). Get a single business for a Paddle customer by id. Returns the full business entity including id, status, name, company_number, tax_identifier, contacts, custom_data, and created_at/updated_at timestamps. Required: id, customer_id.
- **List all Paddle customer businesses** (List). List businesses for a Paddle customer, paginated and ordered newest first. Returns business records including id, status, name, company_number, tax_identifier, contacts, custom_data, and created_at/updated_at timestamps. Active businesses are returned by default. Required: customer_id.
- **Update a Paddle customer business by ID** (Update). Update a business for a Paddle customer using its id and the related customer_id. Returns the updated business entity including id, status, name, company_number, tax_identifier, contacts, custom_data, and created_at/updated_at timestamps. Required: id, customer_id.
- **List all Paddle customer credit balances** (List). List Paddle credit balances for each currency for a customer. Returns: customer_id, currency_code, balance. Response is not paginated; an empty list is returned when the customer has no credit balances. Required: customer_id.
- **Delete a Paddle customer payment method by ID** (Delete). Delete a saved payment method from a Paddle customer by id. Permanent — deleted methods can't be recovered and are no longer offered to the customer at checkout. Returns an empty 204 response on success. Payment methods tied to an active, trialing, paused, or past_due subscription must be replaced on the subscription first. Required: id, customer_id.
- **Get single Paddle customer payment method by ID** (Get). Get a single saved payment method for a Paddle customer by id. Returns: id, customer_id, address_id, type, card, paypal, underlying_details, south_korea_local_card, origin, saved_at, updated_at. Required: id, customer_id.
- **List all Paddle customer payment methods** (List). List payment methods a Paddle customer has saved at checkout. Returns each method's id, type, card details (cardholder_name, last4, expiry), origin, and saved_at. Returns an empty list when the customer has no saved payment methods. Required: customer_id.
- **Create a Paddle customer portal session** (Create). Create a customer portal session for a Paddle customer, generating authenticated links that let signed-in customers manage subscriptions, payment methods, and invoices without building custom billing screens. Returns: id, customer_id, urls, created_at. Sessions are temporary and shouldn't be cached. Required: customer_id.
- **Create a Paddle customer** (Create). Create a customer in Paddle. Returns the new customer entity including id, status, email, name, custom_data, locale, and timestamps. Required: email.
- **Get single Paddle customer by ID** (Get). Get a Paddle customer by its id. Returns the full customer entity including id, status, email, name, marketing_consent, and locale. Required: id.
- **List all Paddle customers** (List). List Paddle customers, paginated and newest first. Returns customers with id, email, name, status, locale, and custom_data. By default only active customers are returned; use status to include archived ones.
- **Update a Paddle customer by ID** (Update). Update a Paddle customer by its id and receive a copy of the updated customer entity with id, email, name, locale, and timestamps. Only fields you send are changed. Required: id.
- **Create a Paddle subscription charge** (Create). Create a one-time charge on a Paddle subscription to bill non-recurring items. Returns the updated subscription entity — including id, status, customer_id, next_billed_at, and items — since one-time charges aren't held against the subscription. Immediate charges may take longer while a payment attempt is processed. Required: subscription_id, effective_from, items.
- **List all Paddle subscription history** (List). List the history of changes made to a Paddle subscription, ordered newest first. Returns entries with id, subscription_id, occurred_at, source, actor, reason, and action-specific detail. Paddle began recording subscription history on June 29, 2026; subscriptions from before then only get inferred subscription_created and subscription_canceled entries. Required: subscription_id.
- **Get subscription update payment method transaction by ID** (Get). Get a transaction to update payment method for a Paddle subscription. Returns the transaction with id, status, subscription_id, items, currency_code, and a checkout url to pass to Paddle.js. Only for subscriptions where collection_mode is automatic. Required: id.
- **Paddle subscriptions activate** (Activate). Activate a trialing Paddle subscription by id. Returns the updated subscription entity with status active and recalculated billing dates — including id, status, billing_cycle, next_billed_at, and items. Triggers an immediate charge, so responses may take longer than usual while the payment is processed. Required: subscription_id.
- **Paddle subscriptions cancel** (Cancel). Cancel a Paddle subscription by id. By default the subscription cancels at the end of the billing period; set effective_from to immediately to cancel right away (the default for paused subscriptions). Returns the updated subscription entity including id, status, canceled_at, scheduled_change, and items. Canceled subscriptions can't be reinstated. Required: subscription_id.
- **Get single Paddle subscription by ID** (Get). Get a single Paddle subscription by id. Returns the full subscription entity including id, status, customer_id, billing_cycle, items with price and product details, and management_urls. Required: id.
- **List all Paddle subscriptions** (List). List Paddle subscriptions, paginated. Returns subscription entities including id, status, customer_id, collection_mode, billing_cycle, and items. Filter by status, customer_id, address_id, price_id, collection_mode, scheduled_change_action, next_billed_at, order_by, and id.
- **Paddle subscriptions pause** (Pause). Pause a Paddle subscription by id. By default the pause takes effect at the end of the billing period; set effective_from to immediately to pause right away. Include resume_at to schedule an automatic resume, or omit it for an open-ended pause until you send a resume request. Returns the updated subscription entity including id, status, next_billed_at, scheduled_change, and items. Required: subscription_id.
- **Paddle subscriptions resume** (Resume). Resume a paused Paddle subscription by id, or set or change the resume date for a subscription scheduled to pause. Returns the updated subscription object: id, status, next_billed_at, scheduled_change, and items. May trigger an immediate charge, so responses can take longer than usual. Required: subscription_id.
- **Update a Paddle subscription by ID** (Update). Update a Paddle subscription by id — change its items, next billing date, and other settings without replacing it. Returns the updated subscription object: id, status, items, billing_cycle, and next_billed_at. Include proration_billing_mode when changing items or the next billing date; omitted items are removed. Required: id.
- **Paddle subscriptions bulk update** (Update). Preview an update to a Paddle subscription by id without applying changes — typically to check proration before committing. Returns the previewed subscription plus immediate_transaction, next_transaction, recurring_transaction_details, and update_summary. Accepts the same body as update. Required: subscription_id.
- **Get single Paddle transaction invoice by ID** (Get). Get the invoice PDF for a Paddle transaction by id. Returns: url. Invoice PDFs aren't available for zero-value transactions. Required: id.
- **Create a Paddle transaction** (Create). Create a new Paddle transaction from a list of priced items, either manually-collected (invoiced) or automatically-collected (checkout). Returns the created transaction with: id, status, items, details with totals, collection_mode, currency_code, and billing_period. Required: items.
- **Get single Paddle transaction by ID** (Get). Get a single Paddle transaction by id, including its line items, calculated totals, payment attempts, and checkout URL. Returns: id, status, customer_id, address_id, business_id, custom_data, currency_code, origin, subscription_id, invoice_id, invoice_number, collection_mode, discount_id, billing_details, billing_period, items, details, payments, checkout, created_at, updated_at, billed_at,…. Required: id.
- **List all Paddle transactions** (List). List Paddle transactions as a paginated collection, filterable by status, customer, subscription, collection mode, origin, invoice number, and date ranges. Returns transaction objects with: id, status, items, details with totals, collection_mode, currency_code, and created_at.
- **Update a Paddle transaction by ID** (Update). Update a draft or ready Paddle transaction by id — replace its items, apply a discount, or mark a manually-collected transaction as billed or a billed one as canceled. Returns: id, status, customer_id, address_id, business_id, custom_data, currency_code, origin, subscription_id, invoice_id, invoice_number, collection_mode, discount_id, billing_details, billing_period, items, details, payments,…. Required: id.
- ...and 49 more tools. Call `tools/list` via the MCP endpoint, or see the full catalog via the API, for the complete set.
