- A paid plan is active — Personal, Business or Scale, via Stripe Checkout.
- A human has verified their identity — Stripe Identity’s hosted flow: a government ID document plus a matching selfie.
- The acceptable-use policy is accepted — recorded as a timestamp, not a checkbox that evaporates.
Where you start
Sign up atapp.farthing.ai. That creates your workspace — sandbox plan, one per account —
and mints its first ck_test_ key, shown exactly once like every key this platform issues.
Everything on the API works from that moment against the sandbox store; nothing about going
live is a prerequisite for building.
A tenant created with the curl-only
POST /v1/signup has no
dashboard account attached, and there is no way to attach one later — so it can never be
activated. If you started there and want to go live, sign up at the dashboard and move your
integration to the workspace it creates (buyer profiles and webhooks are quick to recreate;
keys are per-tenant anyway).The three facts
Choose a plan
From the billing page, pick a plan and pay through Stripe Checkout. The subscription that creates carries both the platform fee and the $1.00-per-completed-checkout meter — one subscription, one invoice.Verify identity
The billing page hands you off to Stripe Identity’s hosted flow: photograph a government ID document, take a selfie, and Stripe checks that they match. Two things worth stating plainly:- Your ID documents are held by Stripe, never by Farthing. We never receive, store or proxy the images — we learn only the verdict. That keeps an entire class of PII off this platform, which is better for you than any promise we could make about how carefully we would store it.
- A failed check is retryable. Verification sits at
pendinguntil Stripe reaches a verdict; a blurry photo or a cut-off document sends it back topending, not to a rejection — a typo’d document is not fraud. Try again from the same page.
Accept the AUP
One click on the billing page, recorded with a timestamp. This is often the last of the three facts, so it is the moment many workspaces go live — the response tells you immediately:activation is "not_ready" when other facts are still missing, and "already_live" if
the workspace was activated earlier.
Watching the checklist
The dashboard renders the road to live fromGET /v1/billing, which names exactly what is
still missing in remaining:
Before — sandbox workspace, nothing done yet
After — live on Personal
limits are null until activation applies the plan’s numbers (the
defaults hold in the meantime), and maxCheckoutCostUsd is a
decimal string like every money amount on this API — null on plans without a ceiling.
Because payment and verification are confirmed to us asynchronously by Stripe, the last fact
can land a short while after you finish the flow — refresh the checklist rather than
assuming the redirect back to the dashboard means it is done.
Your first live key
Mint it from the dashboard once the workspace is live. A dashboard session on an activated workspace is a live-mode credential, so it can createck_live_ keys.
What has not changed:
- A test key still cannot become or mint a live key. That refusal predates activation being self-serve and it stays — authority passes down, never sideways. See minting a live key.
- Your existing
ck_test_keys stay confined to the sandbox store forever. Keep them for CI and staging; a leaked test key still cannot spend money. See Sandbox.
ck_live_ key. Nothing else in your integration changes.
If the subscription ends
The workspace reverts to sandbox. Deliberately not suspension:- Your data — checkouts, buyer profiles, webhooks, keys — stays where it is.
- Test keys and the dashboard keep working.
- Live checkouts stop, because live requires a paid plan. Live keys still authenticate; they are simply confined to the sandbox store like everything else on a sandbox workspace.
403 Tenant suspended.
The endpoints under all this
The dashboard drives ordinary API routes; there is no hidden admin surface. All of them are session-only — an API key is refused with401, because plans, identity and terms are
decisions the accountable human makes in a browser, and a leaked agent key must not be able
to make them. See dashboard sessions.