Adjustment webhook payloads now include a `tax_rates_used` array, giving you a breakdown of the subtotal, tax, and total for an adjustment, grouped by tax rate
Generate up to 100 reports per day via the API and dashboard, up from the previous limit of 10.
Price and transaction preview operations now support up to 1,000 requests per minute per IP address.
Present customers with a dynamic offboarding experience when they cancel subscriptions in the customer portal to prevent churn and capture valuable insights.
Use a new field in the transaction totals object to see the tax amount charged after credits are applied to a transaction.
Paddle continuously monitors public GitHub repositories to detect API key exposures, sending immediate alerts or taking preventative action to protect your account.
Turn on KakaoPay and NaverPay as payment options for subscriptions, with no engineering effort required on your part.
Korean payment methods like KakaoPay and Naver Pay now appear as individual options at checkout, providing a smoother payment experience for Korean customers.
Olá! Paddle now supports Brazilian Portuguese as a locale for Paddle Checkout, the customer portal, customer emails, and Paddle Retain features. `pt-BR` is now an allowed value for `locale`.
Turn on WeChat Pay to unlock new revenue in China, with no configuration required. Available for one-time items.
Create cardless trials that let customers try your product without entering payment details, lowering the barrier to entry and increasing trial signups.
Our Model Context Protocol (MCP) server has been updated with 80+ tools to enable powerful workflows within AI assistants and agents.
Turn on Pix to unlock new revenue in Brazil, with no configuration required. Available for one-time items.
Open a checkout designed to encourage customers to buy additional items after their initial purchase, with one-click payments and reduced friction that boosts conversion.
Use a new setting in the dashboard to set automatic tax localization for prices as the default for new prices created on your account.
Tie each payout to its underlying transaction‑linked movements to account for sales, taxes, fees, and FX, and then verify totals against your remittance advice.
Increase conversion by automatically following local conventions for displaying prices as inclusive or exclusive of tax.
Detect when no valid payment methods are available for a customer, so you can implement fallback flows.
Transactions and adjustments now include a field for the fees that Paddle retains for chargebacks and refunds in payout totals.
Pass a discount object when creating or updating a transaction to apply a one-off discount without adding it to your catalog.
Customers must now explicitly consent to save their payment method when completing checkout for a subscription.
Turn on Pix and UPI to unlock new revenue in Brazil and India, with no configuration required. Available for one-time items.
Personalize your hosted checkout URLs using custom subdomains to create a seamless, branded experience that builds customer confidence and improves conversion rates.
Use a new query parameter to filter events by type
Get discount groups by ID, and rename or archive them using new API operations, giving you more control over how you organize discounts.
Transactions now include the exchange rate and Paddle fee rate for payout totals.
Use our new Web Monetization Kit to build a website for your mobile app, including a pricing page, paywall, and integrated web checkout. Deploy to Vercel in a couple of clicks
Our SDKs now support the latest API features, including webhook simulations, new Korean payment methods, and balance reports, unlocking more Paddle Billing workflows in your integrations.
Use new client-side token API operations and webhooks to automate your frontend integrations with Paddle.
Customers in California are presented with a new checkbox at checkout to confirm subsequent charges for recurring subscriptions, so you remain compliant with the FTC Negative Option Rule out-of-the-box.
Manage your discounts more easily by creating discount groups and assigning them to discounts using the Paddle API.
Export information about movements in and out of your account balance to track revenue flow, reconcile transactions, and optimize your financial operations using the new balance report.
Turn on Korean payment methods to let customers pay using Korean local cards, KakaoPay, Naver Pay, PayCo, and Samsung Pay. Available for items priced in Korean Won for customers in Korea, with no extra engineering effort required.
Add external purchase flows to your iOS app to let customers make in-app purchases outside your app. Create hosted checkouts or deploy a checkout to Vercel in a couple of clicks, then use RevenueCat for fulfillment.
API keys now have a new standardized format, improved security features, and better management options including permissions, expiry dates, and usage tracking.
Recover abandoned checkouts with automated emails and optional discounts to incentivize purchases and increase conversion rates.
Subscription management links to update payment details and cancel subscriptions now return customer portal links.
Map your product catalog and port your subscription data from Paddle Classic to Paddle Billing using the Paddle dashboard.
Update subscriptions with a scheduled change against them, so you can continue realizing revenue from customers even when they're scheduled to pause or cancel.
Use AI assistants like Claude or AI-powered IDEs like Cursor to create your product catalog, manage your billing and subscriptions, and generate reports.
Use the new `tax_mode` field when creating an adjustment to specify that amounts for a partial refund are tax exclusive. Paddle calculates tax on the amounts for you.
Get deeper control when testing your integration flows by configuring webhook simulator scenarios. Use your own data in webhooks, and customize flows by providing specific options to more accurately test your integrations end-to-end.
When previewing prices without passing location information, Paddle.js now automatically detects visitor location and returns localized prices.
Add or change custom data against a checkout that's already open by passing it to Paddle.js.
When payment fails for automatically-collected subscriptions, Paddle Billing automatically retries the saved payment method — even if you haven't turned on Paddle Retain.
Pass Paddle IDs as part of the payload for single simulations to use data for those entities as part of your simulation. Plus, you can supply partial payloads.
Add a tax or VAT number, supplement address information, and update customer and business names on PDFs sent for completed transactions.
Choose whether Paddle should start a new billing period or continue the existing one when resuming a paused subscription.
你好!Paddle now supports Traditional Chinese as a locale for Paddle Checkout. Pass to Paddle.js when opening a checkout.
We've introduced hourly and daily limits to the number of immediate charges you can make per subscription. You can make up to 20 chargeable updates to a subscription per hour, with a maximum of 100 per day.
Refund or credit the grand total for a transaction by passing a new field when creating an adjustment. There's no need to extract items from the transaction list.
Sandbox emails now come from the paddle.com domain, rather than withpaddle.com.
Create prices, discounts, transactions, and subscriptions in Vietnamese Dong.
Turn on Alipay as payment options for subscriptions, with no engineering effort required on your part.
When you create and send invoices, Paddle now generates unique bank transfer account numbers for each customer. This means invoices can be reconciled more efficiently.
Let customers review their order details, enter their address and payment details, and complete purchase all on one page.
Create customer portal sessions for a customer to generate authenticated links to the customer portal so that they're automatically logged in to the portal.
For enhanced compliance, we've redesigned the Paddle.com footer and introduced clear wording about upfront and recurring charges.
You can use our Python SDK to streamline integrating with Paddle Billing. We released major version 1, which means breaking changes result in a new version.
Let customers save their payment details at checkout, then present customers with their saved payment details when they purchase in the future.
Extend your Apple Pay integration by letting customers launch the Apple Pay modal directly from your checkout. Verify your domain for Apple Pay to turn on.
The Paddle API no longer returns notifications or events older than 90 days.
Customers can now enter discount codes with any casing, for example `blackfriday`, `BLACKFRIDAY`, or `blackFriday`. The Paddle API no longer treats codes against the discount entity as case-sensitive.
Pause subscriptions in trial at the end of the trial period. They move out of trial when they're resumed.
Use our starter kit to build a Next.js app with Paddle Billing, including a localized pricing page, integrated inline checkout, and screens for customers to manage their payments. Deploy to Vercel in a couple of clicks.
Make testing and integration easier by using webhook simulator to simulate webhooks for single events or predefined scenarios, like a new subscription or successful renewal.
For customer record keeping, Paddle automatically sends a credit note (sometimes called a credit memo in other solutions) when you refund or credit a transaction.
Let customers manage their own subscriptions, payments, and account information using the customer portal.
Use a new query parameter to determine whether generated URLs for PDFs should download the file as an attachment saved locally, or open it inline in the browser.
You can use our Go SDK to streamline integrating with Paddle Billing. We released major version 1, which means breaking changes result in a new version.
Add recurring items to a subscription without having to add them to your product catalog by passing price or product attributes when updating a subscription.
When pausing subscriptions, past due renewal transactions are now automatically canceled. This means past due transactions for uncompleted billing periods are not automatically collected on resume.
Subscription items now return the related product object, useful for showing product name, image, and other information your frontend. The returned product is a snapshot of the product at the time it was added to the subscription.
Specify Paddle shouldn't prorate or bill for changes when changing a subscription billing frequency, like when customers upgrade to an annual plan from a monthly plan.
Paddle now automatically approves refunds every ten minutes for sandbox accounts, making testing easier. For live accounts, Paddle automatically approves refunds in some cases.
Paddle platform users in countries that use Australian or Canadian dollars can now hold their balance in their local currency, reducing FX fees for payouts.
Use a parameter or HTML data attribute when working with Paddle.js to hide the option to remove an applied discount at checkout.
Use our Go SDK to streamline integrating with Paddle Billing. Core operations are available now — including products, customers, and subscription management — with full feature parity with the API coming soon. Available now on GitHub.
Use Cancellation Flows where you haven't passed a customer to Paddle Retain.
Use our Python SDK to streamline integrating with Paddle Billing. Fully-featured from webhook verification to every API operation. Available now on GitHub.
The list notification settings operation is now paginated, making it easier work with a large number of notification settings.
Gather insights into why a customer wants to cancel and present them with dynamic salvage attempts while remaining fully compliant in regions with one-click cancellation legislation.
Build advanced, cart-style pricing pages or other pages that present overall totals using a new method in Paddle.js. No need to make server-side calls to the Paddle API.
Manually-collected subscriptions now become past due when payment terms against invoices for subscription renewals elapse.
Turn on Bancontact as a payment option, the most popular payment method in Belgium. Available for one-time items priced in euro for customers in Belgium, with no extra engineering effort required.
Emails for sandbox accounts are only sent to your registered email domain. Where email addresses with other domains are used for testing, they'll be forwarded to the main email address for your account.
Distinguish between declined payments that should not be retried, and declined payments with no further information.
Updated address and business notifications make it easier to work with addresses and businesses for a customer in the API.
Prorated changes to a subscription are now reflected on a transaction, rather than separate adjustments. Item quantities, item amounts, and totals against a transaction may be negative, and there's a new field in transaction totals.
Sandbox emails now come from a different domain to emails sent from live, so it's easier to filter them when testing.
Export information about products, prices, and discounts as a spreadsheet to better understand your data using two new reports.
Use a new method to update the customer for Paddle Retain and pass an event callback after you've initialized Paddle.js. Plus, a new method for initializing Paddle.js.
You can use our PHP or Node.js SDKs to streamline integrating with Paddle Billing. We released major version 1, which means breaking changes result in a new version.
Download an OpenAPI spec file for our API or fork our Postman collection to better work with the Paddle API programmatically.
Paddle Retain now supports using the same client-side tokens as Paddle Billing for authentication. There's no need to pass a Retain API key anymore.
Products and prices now return created and updated dates, making them consistent with other entities in the Paddle API.
The price object returned for subscription items now includes all field against the price entity, rather than a subset. The returned price is a snapshot of the price at the time it was added to the subscription.
Paddle Checkout now shows preferred local currencies in some regions, instead of US Dollars. Existing subscriptions are not impacted.
More easily work with payment methods against transaction payment attempts using a new field that returns a Paddle ID.
Use a new query parameter to filter customers by email address.
Increase lifetime value and reduce churn by intelligently identifying customers on a monthly plan who are likely to upgrade to a longer term plan.
Use our PHP or Node.js SDKs to streamline integrating with Paddle Billing. Fully-featured from webhook verification to every API operation. Available now on GitHub.
See which payment methods are valid for the prices and location passed to a price preview or a transaction preview.
Pass a new parameter when opening a checkout using Paddle.js to choose which payment methods are presented to customers.
Bill a one-time item to a subscription without having to add it to your product catalog by passing price or product attributes.
Charge for an item without having to add it to your product catalog by passing price or product attributes when working with a transaction.
Upgrade a subscription, add items, bill for one-time changes, and change billing dates for a subscription even when payment fails.
Export data from your Paddle system using the Paddle API as well as the web app. There are four new operations in the API and two new webhooks.
Get information about how products, prices, discounts, customers, addresses, businesses, and subscriptions were imported.
Export information about transaction line items and adjustment line items as a spreadsheet to better understand your data and reconcile account activity.
Check you've installed Paddle.js with Retain correctly and see for yourself what Retain looks like.
Prefill a business name at checkout, even if you haven't captured address information yet.
Use a new query parameter to filter transactions by how they were created.
Merhaba! Paddle now supports the Turkish locale for Paddle Checkout and subscription emails. Pass to Paddle.js when opening a checkout.
More easily distinguish emails sent from your sandbox account and your live account. Sandbox emails now include a prefix in the subject.
Build personalized offboarding experiences that retain customers using Cancellation Flows. Retain automatically schedules subscriptions to cancel in Paddle Billing.
Set names for prices and show them on checkouts and emails from Paddle.
Attach your own key-value data to discounts in Paddle when working with the API.
Emails from Paddle when customers start a zero value subscription make it clear that they've saved a payment method. We also changed the wording when customers cancel these kinds of subscriptions.
Build pricing pages without making server-side calls to the Paddle API using a new method in Paddle.js.
Pass a client-side token when initializing to authenticate with Paddle.js. There's no need to pass your seller ID anymore.
Cardholder name is now included in transaction notifications and responses from the Paddle API, letting you display this information in your frontend.
Filter to see subscriptions with a scheduled change to pause, cancel, or resume.
More easily work with multiple production environments that use separate domains by specifying a URL for an approved domain as the checkout payment link when creating a transaction.
Pass a list of subscription IDs when listing subscriptions to return subscriptions that match.
Pause or cancel a subscription right away, rather than at the end of the billing period.
Use a parameter or HTML data attribute when working with Paddle.js to hide the option to hide the option to add tax and business information at checkout.
Get a list of transactions that aren't related to a subscription when working with the API. Use this to see transactions for single purchases.
List only automatically-collected or manually-collected subscriptions.
Load Paddle.js as a module and use TypeScript definitions when working with Paddle.js methods.
Pass items, discount, and customer information to a new Paddle.js method to update an open checkout.
Use a parameter or HTML data attribute when working with Paddle.js to hide the option to add a discount at checkout.
Turn on Apple Pay and Google Pay as payment options for subscriptions, with no engineering effort required on your part.
Get details about invalid or missing information passed to a checkout when opening, so you can handle it in your frontend.
Create prices, discounts, transactions, and subscriptions in Colombian Peso.
Attach your own key-value data to customers, addresses, and businesses in Paddle when working with the API.
Completed transaction processing is more granular, with a new `paid` status for transactions and a new `transaction.paid`, event. `transaction.completed` now has all the details you need for provisioning.
Get credit balances using the new list credit balances for a customer operation to see how much credit a customer has to use, and how much credit they've previously used.
Use the activate a trialing subscription operation to immediately activate a trialing subscription.
Add or remove recurring items, change quantities, bill for one-time charges, and change the next billing date for subscriptions in trial.
Subscribe to notifications for discount events to get notified when discounts are created and updated.
Subscribe to notifications for payouts for Paddle to get notified when payouts are initiated and paid.
Check the update summary object returned when previewing an update to a subscription or billing for a one-time charge to get an overview of any prorated credits and charges created as a result of the change.
Opt in to Paddle Billing to try the latest features. Paddle Billing shares some settings, but has uses different data so your existing integration and customers aren't impacted.
Present charge totals to a customer before billing a one-time charge to a subscription using the new preview a one-time charge for a subscription operation.
Get localized prices for a country, including taxes and discount calculation using the new preview prices operation. Paddle returns formatted prices, including currency symbol, so you can pass straight to your frontend.
More easily distinguish between transactions created for one-time charges for a subscription, and transactions created for subscription changes or renewals.
Attach your own key-value data to products and prices in Paddle when working with the API.
Use the new get a transaction to update payment method operation in the Paddle API to build a workflow for updating customer payment details for a subscription.
Filter to see recurring or one-time prices when using the list prices operation.
Include an object with the total for all the adjustments against a transaction, including a breakdown by adjustment action.
See how transaction totals and payout totals look after adjustments without doing any of your own calculations.
Resend a notification that's failed or delivered using the new replay a notification operation.
Find all notifications that relate to a customer, subscription, or transaction entity, and filter notifications by date period.
We added a new parameter and HTML data attribute to Paddle.js to let you pass a discount code when opening a checkout.
Get the amount that a customer has to pay more easily using the new grand total field against totals for a transaction. It's especially useful for completed transactions.