Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the Paddle Billing in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Paddle Billing, the merchant of record for software sales: products, prices and discounts, customers with addresses and businesses, subscriptions with previews, pause and resume, transactions and PDF invoices, refunds and credits, CSV reports, revenue and MRR metrics, events and webhook notifications. Live or sandbox; cancelling and one-time charges install switched off.
Try asking
Example prompts for Paddle Billing
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Paddle Billing, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
Paddle Billing
Paddle Billing, the merchant of record for software sales: products, prices and discounts, customers with addresses and businesses, subscriptions with previews, pause and resume, transactions and PDF invoices, refunds and credits, CSV reports, revenue and MRR metrics, events and webhook notifications. Live or sandbox; cancelling and one-time charges install switched off.
Setup
Setting up takes about 2 minutes. You need a Paddle Billing account, live or sandbox, and the right to create API keys in it.
- In Paddle open Developer tools, Authentication, API keys and create a key.
- Give the key the permissions the tools need: read for products, prices, discounts, customers, addresses, businesses, subscriptions, transactions, adjustments, reports, notifications and events, and write only for the entities the AI should change. A call on an entity the key has no permission for answers 403.
- Paste the key into
PADDLE_API_KEY, without quotes or aBearerprefix. Live keys start withpdl_live_apikey_, sandbox keys withpdl_sdbx_apikey_. - Set
PADDLE_API_URLtohttps://api.paddle.comfor the live account orhttps://sandbox-api.paddle.comfor a sandbox account, without a trailing slash. A key only works on the host of its own environment. - Install the connector and run
paddle_list_event_types: it needs no ids and confirms the key.
The connector sends the key as a bearer token and pins API version 1 with the Paddle-Version header. It covers Paddle Billing only, not Paddle Classic.
What it reads: the catalog, that is products with their prices, prices with billing cycle, trial period, country overrides and quantity limits, and discounts with code, type, usage limit, times used and expiry; customers (search by email or text) with their addresses, businesses (company name, company number, VAT number, invoice contacts) and credit balances per currency; subscriptions with status, items, billing period, next billing date and any scheduled pause, cancellation or resume, optionally with a preview of the next charge; transactions (checkouts, renewals, invoices) with totals, tax breakdown, payments with error codes and invoice number, filtered by customer, subscription, status, invoice number or billed or created date; adjustments (refunds, credits, chargebacks) with their approval status; earlier reports; daily net revenue, MRR and active subscribers as shown on the Paddle dashboard; events from the last 90 days; notification destinations, the webhook and email notifications sent and every delivery attempt with the HTTP status and body your endpoint returned.
What it writes: creates and updates products, prices, discounts, customers, addresses and businesses (archive them with status: archived; nothing is deleted in Paddle); updates subscriptions (plan or quantity changes with a proration_billing_mode, discount, billing date, address, collection mode), pauses and resumes them and activates a trialing subscription, which collects the first payment at once; creates and updates transactions, either a checkout for the customer to pay (its checkout.url) or an invoice with collection_mode: manual and status: billed; refunds or credits a transaction with paddle_create_adjustment (refunds start as pending_approval until Paddle has reviewed them); creates customer portal links, requests CSV reports and replays notifications. A scheduled pause or cancellation is removed with paddle_update_subscription and scheduled_change: null.
Preview first: paddle_preview_subscription_update, paddle_preview_transaction and paddle_preview_prices calculate charges, tax and totals without saving anything. Before a plan change the AI runs the preview, shows you the immediate charge and waits for your yes. On the live host, billed transactions, subscription updates, activations and refunds move real money.
Switched off at install: paddle_cancel_subscription (an immediate cancellation is final) and paddle_create_subscription_charge (bills a one-time charge on the saved payment method). A workspace admin turns them on deliberately.
Data formats: every answer has data and meta.request_id. Ids carry a prefix: pro_ product, pri_ price, dsc_ discount, ctm_ customer, add_ address, biz_ business, sub_ subscription, txn_ transaction, adj_ adjustment, rep_ report, ntf_ notification. Amounts are strings in the lowest currency unit: "1999" in USD is 19.99, and JPY has no decimals. The totals of a transaction are in details.totals (subtotal, discount, tax, total, grand_total), per item in details.line_items. Dates are RFC 3339 in UTC. Filters with several values are comma-separated.
Files and reports: paddle_get_transaction_invoice and paddle_get_adjustment_credit_note return a temporary PDF link that expires after about an hour. Reports run in the background: paddle_create_report, then paddle_get_report until the status is ready, then paddle_get_report_csv for a CSV link that expires after a few minutes. Report types are transactions, transaction line items, adjustments, adjustment line items, discounts, products and prices, balance, payout reconciliation, checkouts and subscriptions.
Paging: list tools return up to per_page items (50 by default, 200 at most). While meta.pagination.has_more is true, the AI takes the after value from the meta.pagination.next URL and passes it as after.
Limits: Paddle allows 240 requests per minute per IP address and answers 429 above that.
Common errors: errors come as error.type, error.code and error.detail, and error.errors lists the invalid fields. 401 means a wrong key, or a key of the other environment (a sandbox key on the live host or the reverse). 403 forbidden means the key lacks the permission for that entity: edit the key in Paddle and add it. 404 entity_not_found means a wrong id or an id from the other environment.
The connector deletes nothing, does not create or change notification destinations and does not work with Paddle Classic accounts.
Prerequisites: PADDLE_API_KEY, PADDLE_API_URL
Install the connector locally
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Open http://localhost:3000/connectors/store, pick Paddle Billing and paste in the env vars listed under Prerequisites.
Available tools
| Tool | What it does |
|---|---|
paddle_list_products | List products in the catalog with name, tax category, type, status and custom data |
paddle_get_product | Get one product by id (pro_...) with its name, description, tax category, image URL, status and custom data; include prices to list its… |
paddle_create_product | Create a catalog product (what you sell) |
paddle_update_product | Update a product: name, description, tax category, image, custom data, or archive it with status archived |
paddle_list_prices | List prices with their product id, unit price (amount in the lowest currency unit), billing cycle, trial period, quantity limits and status |
paddle_get_price | Get one price by id (pri_...): product, description, unit price and overrides per country, billing cycle, trial period, tax mode and… |
paddle_create_price | Create a price for a product: amount and currency, optional billing cycle (subscription) and trial, country overrides and quantity limits |
paddle_update_price | Update a price: description, name, amount, billing cycle, trial, overrides, quantity limits, custom data, or archive it |
paddle_list_discounts | List discounts with code, type (flat, flat_per_seat, percentage), amount, recurring settings, usage limit, times used, expiry and status |
paddle_get_discount | Get one discount by id (dsc_...): code, type, amount, currency, whether it recurs and for how many intervals, usage limit, times used… |
paddle_create_discount | Create a discount: percentage or flat amount, optional checkout code, recurring behaviour, usage limit, product or price restrictions and… |
paddle_update_discount | Update a discount: amount, code, recurring settings, limits, restrictions, expiry, custom data, or archive it with status archived |
paddle_list_customers | List customers with name, email, locale, marketing consent and status |
paddle_get_customer | Get one customer by id (ctm_...): name, email, locale, marketing consent, status, custom data and timestamps |
paddle_create_customer | Create a customer by email (unique per account) with optional name, locale and custom data |
paddle_update_customer | Update a customer: email, name, locale, custom data, or archive it with status archived |
paddle_list_customer_addresses | List the addresses saved for a customer (add_... ids): country, postal code, region, city and lines |
paddle_create_customer_address | Add an address to a customer |
paddle_update_customer_address | Update a customer address: lines, city, postal code, region, country, custom data, or archive it |
paddle_list_customer_businesses | List the businesses saved for a customer (biz_... ids): company name, company number, tax identifier (VAT number) and contacts, used for… |
paddle_create_customer_business | Add a business to a customer for B2B billing: name, company number, VAT or tax id and invoice contacts |
paddle_update_customer_business | Update a customer business: name, company number, tax identifier, contacts, custom data, or archive it |
paddle_list_customer_credit_balances | Credit balances of a customer per currency: available, reserved and used credit created by adjustments (credits) on their subscriptions |
paddle_create_customer_portal_session | Create authenticated links to the Paddle customer portal for a customer, where they can update payment methods, see invoices and cancel |
paddle_list_subscriptions | List subscriptions with status, customer, address, items (price and quantity), currency, billing period, next billing date and any… |
paddle_get_subscription | Get one subscription by id (sub_...): status, customer, items, discount, billing cycle and current period, next billing date, scheduled… |
paddle_preview_subscription_update | Preview what an update to a subscription would charge or credit, without changing it: immediate transaction, next transaction and the… |
paddle_update_subscription | Update a subscription: change items or quantities (upgrade, downgrade, add-ons) with a proration mode, apply a discount, change billing… |
paddle_pause_subscription | Pause a subscription at the end of the billing period (default) or immediately, optionally with a date to resume automatically |
paddle_resume_subscription | Resume a paused subscription now (effective_from immediately) or at a given date-time, or change the date of a scheduled resume |
paddle_cancel_subscription | Cancel a subscription at the end of the billing period (default, can be undone by removing the scheduled change) or immediately (final) |
paddle_activate_subscription | End the trial of a trialing subscription now and start billing it: the first payment is collected immediately |
paddle_create_subscription_charge | Bill a one-time charge on a subscription (e.g. extra seats or a setup fee), now or with the next renewal |
paddle_list_transactions | List transactions (checkouts, renewals, invoices) with status, customer, subscription, items, totals in the lowest currency unit, invoice… |
paddle_get_transaction | Get one transaction by id (txn_...): status, items, totals and tax breakdown (details.totals, amounts in the lowest currency unit)… |
paddle_create_transaction | Create a transaction: a draft or ready checkout for a customer to pay (returns checkout.url), or an invoice for manual collection (status… |
paddle_update_transaction | Update a draft or ready transaction: items, customer, address, business, currency, discount, billing details, or set status billed or… |
paddle_preview_transaction | Preview a transaction without creating it: line items, tax, discounts and totals for given prices, customer or location |
paddle_get_transaction_invoice | Get a temporary link to the PDF invoice of a billed or completed transaction |
paddle_preview_prices | Localized price preview for a list of prices: subtotal, tax, discount and total per item in the customer's currency and country, as on a… |
paddle_list_adjustments | List adjustments (refunds, credits, chargebacks) with action, status (pending_approval, approved, rejected, reversed), transaction… |
paddle_create_adjustment | Refund or credit a billed or completed transaction, fully or for some items |
paddle_get_adjustment_credit_note | Get a temporary link to the PDF credit note of an approved adjustment |
paddle_list_reports | List reports you requested with type, status (pending, ready, failed, expired), filters, row count and expiry |
paddle_create_report | Request a CSV report: transactions, transaction_line_items, adjustments, adjustment_line_items, discounts, products_prices, balance… |
paddle_get_report | Get one report by id (rep_...): type, status, filters, number of rows and when it expires |
paddle_get_report_csv | Get a temporary download link for a ready report as CSV |
paddle_get_revenue_metrics | Net revenue per day for a date range in the account balance currency, as shown in the Paddle dashboard (amounts in the lowest currency unit) |
paddle_get_mrr_metrics | Monthly recurring revenue per day for a date range, as shown in the Paddle dashboard (amounts in the lowest currency unit) |
paddle_get_active_subscribers_metrics | Number of active subscribers per day for a date range, as shown in the Paddle dashboard metrics |
paddle_list_event_types | List the event types Paddle can send (transaction.completed, subscription.canceled, ...) with a description and the API version of each |
paddle_list_events | List events (what happened in the account): event_type, occurred_at and the full entity in data |
paddle_list_notification_settings | List notification destinations (webhook URLs and emails) with their subscribed event types, active flag and API version |
paddle_list_notifications | List webhook and email notifications sent for events, with status (delivered, failed, needs_retry, not_attempted), times attempted and the… |
paddle_get_notification | Get one notification by id (ntf_...): status, event payload, destination, attempts and last error |
paddle_list_notification_logs | List the delivery attempts of a notification with the HTTP status and response body your endpoint returned, to debug failing webhooks |
paddle_replay_notification | Send a notification again to its destination, e.g. after fixing a failing webhook endpoint |
Example prompts
- "What were our net revenue and MRR per day last month, and how many active subscribers did we have at the end of it?"
- "Find the customer [email protected] and show her subscriptions with status, items and next billing date."
- "Preview moving this subscription to the annual price with prorated billing and show me the immediate charge before changing anything."
- "List this week's past_due transactions with customer, amount and the payment error."
- "Which webhook notifications failed in the last 24 hours, and what did our endpoint answer?"
Next steps
Was this guide helpful?