paddle_create_ addressAdd an address to a customer.
Check revenue and MRR, look up a customer by email, change or cancel a subscription, refund a payment, create a product and its price, or pull a report, in your live Paddle account or your sandbox.
PopMCPPaddle
Every operation of the Paddle Billing API is here, from settings and checkout domains to webhook simulations and usage-based billing, with everyday customer, subscription and payment tools loaded first and the rest one search away.
147 tools in the full catalog: 87 read and 60 write. 42 load by default, and the rest are found with tool search.
paddle_create_ addressAdd an address to a customer.
paddle_create_ customerCreate a customer.
paddle_create_ customer_ portal_ sessionMake a signed link to the customer portal, where a customer manages their billing.
paddle_customer_ overviewEverything about one customer in one call: their record, addresses, businesses, subscriptions, recent payments and credit balances.
paddle_get_ customerGet one customer by id.
paddle_list_ addressesList a customer's addresses.
paddle_list_ customersList customers.
paddle_update_ customerChange a customer's name, email, locale or custom data, or archive one with status=archived.
paddle_cancel_ subscriptionCancel a subscription.
paddle_get_ subscriptionGet one subscription: status, items with prices, next billing date, scheduled change, discount.
paddle_list_ subscriptionsList subscriptions, newest first.
paddle_pause_ subscriptionPause a subscription.
paddle_preview_ subscription_ updateSee what paddle_update_subscription would do, with the same body, without changing anything: the immediate charge, the next bill and the prorated credits.
paddle_resume_ subscriptionResume a paused subscription: effective_from immediately (the default here) or an RFC 3339 time.
paddle_subscription_ overviewEverything about one subscription in one call: status, items, next bill (with amounts), scheduled changes, the customer, recent payments and recent history.
paddle_update_ subscriptionChange a subscription: items (upgrade, downgrade, seats), next_billed_at, discount, custom_data, or remove a scheduled change with scheduled_change=null.
paddle_create_ priceCreate a price for a product.
paddle_create_ productCreate a product.
paddle_create_ product_ with_ priceCreate a product and its price together, the usual first step of selling something.
paddle_get_ revenue_ metricsNet revenue per day in a date range, in the account's balance currency.
paddle_list_ pricesList prices.
paddle_list_ productsList products in the catalog.
paddle_revenue_ summaryThe state of the business for a date range: net revenue, refunds, chargebacks, MRR at the start and end, and active subscribers at the start and end, with amounts already written out as money.
paddle_run_ explore_ metrics_ queryBreak a metric down any way you like, for example revenue by country per month.
paddle_update_ priceChange a price, or archive it with status=archived.
paddle_update_ productChange a product, or archive it with status=archived.
paddle_create_ notification_ settingHave Paddle send events to a URL or email.
paddle_list_ notification_ settingsList webhook destinations.
paddle_create_ discountCreate a discount.
paddle_list_ discountsList discounts.
paddle_create_ transactionBill a customer, or make a checkout link.
paddle_get_ transactionGet one transaction with its line items, totals, tax and payment attempts.
paddle_get_ transaction_ invoice_ pdfGet a link to a transaction's invoice PDF.
paddle_list_ transactionsList transactions (payments and invoices), newest first, up to 30 a page.
paddle_preview_ transactionCalculate totals, tax and discounts for items without creating a transaction.
paddle_account_ readinessIs this account set up to take payments? Which environment and account this is, what the API key may do, the verification status and open steps, the default payment link, payment methods and checkout domains.
paddle_get_ report_ download_ urlGet the download link for a ready report's CSV.
paddle_run_ reportBuild a CSV report and get its download link, in one call.
paddle_create_ adjustmentRefund or credit a transaction.
paddle_list_ adjustmentsList refunds, credits and chargebacks, 10 a page by default (50 at most).
paddle_refund_ transactionRefund a payment: everything, or an amount from one of its lines.
paddle_list_ eventsThe account's event history, newest first: what happened, when, with its data.
paddle_create_ client_ tokenCreate a client-side token for Paddle.js in a web page.
paddle_delete_ checkout_ domainDelete a checkout domain.
paddle_get_ balance_ currency_ settingsGet balance currency settings.
paddle_get_ checkout_ domainGet a checkout domain.
paddle_get_ checkout_ featuresGet checkout feature settings.
paddle_get_ checkout_ payment_ method_ settingsGet checkout payment method settings.
paddle_get_ checkout_ recovery_ settingsGet checkout recovery settings.
paddle_get_ checkout_ stylesGet inline checkout style settings.
paddle_get_ checkout_ url_ settingsThe account's default payment link, the page paddle_create_transaction checkout links open on.
paddle_get_ client_ tokenGet a client-side token.
paddle_get_ currency_ conversion_ settingsGet currency conversion settings.
paddle_get_ overlay_ checkout_ stylesGet overlay checkout style settings.
paddle_get_ statement_ descriptor_ settingsGet statement descriptor settings.
paddle_get_ tax_ settingsGet tax settings.
paddle_list_ checkout_ domainsList checkout domains.
paddle_list_ client_ tokensList client-side tokens, the public tokens used by Paddle.js in a web page.
paddle_update_ balance_ currency_ settingsUpdate balance currency settings.
paddle_update_ checkout_ featuresUpdate checkout feature settings.
paddle_update_ checkout_ payment_ method_ settingsUpdate checkout payment method settings.
paddle_update_ checkout_ recovery_ settingsUpdate checkout recovery settings.
paddle_update_ checkout_ stylesUpdate inline checkout style settings.
paddle_update_ checkout_ url_ settingsSet the account's default payment link.
paddle_update_ client_ tokenRename a client-side token, or revoke it with status=revoked.
paddle_update_ currency_ conversion_ settingsUpdate currency conversion settings.
paddle_update_ overlay_ checkout_ stylesUpdate overlay checkout style settings.
paddle_update_ statement_ descriptor_ settingsUpdate statement descriptor settings.
paddle_update_ tax_ settingsUpdate tax settings.
paddle_verify_ checkout_ domain_ payment_ methodVerify a payment method for a checkout domain.
paddle_create_ businessAdd a business to a customer.
paddle_delete_ customer_ payment_ methodDelete a customer's saved payment method.
paddle_generate_ customer_ auth_ tokenMake a short-lived token that lets Paddle.js show a customer's saved payment methods at checkout.
paddle_get_ addressGet an address for a customer.
paddle_get_ businessGet a business for a customer.
paddle_get_ customer_ payment_ methodGet a payment method for a customer.
paddle_list_ businessesList a customer's businesses (company name and tax number).
paddle_list_ credit_ balancesA customer's credit balances per currency: available, reserved and used.
paddle_list_ customer_ payment_ methodsList a customer's saved payment methods.
paddle_update_ addressUpdate an address for a customer.
paddle_update_ businessChange a business.
paddle_activate_ subscriptionEnd a trial now on an automatically billed subscription.
paddle_create_ subscription_ chargeBill an one-time charge against a subscription, using its saved payment method.
paddle_create_ update_ payment_ method_ transactionGet the transaction and checkout link that let a customer change the card on a subscription billed automatically.
paddle_list_ subscription_ historyThe full record of changes to one subscription: what changed, when, and who or what did it.
paddle_preview_ subscription_ chargeSee what paddle_create_subscription_charge would bill, with the same body, without charging.
paddle_create_ meterCreate a meter.
paddle_create_ usage_ balance_ unitCreate an usage balance unit.
paddle_get_ meterGet a meter.
paddle_get_ usage_ balanceGet an usage balance for a customer.
paddle_get_ usage_ balance_ unitGet an usage balance unit.
paddle_list_ metersList meters.
paddle_list_ usage_ balance_ grantsList grants for an usage balance.
paddle_list_ usage_ balance_ unitsList usage balance units.
paddle_list_ usage_ balancesList usage balances for a customer.
paddle_record_ usage_ eventsRecord usage events.
paddle_update_ meterUpdate a meter.
paddle_update_ usage_ balance_ unitUpdate an usage balance unit.
paddle_create_ simulationSet up a webhook simulation, one event or a scenario.
paddle_create_ simulation_ runRun a simulation now: Paddle sends its events to the destination.
paddle_get_ simulationGet a simulation.
paddle_get_ simulation_ runGet a run for a simulation.
paddle_get_ simulation_ run_ eventGet an event for a simulation run.
paddle_list_ simulation_ run_ eventsList events for a simulation run.
paddle_list_ simulation_ runsList runs for a simulation.
paddle_list_ simulation_ typesList simulation types.
paddle_list_ simulationsList webhook simulations: fake events you can fire at a destination to test it.
paddle_replay_ simulation_ run_ eventReplay an event for a simulation run.
paddle_update_ simulationUpdate a simulation.
paddle_get_ active_ subscribers_ metricsActive subscribers per day in a date range.
paddle_get_ chargeback_ metricsChargebacks per day in a date range.
paddle_get_ checkout_ conversion_ metricsCheckout conversion per day in a date range.
paddle_get_ mrr_ change_ metricsNet change in monthly recurring revenue per day in a date range; an amount can be negative.
paddle_get_ mrr_ metricsMonthly recurring revenue per day in a date range.
paddle_get_ priceGet a price.
paddle_get_ productGet a product.
paddle_get_ refund_ metricsRefund amount per day in a date range.
paddle_list_ explore_ metric_ entitiesWhat paddle_run_explore_metrics_query can query: each metric entity with its measures, dimensions and filters.
paddle_preview_ pricesPrice a list of items for a location without creating anything: tax, discounts and local currency, with totals already formatted.
paddle_delete_ notification_ settingDelete a webhook destination for good.
paddle_get_ notificationGet one webhook delivery with its full payload.
paddle_get_ notification_ settingGet one webhook destination.
paddle_list_ notification_ logsList logs for a notification.
paddle_list_ notificationsList webhook deliveries with their status and attempts.
paddle_replay_ notificationSend a webhook delivery again, to the same destination.
paddle_update_ notification_ settingChange a webhook destination.
paddle_create_ discount_ groupCreate a discount group.
paddle_get_ discountGet a discount.
paddle_get_ discount_ groupGet a discount group.
paddle_list_ discount_ groupsList discount groups.
paddle_update_ discountChange a discount, or archive it with status=archived.
paddle_update_ discount_ groupUpdate a discount group.
paddle_revise_ transactionCorrect the customer details on a billed or completed transaction (name, address, business, tax number).
paddle_update_ transactionChange a draft or ready transaction, or set status=billed to issue an invoice, or status=canceled to cancel.
paddle_get_ accountThe account's business identity: Paddle id, legal name, display name, website and contact email.
paddle_get_ api_ rootWho this connection is: the Paddle account, sandbox or production, and every permission the API key holds.
paddle_get_ verificationGet a verification.
paddle_list_ verificationsWhether the account is ready for live payments, and the steps still open.
paddle_update_ accountChange the account's contact email.
paddle_create_ reportAsk Paddle to build a CSV report: type is transactions, transaction_line_items, adjustments, adjustment_line_items, products_prices, discounts, balance, payout_reconciliation, checkouts or subscriptions; filters narrow it.
paddle_get_ reportGet a report's status: pending, ready, failed or expired.
paddle_list_ reportsList reports you have asked Paddle to build, with their status.
paddle_get_ adjustment_ credit_ noteGet a link to an adjustment's credit note PDF.
paddle_get_ ip_ addressesThe IP addresses Paddle sends webhooks from, for this connection's environment.
paddle_list_ countriesCountries Paddle supports, with their codes.
paddle_list_ currenciesCurrencies Paddle supports, with their decimal places: read this to turn an amount into money.
paddle_list_ event_ typesEvery event type Paddle can send to a webhook, for use with paddle_create_notification_setting and paddle_list_events.
Credentials off one Paddle screen, then an endpoint your client signs into. Nothing to deploy, and nothing to install.
In Paddle, open My account, Settings, Authentication, then API keys. Make a new key named PopMCP, choose its permissions and expiry, save, and copy it. Paste the key into PopMCP. It already says whether it is live or sandbox, so there is no app to register and no approval to wait for.
••••••••••••3f7aRefunds, cancellations, plan changes and charges take effect the moment the AI calls them, and a live key touches real customers. The key's permissions set the limit: give it only .read permissions for a look-only connection, keep teammates on read-only in PopMCP, or connect a sandbox key first.
Drop the PopMCP URL into Claude, ChatGPT, Claude Code, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Paddle credential never leaves the server.
app.popmcp.com/mcpAsk for something harmless before the agent changes anything. Writes run as soon as it calls them, so confirm it reads the right account first.
What were my net revenue, refunds and MRR over the last 30 days?
paddle_revenue_summaryok
Then just ask for the work
“What were my net revenue, refunds and MRR over the last 30 days?”
“Who is sam@example.com, what are they paying for, and have any of their payments failed?”
“Which subscriptions are past due, and what does each customer owe?”
“Move this subscription to the annual price, and show me what the customer pays before you do it”
“Refund $20 of this customer's last payment and tell me when Paddle approves it”
“Create a Pro plan at $29 a month with a 14 day trial, and give me a checkout link”
“Export last month's completed transactions as a CSV”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting Paddle behind an AI client.
One API key. In Paddle open My account, Settings, Authentication, then API keys, make a key and copy it straight away, because it is shown only once. Paste it into PopMCP and you are connected. There is no OAuth app, redirect URL or review, and the key is stored encrypted and used only on PopMCP's servers.
Yes. A key made in your sandbox dashboard connects your test account and a live key connects your real one. The key says which, so there is nothing to choose. They are separate accounts with separate ids, so connect each on its own if you want both, and a sandbox connection is a safe way to watch what an agent does.
No. This connector is for Paddle Billing, which everyone who signed up after August 2023 has. Paddle Classic is a separate older product with a different API, and pasting a Classic auth code gets a message saying so.
Yes, if the key has the permission and write actions are on. refund_transaction refunds all or part of a payment, cancel_subscription ends at the close of the billing period unless told otherwise, and preview_subscription_update shows what a plan change would cost before anything changes. On live accounts most refunds wait for Paddle's approval.
Two ways, and you can use both. Give the key only permissions ending in .read when you make it, so Paddle itself refuses changes, and turn off write actions for the connection in PopMCP, which hides those tools from the AI.
The tool answers with the exact permission it needs, such as subscription.write. Add it to the key under Authentication in Paddle and try again; you do not need to reconnect. paddle_get_api_root lists what the key has now.
Paddle API keys expire, after 90 days unless you choose a later date, and a year at most. Choose a later date when you make the key, and when one expires, make a new key and connect again.
Paddle keeps money as a string in the currency's lowest denomination, so 2499 in USD is $24.99 and 1000 in JPY is 1000 yen. The connector tells the AI this, refuses a decimal rather than billing the wrong amount, and revenue_summary writes its totals out as money.
Only once, in the answer to create_notification_setting, when it is first made. Every other answer replaces it with a marker, so a read-only connection cannot see it. The Paddle dashboard always shows it.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Connect Paddle in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking Paddle on the consent screen. The Paddle tools are then available in that session, and no Paddle credential is stored on your machine.
Loading 147 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 42-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.
A tool is something your AI calls, and there are 147 here. A trigger is something PopMCP watches for you: 29 Paddle events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Paddle.
Launch a hosted MCP endpoint for Paddle, keep tool access under control, and start testing real workflow prompts right away.