---
title: "POST /v1/billing.multi_update"
method: POST
path: "/v1/billing.multi_update"
tags: ["billing"]
---

# POST /v1/billing.multi_update

`POST /v1/billing.multi_update`

Updates multiple plans on a customer in a single request. Currently supports cancel actions (immediately, end of cycle, or uncancel) across one or more subscriptions.

Use this endpoint to cancel or uncancel several plans atomically in one call — for example canceling a main plan together with its add-ons, or plans across multiple entities.

## Headers

- `x-api-version` string, required

## Request body

- object
  - `customer_id` string, required — The ID of the customer to update plans for.
  - `entity_id` string — The ID of the entity to update plans for. Individual updates can override this with their own entity_id.
  - `updates` object[], required — The list of plan updates to apply to the customer.
    - `plan_id` string — The ID of the plan to update. Optional if subscription_id is provided.
    - `subscription_id` string — A unique ID to identify the subscription to update. Useful when a customer has multiple products with the same plan.
    - `entity_id` string — The ID of the entity this update targets. Overrides the top-level entity_id for this update.
    - `cancel_action` 'cancel_immediately' | 'cancel_end_of_cycle' | 'uncancel', required — Action to perform for cancellation. 'cancel_immediately' cancels now with prorated refund, 'cancel_end_of_cycle' cancels at period end, 'uncancel' reverses a pending cancellation.
    - `proration_behavior` 'prorate_immediately' | 'none' — How to handle proration for this update. 'prorate_immediately' charges/credits prorated amounts now, 'none' skips creating any charges.

## Response `200`

OK

- object
  - `customer_id` string, required — The ID of the customer.
  - `entity_id` string — The ID of the entity, if the plan was attached to an entity.
  - `invoice` object — Invoice details if an invoice was created. Only present when a charge was made.
    - `status` string, nullable, required — The status of the invoice (e.g., 'paid', 'open', 'draft').
    - `stripe_id` string, required — The Stripe invoice ID.
    - `total` number, required — The total amount of the invoice in cents.
    - `currency` string, required — The three-letter ISO currency code (e.g., 'usd').
    - `hosted_invoice_url` string, nullable, required — URL to the hosted invoice page where the customer can view and pay the invoice.
  - `payment_url` string, nullable, required — URL to redirect the customer to complete payment. Null if no payment action is required.
  - `required_action` object — Details about any action required to complete the payment. Present when the payment could not be processed automatically.
    - `code` '3ds_required' | 'payment_method_required' | 'payment_failed' | 'payment_processing', required — The type of action required to complete the payment.
    - `reason` string, required — A human-readable explanation of why this action is required.

---

[API](https://skmtc.net/useautumn/apis/autumn-api.md) · [All operations](https://skmtc.net/useautumn/apis/autumn-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/useautumn/autumn-api/revisions/29536933c0dc/schema)
