Update Subscription
Update subscription-level fields.
Updates subscription metadata and settings. Some fields trigger Restate
lifecycle re-evaluation:
- **cancel_at_period_end**: Changes next action (STOP vs SCHEDULE_BILLING)
- **trial_end/trial_period_days**: Changes SCHEDULE_ACTIVATION timing
Fields that do NOT trigger lifecycle re-evaluation:
- **description**: Just metadata
- **default_payment_method_id**: Affects payment collection, not scheduling
- **coupon_id/promotion_code**: Only affects invoice amounts
Note: To update subscription items (prices, quantities), use the separate
PATCH /{subscription_id}/items endpoint which handles proration.
Works for both User and API Key authentication.
Account access is automatically validated via endpoint dependency.
Authentication
AuthorizationBearer
Bearer authentication of the form Bearer <token>, where token is your auth token.
Path parameters
subscription_id
account_id
Request
This endpoint expects an object.
description
default_payment_method_id
statement_descriptor_suffix
cancel_at_period_end
trial_end
trial_period_days
coupon_id
promotion_code
custom_fields
Custom field values to set on this subscription. Keys must match defined field keys for the subscription entity type. Set a key to null to delete that field's value.
collection_method
Collection method for invoices (charge_automatically or send_invoice)
net_d
Payment terms in days (Net X). 0 means due immediately.
show_payment_link
When true, invoices generated for this subscription will include the 'Pay online' link on the PDF and email.
metadata
Replaces existing metadata entirely. Use empty dict to clear.
Response
Successful Response
subscription_id
updated_fields
lifecycle_triggered
voided_invoice_ids
Errors
409
Conflict Error
422
Unprocessable Entity Error