For AI agents and LLMs: a structured documentation index is available at /llms.txt. Every page has a Markdown sibling — append .md to any URL.

Skip to content
Docs

Offer paid trials for subscriptions

Create paid trials that charge customers a reduced amount for a subscription's trial period before it renews at the full price. The trial price and the recurring price share the same price, so you keep a clean pricing structure and seamless integrations with app stores and third-party tools.

Product area

  • Subscriptions
  • Catalog

Tooling

  • API
  • Checkout
  • Email

Released

June 11, 2026

Status

Released

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.

POST /prices
Request
{
"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"
}
}
Response (201 Created)
{
"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_price

    The amount to charge for a trial period. Set to make a trial paid.

  • + Added Field price.trial_period.unit_price_overrides

    Localized trial prices for a paid trial, matching the base price overrides.

Errors

Feature
  • + Added Error trial_currency_mismatch

    Returned when trial price currencies don't match the base price.

  • + Added Error trial_is_either_paid_or_cardless

    Returned when a trial sets a price but doesn't require a payment method.

Was this page helpful?