Partner checkout details

Overview

Returns a partner-level checkout preview for a plan: the plan pricing plus the count and list of the partner's active/pending stores (where the store's who_will_pay is partner) that the plan would apply to. cancel_plan filters the store set by whether the store's latest plan is already flagged for cancellation. Read-only preview — nothing is charged or written.

Prerequisites

  • A bearer token in the Authorization header.

Base URL

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

Endpoint

POST /api/v1/billing/checkout-details

Authentication

  • Requires a bearer token in the Authorization: Bearer <bearer-token> header.

  • Bearer partner token.

  • partner_id must be a bundle_id = 1 partner company inside the caller's hierarchy (exists + an ownership check).

  • Each account_ids[] must be a bundle_id = 3 account company in the caller's hierarchy.

Rate limit

  • No rate limit.

Request body

FieldTypeRequiredDescription
plan_idintegerRequiredMust be an existing plan.
partner_idintegerRequiredbundle_id = 1 partner company in caller's hierarchy. Matched as partner.id OR partner.company_id.
all_accountinteger (0|1)Required1 = all accounts under the partner; 0 = only account_ids.
account_idsinteger[]Required if all_account = 0Each a bundle_id = 3 account company in caller's hierarchy.
cancel_planinteger (0|1)Optional0/empty = only stores NOT flagged for cancellation; 1 = only stores whose latest plan has a cancel_subscription_at.
{
  "plan_id": 3,
  "partner_id": 123,
  "all_account": 0,
  "account_ids": [
    456
  ],
  "cancel_plan": 0
}

How it works

  • 200 — double-wrapped envelope { data: { data: {.} } } (controller passes ['data' =>.] into the { data. } responder). Payload: plan_id, plan_name, plan_short_info, price, original_price, total_location (matched store count), plan_start (today), plan_end (end of month), store_ids (matched store ids).
  • 422 — validation failure (missing/invalid plan, partner out of scope, account_ids required when all_account = 0).

Response

200 OK · 200

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

422 Validation error · 422

{
  "message": "The account ids field is required when all account is 0.",
  "errors": {
    "account_ids": [
      "The account ids field is required when all account is 0."
    ]
  }
}

Errors

StatusMeaning
401The bearer token is missing, expired or invalid
422Validation error
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": [456], "cancel_plan": 0}'

Did this page help you?