What's new?
You can now offer paid trials, charging customers a reduced amount for a subscription's trial period before it renews at the full price. You can do this by creating a price with a trial period and setting trial_period.unit_price to the amount to charge for the trial.
How it works
In Paddle, whether a subscription has a trial is determined by whether the prices on the subscription have a trial period.
Previously, trials in Paddle were always free. Customers weren't charged until the trial ended.
With paid trials, you can charge a reduced amount for the trial period to capture higher-intent buyers, reduce trial abuse, and improve renewal conversion. The trial price and the recurring price share the same price_id, so you keep a clean pricing structure and seamless integrations with app stores and third-party tools.
When creating a price with a trial period, set trial_period.unit_price with the amount to charge for the trial. To localize the trial price, set trial_period.unit_price_overrides to match your base price overrides.
Pass a price with a trial period to a checkout to bill for it. Paddle Checkout handles the trial workflow for you, presenting the trial price and length, then collecting for the trial price amount when the customer completes checkout.
A few things to know:
- Refunds: A paid trial is a real charge, so you can issue full, partial, and tax refunds for the trial price.
- Discounts: Recurring and one-time discounts aren't applied to the trial price. They carry over to the first billing period after the trial.
- Trial changes: Changes during the trial aren't prorated, the same as free trials.
Example
This example creates a monthly price with a 7-day paid trial that charges $1.00 for the trial, then $15.00 on renewal.
{ "product_id": "pro_01k5c106wy997av8jmz1qfng2q", "description": "Monthly (per seat) with 7 day paid trial", "name": "Monthly (per seat)", "trial_period": { "interval": "day", "frequency": 7, "unit_price": { "amount": "100", "currency_code": "USD" } }, "billing_cycle": { "interval": "month", "frequency": 1 }, "unit_price": { "amount": "1500", "currency_code": "USD" }}{ "data": { "id": "pri_01k5c14mgh9dc3wgk3vb23p0t7", "product_id": "pro_01k5c106wy997av8jmz1qfng2q", "type": "standard", "description": "Monthly (per seat) with 7 day paid trial", "name": "Monthly (per seat)", "billing_cycle": { "interval": "month", "frequency": 1 }, "trial_period": { "interval": "day", "frequency": 7, "requires_payment_method": true, "unit_price": { "amount": "100", "currency_code": "USD" }, "unit_price_overrides": [] }, "tax_mode": "account_setting", "unit_price": { "amount": "1500", "currency_code": "USD" }, "unit_price_overrides": [], "custom_data": null, "status": "active", "quantity": { "minimum": 1, "maximum": 100 }, "import_meta": null, "created_at": "2026-06-10T09:00:00.000000Z", "updated_at": "2026-06-10T09:00:00.000000Z" }, "meta": { "request_id": "a1f4c2e0-8b3d-4f7a-9c21-6d0b5e9a3c14" }}Next steps
Paid trials are available now. To get started, see Create a trial and Create products and prices.
It's a non-breaking change, meaning it doesn't impact existing integrations. You may need to review your event handling code to display trial pricing in an inline checkout. See Create a trial for the full mapping.
Summary of changes
Price
Resource- + Added Field
price.trial_period.unit_priceThe amount to charge for a trial period. Set to make a trial paid.
- + Added Field
price.trial_period.unit_price_overridesLocalized trial prices for a paid trial, matching the base price overrides.
Errors
Feature- + Added Error
trial_currency_mismatchReturned when trial price currencies don't match the base price.
- + Added Error
trial_is_either_paid_or_cardlessReturned when a trial sets a price but doesn't require a payment method.