Skip to main content
Use billing.update to modify an existing subscription. This is different from billing.attach which is for attaching new plans or changing between plans. When to use billing.update:
  • Update feature quantities — if your plan contains prepaid features (like seats)
  • Cancel or uncancel — cancel a subscription immediately or at end of cycle
  • Customize the plan — modify pricing or feature configuration (advanced)

Updating prepaid feature quantities

Prepaid features are features where customers pay upfront for a quantity (e.g., seats, team members). Here’s an example plan with a prepaid seats feature: To update the quantity of seats for a customer:

Canceling a subscription

Use cancelAction to cancel or uncancel a subscription:

Switching between invoicing and charging automatically

Call billing.update with invoice_mode as the only change to switch how an existing subscription is collected. The switch applies from the next renewal: nothing is charged or invoiced now, and invoices that are already open keep their payment method.
  • Switching to charging automatically requires a payment method on file; otherwise the request is rejected.
  • payment_method_types overrides your organization’s default payment methods. Omit it to keep the defaults.
  • If the request changes anything else (plan, quantities, items), invoice_mode describes how that change is billed instead of switching the subscription.
To change the payment methods on an invoice that is already draft or open, use invoices.update.

How billing works

By default, updating a subscription with billing changes will generate an invoice:
  • Increasing quantity (e.g., adding seats) charges a prorated amount for the remainder of the billing cycle
  • Decreasing quantity (e.g., removing seats) generates a credit applied to the next invoice
  • Canceling immediately generates a negative invoice granting credits to the customer

Previewing changes before executing

Similar to billing.previewAttach, you can use billing.previewUpdate to see exactly what will be charged before making changes. This returns line items and totals that you can display in a confirmation UI.

Skipping charges

If you want to update a subscription without creating any charges or credits, pass prorationBehavior: "none":
This is useful for administrative adjustments or when you want to handle billing separately.