Skip to content

Client accounts under your brand

A client account holds the products an agency builds for one client, on the client's own Stripe, behind a console that carries the agency's brand.

A client account, opened to handed over

Filled: what the client's people see, always under your brand.

What each client may do

ClientAccount.grant sets what a client's people may do. Each grant holds the ones above it in this table.

GrantA client's person mayTypical for
readSee its products, usage, Customers and a statement per periodEvery client
pricesChange the Offer's prices and plans, which deploy as a reviewed changeA client that runs its own pricing
deployDeploy a change your team prepared, after its reviewA client with its own developer
ownAccept the product, which moves it to its own workspaceThe end of an engagement

A client never sees another client, your other products or your workspace's plan. Your team sees every client. Every act a client's person takes in the client console is a Verb on the platform API, open to its agents under their own token.

The console under your brand

Workspace.brand sets one brand for every client console and every email it sends, on Team and Scale.

PartSet byWhat a client's people see
Name, logo and colourname, logo, colorYour mark on every screen, receipt and email; nothing names APIs.Dev
The addressdomain, one of your Domainsconsole.yourstudio.com, checked once by one DNS record
Sign-inYour Domain's sign-in, with passkeys and SSOA sign-in page and its emails from you
Sendingfrom, an address on your DomainInvitations, statements and alerts from that address
Helpsupport, an address or a URLYour own help, never the platform's

When a request is refused

Each refusal is a Problem with its cure, and changes nothing that serves.

What happensThe answer
Your team opens a client account past what the plan includes402 client_limit, with an add-on in offers
A product of a client goes Live, or charges, before the client connects Stripe409 stripe_not_connected; it keeps serving in Test
A client's person deploys, or changes prices, above the account's grant403 grant_exceeded, naming the grant it needs
Anyone deploys or reprices a product whose handoff waits409 handoff_open, with the handoff's link
The owner never accepts the invitationThe account turns expired after 14 days; ClientAccount.invite sends a new one
Your workspace drops below TeamEach console turns read-only and no account opens; every client keeps its Stripe and its Customers

A client's Customers never meet any of these. Its products keep serving whatever the account's state.

A studio and its first client

A studio brands its console, then opens an account for a client with a read grant for its finance lead.

Body
11 lines
{
  "brand": {
    "name": "Northwind Studio",
    "logo": "https://northwind.example.com/logo.svg",
    "color": "#1F5FBF",
    "domain": "console.northwind.example.com",
    "from": "clients@northwind.example.com",
    "support": "help@northwind.example.com"
  },
  "client": { "name": "Globex", "owner": "finance@globex.com", "grant": "read" }
}
Response
HTTP/1.1 201 Created
Content-Type: application/json
X-Cost: price=0, currency="USD"
X-Request-Id: req_b9e04d27a3c1f85e6d02

{
  "id": "cla_7",
  "client": "Globex",
  "state": "invited",
  "console": "https://console.northwind.example.com/globex",
  "grant": "read",
  "stripe": "connect_pending",
  "expires": "2026-11-11T10:00:00Z"
}

That is PUT https://apis.dev/v1/workspace/brand, then POST https://apis.dev/v1/client-accounts.

Numbers, statements and handoff

WhatHow many, or how long
Client accounts10 with Team and 25 with Scale; each past them is an add-on on /pricing
People in one client account50, one of them its owner
An invitation14 days, then expired
A logoSVG or PNG, 200 KB at most
A handoffWaits 30 days for the owner, then lapses and the product stays where it was

Each client gets a statement per period in your name: its products' usage, revenue and the platform's charges.

A handoff ends the build. Kept, the product stays in your workspace and the client keeps its console. Moved, it goes to the client's workspace by transfer, and nothing its Customers see changes.