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
string
Object type identifier. Always
"subscription" for Subscription objects.string
required
Subscription identifier, based on the initial order number.
string
required
Current subscription status. Possible values:
active, past_due, canceled, unpaid, incomplete, incomplete_expired, trialing, pausedinteger | null
Unix timestamp (milliseconds) when the subscription was created.
integer | null
Unix timestamp (milliseconds) when the current billing interval started.
integer | null
Unix timestamp (milliseconds) when the current billing interval ends.
boolean
Whether the subscription will cancel at the end of the current interval. Defaults to
false.integer | null
Unix timestamp (milliseconds) when the subscription was cancelled, if applicable.
User | null
Expanded User object with basic subscriber information.
string
required
Human-readable number of the initial order.
Order
required
Expanded Order object for the initial subscription order.
string | null
Human-readable number of the most recent payment.
Payment | null
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