Subscription Platform
Paddle
API integration
Ship Subscription Platform features without building the integration. Full Paddle API access via Proxy and 90+ MCP-ready tools for AI agents — extend models and mappings to fit your product.
Talk to usUse Cases
Why integrate with Paddle
Common scenarios for SaaS companies building Paddle integrations for their customers.
Embed billing actions inside support tools
Helpdesk and AI support platforms can resolve billing tickets natively by letting agents or bots look up transactions, issue refunds, and send customers to a secure Paddle portal — without context switching to the Paddle dashboard.
Power subscription-aware retention and CS workflows
Customer success platforms can sync subscription states, pauses, cancellations, and payment history to trigger health-score changes, dunning workflows, and save offers the moment a subscription goes past_due.
Build CPQ and checkout flows inside a CRM
Sales platforms can pull Paddle's product catalog and prices, apply negotiated discounts, and generate transactions with checkout URLs so reps can close deals without leaving the CRM.
Ship revenue analytics without rebuilding MRR math
BI and finance tools can tap Paddle's native time-series metrics for MRR, active subscribers, chargebacks, and refunds to deliver accurate revenue dashboards on day one of a customer connecting their account.
Automate accounting and revenue reconciliation
ERP and bookkeeping platforms can ingest Paddle transactions, invoices, and adjustments (credit notes and refunds) to keep the general ledger in sync without manual CSV exports.
What You Can Build
Ship these features with Truto + Paddle
Concrete product features your team can ship faster by leveraging Truto’s Paddle integration instead of building from scratch.
In-app subscription management console
Let end users view, update, pause, resume, cancel, and bulk-update Paddle subscriptions from inside your product using the subscription endpoints.
One-click customer portal handoff
Generate a Paddle customer portal session on demand so your users can send customers a secure link to update payment methods and download invoices.
Embedded refund and credit note workflow
Trigger adjustments directly from a support ticket or CS workspace to issue partial or full refunds and attach the resulting credit note to the customer record.
Live revenue and churn dashboards
Pull Paddle's MRR, MRR change, active subscriber, refund, chargeback, and checkout conversion metrics to render ready-made revenue dashboards for every connected account.
Localized pricing preview for quotes and checkouts
Use Paddle's pricing preview to calculate exact tax-inclusive, discount-adjusted prices per customer locale before generating a transaction or quote.
Invoice and transaction timeline per customer
Display a unified timeline of transactions, invoices, and subscription history events for any Paddle customer surfaced inside your app.
SuperAI
Paddle AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
create_a_paddle_discount_group
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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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
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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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
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 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 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 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 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 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.
get_single_paddle_adjustment_credit_note_by_id
Get a PDF credit note for a Paddle adjustment by id. Returns: url. The returned link is temporary and expires after an hour. Required: id.
create_a_paddle_adjustment
Create a Paddle adjustment to refund or credit one or more transaction items on a transaction. Returns the created adjustment including id, action, status, items, and totals. Requires action, items, reason, and transaction_id. Most live-account refunds are created with status pending_approval until reviewed by Paddle. Required: action, transaction_id, reason.
list_all_paddle_adjustments
List Paddle adjustments, paginated. Returns adjustment records including id, action, status, transaction_id, and totals. Optional filters: id, action, customer_id, order_by, status, subscription_id, and transaction_id.
create_a_paddle_checkout_domain_verify_payment_method
Trigger payment method verification for a Paddle checkout domain (currently Apple Pay only). Returns: id, domain, status, payment_method_verification, created_at, updated_at. Requires domain_id and payment_method; the domain must be in approved status. Required: domain_id, payment_method.
delete_a_paddle_checkout_domain_by_id
Delete a Paddle checkout domain by id. Deleted domains can no longer be used to load checkouts for your account. Returns an empty 204 response on success. Required: id.
get_single_paddle_checkout_domain_by_id
Get a single Paddle checkout domain by id, including its approval status and payment method verification details. Returns: id, domain, status, payment_method_verification, created_at, updated_at. Required: id.
list_all_paddle_checkout_domains
List Paddle checkout domains submitted for your account, paged through with query filters. Returns: id, domain, status, payment_method_verification, created_at, updated_at. Filter by id, domain, or status.
create_a_paddle_client_token
Create a Paddle client-side token for use with Paddle.js in your frontend. Returns the new token including id, token, name, status, and created_at. Required: name.
get_single_paddle_client_token_by_id
Get a Paddle client-side token by id. Returns the token including id, token, name, status, created_at, and revoked_at. Required: id.
list_all_paddle_client_tokens
List Paddle client-side tokens. Returns a paginated list of tokens including id, token, name, status, and created_at. Filter by status; sort with order_by.
update_a_paddle_client_token_by_id
Update a Paddle client-side token by id. Set status to revoked to revoke the token — revoked tokens can't be set back to active. Returns the updated token including id, token, name, status, and revoked_at. Required: id, status.
create_a_paddle_event_replay
Replay an event for a simulation run in Paddle, resending the simulation run log to its destination. Paddle creates a new simulation run log entity for the replay related to the same run. Returns: id, status, event_type, payload, request, response, created_at, updated_at. Returns 202 while processing; the new log starts as pending. Required: simulation_id, simulation_run_id, simulation_event_id.
list_all_paddle_event_types
List Paddle notification event types, such as transaction.completed and subscription.updated. Returns each type's name, description, group, and available_versions. The response is not paginated.
list_all_paddle_events
List Paddle events from the last 90 days (the event stream), ordered most-recent first. Returns: event_id, event_type, occurred_at, data. Only events from the last 90 days are retained.
list_all_paddle_ips
List the Paddle IP addresses you can add to your allowlist; the addresses returned are for the environment you make the request in (the production base URL returns production IPs). Returns: ipv4_cidrs. Takes no parameters.
list_all_paddle_metrics_active_subscribers
Get active subscribers metrics from Paddle as a timeseries of daily paying-user counts (trialling users excluded). Returns: timeseries, starts_at, ends_at, interval, updated_at. Optional from and to narrow the date range; when they are the same, the timeseries is empty. Required: from, to.
list_all_paddle_metrics_chargebacks
List Paddle chargeback metrics as a daily timeseries over a date range. Returns: timeseries, starts_at, ends_at, interval, updated_at. Excludes pre-chargeback alerts and chargeback reversals; passing the same from and to returns an empty timeseries. Required: from, to.
list_all_paddle_metrics_checkout_conversions
Get Paddle checkout conversion metrics for a given date range as a timeseries with daily granularity; a checkout counts as converted when a payment is successfully completed. Returns: timeseries, starts_at, ends_at, interval, updated_at. Optional: from, to. Returns an empty timeseries when from and to are the same. Required: from, to.
list_all_paddle_metrics_monthly_recurring_revenue_changes
Get Paddle MRR change metrics: monthly recurring revenue change versus the same time interval last month, as a daily-granularity timeseries over a date range. Returns: currency_code, timeseries, starts_at, ends_at, interval, updated_at. Returns an empty timeseries when from and to are the same. Required: from, to.
list_all_paddle_metrics_monthly_recurring_revenues
Get Paddle's monthly recurring revenue (MRR) as a daily timeseries for a date range. Returns: currency_code, timeseries, starts_at, ends_at, interval, updated_at. When from and to are the same, an empty timeseries is returned. Required: from, to.
list_all_paddle_metrics_refunds
Get Paddle refund metrics for a given date range: a daily timeseries of the transaction subtotal of refunded products returned to customers (base cost minus discounts, excluding taxes, fees, and chargebacks). Returns: currency_code, timeseries, starts_at, ends_at, interval, updated_at. When from and to are the same, returns an empty timeseries. Required: from, to.
list_all_paddle_metrics_revenues
Get net revenue metrics from Paddle as a daily-granularity timeseries over a date range. Returns: currency_code, timeseries, starts_at, ends_at, interval, updated_at. When from and to are the same, returns an empty timeseries. Required: from, to.
create_a_paddle_notification_replay
Replay a delivered or failed Paddle notification by id — Paddle creates a new notification entity tied to the same event_id. Returns: notification_id. Only notifications with origin 'event' can be replayed (never a replay of a replay), and notifications older than 90 days are no longer retained; processing is asynchronous. Required: notification_id.
create_a_paddle_notification_setting
Create a Paddle notification setting (notification destination) that subscribes to webhook events. Returns: id, description, type, destination, active, api_version, include_sensitive_fields, subscribed_events, endpoint_secret_key, traffic_source, notification_id. Required: description, type, destination, subscribed_events.
delete_a_paddle_notification_setting_by_id
Delete a Paddle notification setting by id. This permanently removes the destination and its event logs with no way to recover it — deactivate it via update instead if you may need the logs later. Returns an empty 204 response on success. Required: id.
get_single_paddle_notification_setting_by_id
Get a Paddle notification setting (notification destination) by id. Returns: id, description, type, destination, active, api_version, include_sensitive_fields, subscribed_events, endpoint_secret_key, traffic_source, status, payload, occurred_at, delivered_at, origin, last_attempt_at, times_attempted, notification_setting_id. Required: id.
list_all_paddle_notification_settings
List Paddle notification settings (notification destinations). Returns: id, description, type, destination, active, api_version, include_sensitive_fields, subscribed_events, endpoint_secret_key, traffic_source, status, payload, occurred_at, delivered_at, origin, last_attempt_at, times_attempted, notification_setting_id. Filter by active, traffic_source, and order_by.
update_a_paddle_notification_setting_by_id
Update a Paddle notification setting by id. When changing subscribed_events, send the complete list of event type names — omitted events are removed. Returns: id, description, type, destination, active, api_version, include_sensitive_fields, subscribed_events, endpoint_secret_key, traffic_source. Required: id.
get_single_paddle_notification_by_id
Get a Paddle notification by id. Returns the notification including id, type, status, payload, occurred_at, delivery attempt details, and notification_setting_id. Notifications older than 90 days aren't retained; requesting an expired notification returns an error. Required: id.
list_all_paddle_notifications
List Paddle notifications created in the last 90 days, paginated. Returns notifications with id, type, status, payload, occurred_at, delivered_at, and delivery attempt details. Notifications older than 90 days aren't retained.
create_a_paddle_pricing_preview
Preview Paddle price calculations for one or more prices, typically for building pricing pages. Returns: customer_id, address_id, business_id, currency_code, discount_id, address, customer_ip_address, details, available_payment_methods, status, created_at, updated_at, started_at, first_billed_at, next_billed_at, collection_mode, current_billing_period, billing_cycle,…. Required: items.
get_single_paddle_report_download_url_by_id
Get a temporary CSV download link for a Paddle report by id. Returns: url. Only available for reports that are ready; the link expires after 3 minutes. Required: id.
create_a_paddle_report
Create a Paddle report to generate a CSV export of data (e.g. transactions, adjustments, discounts, transaction_line_items, products_prices). Returns the new report object including its id, type, status, filters, rows, expires_at, created_at, and updated_at. Reports are created as pending and move to ready when the CSV can be downloaded.
get_single_paddle_report_by_id
Get a single Paddle report by id — useful for polling until the status moves from pending to ready so the CSV can be downloaded. Returns: id, type, rows, status, filters, expires_at, created_at, updated_at. Required: id.
list_all_paddle_reports
List Paddle reports, newest first by default. Returns report objects including id, type, status, filters, rows, expires_at, created_at, and updated_at. By default only pending and ready reports are returned — use the status query parameter to fetch failed, expired, or deleted reports instead.
get_single_paddle_run_event_by_id
Get a single event for a Paddle simulation run by id. Returns the simulation event with its id, status, event_type, payload, request and response details, and created_at/updated_at timestamps. Required: id, simulation_id, simulation_run_id.
list_all_paddle_run_events
List events for a Paddle simulation run. Returns a paginated list of simulation event records with id, status, event_type, payload, and created_at. Required: simulation_id, simulation_run_id.
create_a_paddle_simulation_run
Create a new run for a Paddle simulation to execute it against its configured entities. Returns the created run including its id, status, type, created_at, and updated_at. Required: simulation_id.
get_single_paddle_simulation_run_by_id
Get a Paddle simulation run by its id. Returns: id, status, type, created_at, updated_at. Required: id, simulation_id.
list_all_paddle_simulation_runs
List Paddle simulation runs for a simulation, newest first. Returns: id, status, type, created_at, updated_at. Required: simulation_id.
list_all_paddle_simulation_types
List Paddle simulation types (events and scenarios) that can be used when creating simulations. Returns each type's name, label, description, group, type, and the events it triggers.
create_a_paddle_simulation
Create a Paddle simulation for a notification setting (notification destination). Returns the created simulation including id, notification_setting_id, name, type, status, config, payload, and created_at. Requires notification_setting_id, name, and type. Scenario simulations pass config (entity IDs populate simulated webhooks with real data); event simulations pass payload.
get_single_paddle_simulation_by_id
Get a single Paddle simulation by id. Returns: id, notification_setting_id, name, type, status, payload, config, last_run_at, created_at, updated_at. Required: id.
list_all_paddle_simulations
List Paddle simulations for a Paddle account, paginated. Returns each simulation's id, notification_setting_id, name, type, status, payload, config, and last_run_at. Optional filters: id, notification_setting_id, order_by, status.
update_a_paddle_simulation_by_id
Update a Paddle simulation by id. Returns the updated simulation including id, notification_setting_id, name, type, status, payload, config, and updated_at. Optional body fields: name, type, payload (event simulations), or config with entities (scenario simulations). Required: id.
create_a_paddle_charge_preview
Preview a one-time charge for a Paddle subscription without billing it. Returns a subscription preview including status, currency_code, next_billed_at, immediate_transaction, next_transaction, and recurring_transaction_details. Required: subscription_id, effective_from, items.
list_all_paddle_notification_logs
List delivery-attempt logs for a Paddle notification, including failed attempts. Returns: id, response_code, response_content_type, response_body, attempted_at. Notifications older than 90 days are no longer retained and cannot be listed. Required: notification_id.
create_a_paddle_transaction_revise
Revise customer, business, or address information on a billed or completed Paddle transaction to correct details on generated invoice documents. Returns the revised transaction entity including id, status, currency_code, items, details, and revised_at. A transaction can only be revised once, and only details that don't impact tax rates can be changed. Required: transaction_id.
create_a_paddle_transactions_preview
Preview a Paddle transaction without creating a transaction entity — typically used to build dynamic pricing pages. Returns the supplied inputs echoed back (items with full price objects, currency_code, discount_id, address) plus a details object with totals, tax_rates_used, and line_items, and available_payment_methods. No id is returned.
Why Truto
Why use Truto’s MCP server for Paddle
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 800+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
How It Works
From zero to integrated
Go live with Paddle in under an hour. No boilerplate, no maintenance burden.
Link your customer’s Paddle account
Use Truto’s frontend SDK to connect your customer’s Paddle account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call Paddle
Truto’s Proxy API is a 1-to-1 mapping of the Paddle API. You call us, we call Paddle, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate Paddle’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about Paddle on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
How do end users authenticate their Paddle account?
Paddle uses API key authentication. Truto handles secure key capture, storage, and injection on every request, so your users paste their key once and your product makes authenticated calls without you managing secrets.
Can we receive real-time updates when subscriptions or transactions change?
Yes. You can list and read Paddle notification settings, notifications, notification logs, and events through Truto, and trigger replays of notifications or events when you need to re-process a missed update.
Does the integration support both read and write operations?
Yes. Across customers, subscriptions, transactions, products, prices, discounts, adjustments, and notification settings you get full CRUD coverage — including subscription lifecycle actions like activate, pause, resume, cancel, and bulk update.
Can we calculate accurate localized pricing before creating a checkout?
Yes. The pricing preview and charge preview endpoints return tax-inclusive, discount-adjusted amounts per customer and locale, which is ideal for CPQ, upgrade flows, and in-app upsells.
How do we handle refunds and credit notes?
Use the adjustments endpoints to create refunds or credits against specific transaction line items, then fetch the generated credit note by ID to display or store it alongside the original transaction.
Can we test integration flows without touching production data?
Yes. Paddle exposes simulations and simulation runs for scenarios like subscription changes and failed payments, and Truto proxies these endpoints so you can validate your workflows end-to-end before going live.
Paddle
Get Paddle integrated into your app
Our team understands what it takes to make a Paddle integration successful. A short, crisp 30 minute call with folks who understand the problem.