Change the plan
Switch a subscription to a different recurring product — the standard upgrade or downgrade flow.- When the change takes effect depends on the proration behavior:
invoiceandprorateapply the new product immediately, whilenext_periodschedules a pending update that’s only applied at the start of the next billing cycle. - The new product must share the subscription’s currency.
- You can upgrade a non-seat subscription to a seat-based product — the billing customer is auto-promoted to a
teamcustomer and claims a seat — but you can’t switch a seat-based subscription back to a non-seat product. Non-seat → seat changes must apply immediately, sonext_periodproration isn’t allowed for that transition. - You can’t change the plan on a subscription that’s already canceled or scheduled to cancel — uncancel first.
- Plan changes on a trialing subscription are allowed. The trial carries over with its end recomputed from the new product’s trial length (anchored to the original
trial_start). If the new product has no trial — or its trial would already have elapsed — the trial ends immediately and a fresh billing cycle starts on the new product. - Custom-priced products (pay-what-you-want) aren’t valid destinations for a plan change.
Change the number of seats
For seat-based subscriptions, update how many seats the customer is paying for. Like plan changes, when the seat count actually takes effect depends on the proration behavior: immediate withinvoice or prorate, scheduled for the next cycle with next_period.
cURL
Apply or change a discount
Attach a discount to an active subscription, or remove the current one by passingnull. The change is applied to the next billing cycle — it doesn’t retroactively re-bill the current period.
cURL
Manage the trial
You can add, extend, or end a trial on any subscription:- Add or extend a trial by setting
trial_endto a future date. If the subscription is currently active, its status switches totrialingand the next charge is postponed to the new date. - End a trial immediately by setting
trial_endto"now". The subscription becomesactiveand a new billing cycle — and charge — starts on the spot.
cURL
Reschedule the next renewal
If you need to move a subscription’s renewal date — for example, to align several subscriptions on the same day, or to extend the current period as a goodwill gesture — you can set a newcurrent_billing_period_end. The new date has to be in the future, and this operation isn’t available on canceled subscriptions.
cURL
Pause and resume
Pausing stops billing without ending the subscription. Use it for seasonal plans or account “freezes”, where a customer steps away for a while and comes back to the same subscription and payment method.Pause at period end
Calling pause setspause_at_period_end = true. The subscription stays active and keeps its benefits until its current_period_end, then it moves to the paused status: benefits are revoked and no further orders are generated. Pausing never charges the customer and never takes effect mid-period.
Pass an optional resumes_at date to schedule an automatic resume. It has to be after the current period end. Leave it out to pause indefinitely and resume by hand later.
cURL
pause_at_period_end back to false.
cURL
Resume
Resuming a paused subscription takes effect right now: status moves back toactive, a new billing period starts from the resume date, and the customer is charged immediately. The payment method stays on file, so there’s no second checkout. An automatic resume on the resumes_at date does exactly the same thing.
cURL
Cancel or revoke
Polar distinguishes between canceling and revoking a subscription. Both end the customer’s access eventually — the difference is when.Cancel at period end
Calling cancel (or toggling “Cancel at period end” in the dashboard) setscancel_at_period_end = true and schedules the subscription to end on its current_period_end. Until then:
- The subscription stays active and the customer keeps their benefits — they paid for that period.
- No further orders are generated after the current one.
- You can uncancel at any time before the end date, which reverts the scheduled cancellation.
cURL
too_expensive, missing_features, switched_service, unused, customer_service, low_quality, too_complex, and other.
Only set the cancellation reason and comment when they actually come from
the customer (for example, from a cancellation survey or a support
conversation). Customers can see their
customer_cancellation_comment in
their purchase history, so don’t put internal notes there.Revoke immediately
Revoking ends the subscription right now: status moves tocanceled, ended_at is set to the current time, and all benefits are revoked. There’s no refund — if you need to issue one, do it separately from Refunds.
Use this when access needs to stop immediately — a terms-of-service violation, a chargeback, or an explicit customer request.
cURL
Uncancel
If a subscription is set to cancel at period end and hasn’t ended yet, you (or the customer) can reverse the decision. Thecancel_at_period_end flag is cleared, ends_at and canceled_at are unset, and the subscription goes back to renewing normally.
cURL
What customers can do
The Customer Portal exposes a subset of these actions to the customer, gated by your portal settings:- Cancel at period end is always available — this is the self-service guarantee the portal provides.
- Update the default payment method is always available — the primary way customers recover from a failed renewal.
- Change plan is available when Enable subscription plan changes is on.
- Change seats (for seat-based subscriptions) is available when Enable subscription seat management is on.
- Pause and resume is available when Enable subscription pause is on.

