Cancel every active store plan under the given account and notifies an admin via a brandPlanCancelled billing webhook. All matching StorePlans (status active/expired) are set to close with plan_end, cancel_subscription_at, and the reason stamped.
Auth: Both (Partner or Account), within the account's own tree. authentication group under the plans prefix, no extra route-level route guard. Two-layer scoping: (1) requires company_id to be an existing bundle_id=3 (account) Company passing an ownership check; (2) the controller additionally requires the auth user's company_id to equal the account id or the account's parent company id — else 403 (Permission denied). So an Account user cancels their own account; the parent Partner can cancel a child account. 404 if the account has no locations (Location not found.) or no payable active plans (No active plan found.).
Request body
| Field | Type | Required | Notes |
|---|---|---|---|
company_id | integer | Yes | Account ID; existing bundle_id=3 Company in the caller's hierarchy. |
cancelling_reason | string | Yes | One of: Price too high, Response quality not good enough, Another solution in place, Prefer to respond myself, Do not get enough reviews to justify it, Responses are not important to our business, Other. |
cancelling_reason_other | string | No | nullable, max 255. |
Rate limit: No rate limit.
Response — data.message.
Errors: 422 on validation failure.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
