Skip to content

Get a brand's go-live checklist

The brands.go_live_checklist operation: GET /api/v1/brands/{id}/go_live_checklist in the REST API and the brands_go_live_checklist tool in the MCP server.

GET/api/v1/brands/{id}/go_live_checklist

Returns what the brand needs before it can go live, each requirement met or not with the reason:

  • plan_livemode: the organization's plan includes live mode;
  • org_status: the organization is active (not restricted, suspended, closing or closed);
  • legal_accepted: the current Terms of Service and Data Processing Agreement are accepted;
  • entity_verified: the legal entity's tax ID is verified;
  • invoice_settings: the entity's invoice details are complete;
  • home_registration: the entity's home registration is registered, with a number (live mode);
  • processor_live: the brand has a live processor connection whose last connection test passed (going live tests it again);
  • brand_urls: the brand has its terms and privacy URLs;
  • brand_status: the brand is in test mode (test_only), not suspended.

Live API keys and live checkout sessions are refused until the brand is live. Reading the checklist calls no processor.

At a glance

  • REST: GET /api/v1/brands/{id}/go_live_checklist
  • MCP tool: brands_go_live_checklist
  • Operation ID: brands.go_live_checklist
  • Scope: Organization, or one of its legal entities or brands
  • Permission: brands:read
  • Risk tier: read
  • Dry run: Not supported
  • Idempotency: Not needed (read only)
  • Modes: Test and live
  • Authentication: API key with the brands:read scope
  • Since: M12

Request

Path parameters

FieldTypeDescription
idbrd_… ID

Query parameters

This operation takes no query parameters.

Response

200 OK with a JSON object:

FieldTypeDescription
object"go_live_checklist"
brandIdbrd_… ID
entityIdent_… ID
brandStatusstring
readybooleanEvery requirement is met: brands.go_live will move the brand to live.
livebooleanThe brand is live already.
itemsarray of object
items[].requirementone of 10 values, e.g. plan_livemode, org_status, legal_accepted (all in the OpenAPI document)
items[].metboolean
items[].reasonstring or nullWhy it isn't met, in plain words.
processorobject or nullThe brand's live processor connection, with its last connection test.
legalVersionsobject
legalVersions.termsstring
legalVersions.dpastring
legalAcceptedobjectWhether the organization accepted the current version of each document.
legalAccepted.termsboolean
legalAccepted.dpaboolean

Examples

Two items left

HTTP
GET /api/v1/brands/brd_01m4tx5nj8emwbyf7y9vcf47x4/go_live_checklist
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "go_live_checklist",
  "brandId": "brd_01m4tx5nj8emwbyf7y9vcf47x4",
  "entityId": "ent_01m4tx5nj8emwbyf7y9vcf47x2",
  "brandStatus": "test_only",
  "ready": false,
  "live": false,
  "items": [
    {
      "requirement": "plan_livemode",
      "met": true,
      "reason": null
    },
    {
      "requirement": "org_status",
      "met": true,
      "reason": null
    },
    {
      "requirement": "legal_accepted",
      "met": false,
      "reason": "An owner or admin must accept the current version of the Data Processing Agreement."
    },
    {
      "requirement": "entity_verified",
      "met": true,
      "reason": null
    },
    {
      "requirement": "invoice_settings",
      "met": true,
      "reason": null
    },
    {
      "requirement": "home_registration",
      "met": true,
      "reason": null
    },
    {
      "requirement": "processor_live",
      "met": true,
      "reason": null
    },
    {
      "requirement": "brand_urls",
      "met": false,
      "reason": "The brand needs its privacy URL."
    },
    {
      "requirement": "brand_status",
      "met": true,
      "reason": null
    }
  ],
  "processor": {
    "connectionId": "pcon_01m4tx5nj8emwbyf7y9vcf47xd",
    "processor": "stripe",
    "status": "active",
    "lastTestOk": true,
    "lastTestAt": "2026-10-26T09:00:00.000Z"
  },
  "legalVersions": {
    "terms": "1.0",
    "dpa": "1.0"
  },
  "legalAccepted": {
    "terms": true,
    "dpa": false
  }
}

Errors

CodeHTTP statusWhenWhat to do
resource_not_found404No such brand in your scope.Check the ID and that your credentials are scoped to the right organization, entity, brand and mode.
permission_denied403You can't read this brand.Ask an organization owner or admin for a role or scope that allows this action.

It can also return these common errors: validation_failed, api_version_unsupported, authentication_required, api_key_invalid, dry_run_not_supported, rate_limited, internal_error.