Endpoints
Ending a trial early
A subscription intrialing status can be converted to a paid subscription right away with the
endTrial endpoint. The first invoice is created and charged immediately using the payment method
on file, and the outcome (emails, webhooks, orders) is identical to the trial ending naturally.
The request fails with a 400 if the subscription is not trialing or has no payment method saved.
Multiple line items
Thecreate, update, and charge endpoints accept an items array with up to 20 line items,
so a single subscription can bill several offers together (e.g. a package plus add-ons) while the
invoice and webhook payloads keep the full per-line breakdown.
Because one subscription maps to a single Stripe subscription, all items must be on the same
cadence:
- Same currency — every item resolves to the same currency (either explicitly or from its offer).
- Same billing interval — every offer shares the same
intervalandinterval_count. Mixing, for example, a monthly and a yearly offer is rejected with a400rather than failing at Stripe. - No trial — a trial is only applied to single-item subscriptions; multi-item subscriptions start billing immediately.
- No discount codes — discount codes are not supported when a subscription has more than one item.
400 with a descriptive message.
The Subscription object
Object type identifier. Always
"subscription" for Subscription objects.Subscription identifier, based on the initial order number.
Current subscription status. Possible values:
active, past_due, canceled, unpaid, incomplete, incomplete_expired, trialing, pausedUnix timestamp (milliseconds) when the subscription was created.
Unix timestamp (milliseconds) when the current billing interval started.
Unix timestamp (milliseconds) when the current billing interval ends.
Whether the subscription will cancel at the end of the current interval. Defaults to
false.Unix timestamp (milliseconds) when the subscription was cancelled, if applicable.
Expanded User object with basic subscriber information.
Human-readable number of the initial order.
Expanded Order object for the initial subscription order.
Human-readable number of the most recent payment.
Expanded Payment object for the most recent charge.
Subscription lifecycle
Example response
Webhook events
See Event types and Webhooks overview for why
subscription_created can include PENDING payments and why you should not rely on it alone for access grants.
Related resources
Payments
Payment transactions for subscriptions
Orders
Initial orders creating subscriptions
Users
Subscribed customers
Events
Subscription webhook events