Cancel a plan
Overview
End the plan for every location in an account. To cancel only some locations, use Cancel a plan (selected locations).
You'll need the account's company_id and a cancelling_reason.
The plans close immediately (plan_end is set to now), so review collection and posting stop straight away. Your account team is notified.
Cancel before you remove the account's locations. Once it has no active or pending locations the call returns
404Location not found.. Removing a location already closes that location's plan, so nothing keeps billing, but the account-level cancellation (reason and notification) isn't recorded.
Prerequisites
- A Partner or Account token. See Authentication.
- The account's id (
company_id).
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
POST /api/v1/plans/cancel-account-subscription
Authentication
Partner or Account token
company_idmust be an existing account inside your own account tree; otherwise422.- The caller must be the account itself or its direct parent. An Account token cancels its own account; the partner directly above an account can cancel it. A partner higher up the tree gets
403.
Rate limit
This endpoint has no rate limit.
Request parameters
None.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
company_id | integer | Yes | The account whose plan to cancel. |
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 | More detail, e.g. with Other. Max 255 characters. |
Request payload
{
"company_id": 5994,
"cancelling_reason": "Price too high",
"cancelling_reason_other": "Switching to a competitor"
}Response body
The payload is inside data.
| Field | Type | Description |
|---|---|---|
message | string | Subscription cancelled successfully. |
Response payload
{
"data": {
"message": "Subscription cancelled successfully."
}
}Examples
Success payload
See Response payload.
Error payload
403 Permission denied
You aren't the account or its direct parent.
{
"message": "Forbidden",
"status": "error",
"errors": "Permission denied"
}404 Location not found
The account has no active or pending locations.
{
"message": "Not Found",
"status": "error",
"errors": "Location not found."
}404 No active plan found
None of the account's locations is paid for by the account or the partner.
{
"message": "Not Found",
"status": "error",
"errors": "No active plan found."
}422 Invalid account or reason
{
"message": "The selected company id is invalid. (and 2 more errors)",
"errors": {
"company_id": [
"The selected company id is invalid.",
"The selected company id does not belong to your company hierarchy."
],
"cancelling_reason": ["The selected cancelling reason is invalid."]
}
}| Status | Meaning |
|---|---|
200 | The account's plans are cancelled. |
401 | The token is missing, expired or invalid. |
403 | You aren't the account or its direct parent (Permission denied). |
404 | No active or pending locations (Location not found.), or none paid by the account or partner (No active plan found.). |
422 | The request failed validation. The response names the fields. |
500 | Unexpected server error. |
Example request
curl --request POST \
--url "https://production-api.shoutaboutus.com/api/v1/plans/cancel-account-subscription" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"company_id": 5994, "cancelling_reason": "Price too high", "cancelling_reason_other": "Switching to a competitor"}'Updated 17 days ago
