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 404 Location 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

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://development-api.shoutaboutus.com

Endpoint

POST /api/v1/plans/cancel-account-subscription

Authentication

Partner or Account token

  • company_id must be an existing account inside your own account tree; otherwise 422.
  • 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

FieldTypeRequiredDescription
company_idintegerYesThe account whose plan to cancel.
cancelling_reasonstringYesOne 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_otherstringNoMore 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.

FieldTypeDescription
messagestringSubscription 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."]
  }
}
StatusMeaning
200The account's plans are cancelled.
401The token is missing, expired or invalid.
403You aren't the account or its direct parent (Permission denied).
404No active or pending locations (Location not found.), or none paid by the account or partner (No active plan found.).
422The request failed validation. The response names the fields.
500Unexpected 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"}'

Did this page help you?