Get billing detail for a store

Overview

Get per-feature usage and cost breakdown for a single store under the authenticated partner: each enabled plan feature with its usage count, limit, percentage consumed, status, and period cost.

Prerequisites

  • A bearer token. Callable with Partner tokens.
  • The storeId of the record you are targeting.

Base URL

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

Endpoint

GET /api/v1/partner/billing/store/{storeId}

Authentication

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

  • Who can call it: Partner tokens.

  • Mounted under the partner/billing route group.

  • The endpoint resolves the caller's partner by getAuthPartner (403 if none).

  • The endpoint loads the {storeId} store (404 if missing) and ownership is verified.

  • The endpoint returns 403 unless that partner equals the caller's partner.

Rate limit

  • No rate limit.

Path parameters

ParameterTypeRequiredDescription
storeIdintegerRequiredDigits only.

Query parameters

  • Query: year (integer, optional) — 2000–2100; defaults to current year.
  • Query: month (integer, optional) — 1–12; defaults to current month.

Response

  • data.store_id (int).
  • data.store_name (string|null).
  • data.period (string) — YYYY-MM.
  • data.features (array) — one row per enabled plan feature: feature_name (string), usage (int), limit (int|null — service_limit for usage-based, included_units for plan-based), percentage (number|null), status (string: within_limits / approaching / overage / hard_stop_over_limit / halted), cost (number — period sum of client_amount for that store+feature).

200 Success · 200

{
  "data": {
    "data": {
      "store_id": 26,
      "store_name": "Acme Sydney CBD",
      "period": "2026-05",
      "features": []
    }
  }
}

403 Store not under partner · 403

{
  "message": "Forbidden",
  "status": "error",
  "errors": "Store does not belong to your partner."
}

404 Store not found · 404

{
  "message": "Not Found",
  "status": "error",
  "errors": "Store not found."
}

Errors

StatusMeaning
401The bearer token is missing, expired or invalid
403Store not under partner
404Store not found
422The request failed validation — the response names the fields
500Unexpected server error

Example request

curl --request GET \
  --url "https://production-api.shoutaboutus.com/api/v1/partner/billing/store/123?" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json'

Did this page help you?