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 sendall_account: 1.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
POST /api/v1/billing/checkout-details
Authentication
Partner token
partner_idmust be a partner inside your own tree: your partner, or a sub-partner under it. Anything else is rejected with422.- Every id in
account_idsmust be an account inside your tree; otherwise422.
Rate limit
120 requests per minute, counted per user (the token’s user). See Rate limits.
Request parameters
None.
Request body
| Field | Type | Required | Notes |
|---|---|---|---|
plan_id | integer | Yes | The plan to price. Must exist. |
partner_id | integer | Yes | The partner whose locations to count. Must be a partner inside your tree. Locations in accounts under its sub-partners are counted too. |
all_account | integer | Yes | 1: every account under the partner. 0: only the accounts in account_ids. |
account_ids | array of integers | Yes, when all_account is 0 | The accounts to include. Each must be an account inside your tree. |
cancel_plan | integer | No | 1: 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.
| Field | Type | Description |
|---|---|---|
plan_id | integer | The plan's id. |
plan_name | string | The plan's name. |
plan_short_info | string or null | The plan's short description. |
price | number | The plan's price. |
original_price | number | The plan's original price. |
total_location | integer | How many locations the plan would apply to. |
plan_start | string | Today, as YYYY-MM-DD. |
plan_end | string | The last day of this month, as YYYY-MM-DD. |
store_ids | array of integers | The 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."
}| Status | Meaning |
|---|---|
200 | The plan's price and the locations it would apply to. |
401 | The token is missing, expired or invalid. |
422 | A field is missing or invalid, or the partner or an account is outside your tree. |
429 | More than 120 requests in a minute from this user. |
500 | Unexpected 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}'Updated 17 days ago
