Preview partner charges

Overview

Preview what moving locations onto a plan would cost for the rest of this month, before you check out.

Send the plan (plan_id), the partner (partner_id) and either all_account: 1 or a list of account_ids. You get the plan's price and how many of the partner's partner-paid, active or pending locations it would apply to (with their ids), for today through the end of the month. With cancel_plan: 1 it counts the locations that already have a cancellation scheduled instead.

It's a single total for one plan; it isn't broken down by account or location.

Prerequisites

  • A Partner token. See Authentication.
  • The plan's id (plan_id), and the ids of the accounts to include unless you send all_account: 1.

Base URL

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

Endpoint

POST /api/v1/billing/checkout-details

Authentication

Partner token

  • partner_id must be a partner inside your own tree: your partner, or a sub-partner under it. Anything else is rejected with 422.
  • Every id in account_ids must be an account inside your tree; otherwise 422.

Rate limit

120 requests per minute, counted per user (the token’s user). See Rate limits.

Request parameters

None.

Request body

FieldTypeRequiredNotes
plan_idintegerYesThe plan to price. Must exist.
partner_idintegerYesThe partner whose locations to count. Must be a partner inside your tree. Locations in accounts under its sub-partners are counted too.
all_accountintegerYes1: every account under the partner. 0: only the accounts in account_ids.
account_idsarray of integersYes, when all_account is 0The accounts to include. Each must be an account inside your tree.
cancel_planintegerNo1: count only locations that already have a cancellation scheduled. 0 or left out: count only locations without one.

Request payload

{
  "plan_id": 3,
  "partner_id": 123,
  "all_account": 0,
  "account_ids": [
    5994
  ],
  "cancel_plan": 0
}

Response body

The payload is inside data.data.

FieldTypeDescription
plan_idintegerThe plan's id.
plan_namestringThe plan's name.
plan_short_infostring or nullThe plan's short description.
pricenumberThe plan's price.
original_pricenumberThe plan's original price.
total_locationintegerHow many locations the plan would apply to.
plan_startstringToday, as YYYY-MM-DD.
plan_endstringThe last day of this month, as YYYY-MM-DD.
store_idsarray of integersThe ids of the locations counted in total_location.

Response payload

{
  "data": {
    "data": {
      "plan_id": 3,
      "plan_name": "ResponseScribe",
      "plan_short_info": "Up to 50 responses/month",
      "price": 100,
      "original_price": 100,
      "total_location": 2,
      "plan_start": "2026-10-01",
      "plan_end": "2026-10-31",
      "store_ids": [
        3007,
        3008
      ]
    }
  }
}

Examples

Success payload

See Response payload.

Error payload

422 Required fields missing

{
  "message": "The plan id field is required. (and 2 more errors)",
  "errors": {
    "plan_id": [
      "The plan id field is required."
    ],
    "partner_id": [
      "The partner id field is required."
    ],
    "all_account": [
      "The all account field is required."
    ]
  }
}

422 Unknown plan, not a partner, no accounts

{
  "message": "The selected plan id is invalid. (and 2 more errors)",
  "errors": {
    "plan_id": [
      "The selected plan id is invalid."
    ],
    "partner_id": [
      "The selected partner id is invalid."
    ],
    "account_ids": [
      "The account ids field is required when all account is 0."
    ]
  }
}

429 Too many requests

{
  "message": "Too Many Attempts."
}
StatusMeaning
200The plan's price and the locations it would apply to.
401The token is missing, expired or invalid.
422A field is missing or invalid, or the partner or an account is outside your tree.
429More than 120 requests in a minute from this user.
500Unexpected server error.

Example request

curl --request POST \
  --url "https://production-api.shoutaboutus.com/api/v1/billing/checkout-details" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"plan_id": 3, "partner_id": 123, "all_account": 0, "account_ids": [5994], "cancel_plan": 0}'

Did this page help you?