v2.accounts

Create a connected account, or invite a seller (platform key)

Platform keys only. Two bodies share this operation. { email } alone (Fase 2) creates the same platform_invites row the dashboard creates, acting as the platform owner, and answers 201 account_invite with invite_url. Any other field makes the body the full seller onboarding (Fase 3, V2AccountCreate). What happens then depends on the environment of the key — sandbox simula o cadastro; live cria conta, loja e cadastro de recebimento reais. With a cooud_sk_sandbox_* key the onboarding is SIMULATED, like the sandbox checkout simulator (same contract, nothing real): the body goes through exactly the same validation, one onboarding row is recorded with livemode: false and a simulated store id, and the 201 account says state: active, onboarding_state: done, empty requirements, payouts_enabled and charges_enabled true and livemode: false — no user, store, Stripe account or membership is created and nothing reaches horizon, orion, Stripe or the platform directory; the email is echoed only on this response (Cooud keeps only its hash), and the simulated account can then be listed, retrieved and used as Cooud-Account by the sandbox key. With a cooud_sk_live_* key (live is enabled by default for every platform; Cooud can suspend one) Cooud creates the user, the store, the Stripe Custom account with KYC, bank account, documents and terms, and the platform membership with the fee the seller accepted — the seller never signs in to Cooud. The live onboarding is resumable: each step is persisted before the next, and repeating the same POST with the same email (on this platform and environment) resumes from the last completed step; the Idempotency-Key never replays a response — it only refuses its reuse with another e-mail (409 idempotency_key_in_use) — instead of creating anything twice; the sandbox registry is separate, so an e-mail or key used to simulate never blocks the live onboarding. A completed onboarding answers 201 account with onboarding_state: done, requirements, payouts_enabled, charges_enabled and livemode; an infrastructure failure in the middle answers 202 account_onboarding (state: incomplete, next_step, last_error); a field Stripe refuses answers 400 parameter_invalid with param on the body path (individual.dob, bank_account.routing_number, documents.identity_front) and advice_code: onboarding_incomplete — send the corrected body to resume. documents must reference files uploaded by the same key: file_… ids with a live key, file_sim_… ids with a sandbox key. Unknown fields are refused with parameter_unknown at every level; metadata.simulated is reserved. Since 2026-09-10 the full body also takes an optional business_profile (mcc, product_description, url — what Stripe leaves in requirements.currently_due of a Custom BR account and what keeps payouts_enabled false), written on the Stripe account right after it is created, and the store the onboarding creates is recorded in Cooud's store records at once — GET /accounts lists the new account as soon as the 201 answers. A step that fails after creating something (the store, the Stripe account) keeps the created id on the onboarding, so the resumed POST never creates a second one. store.currency accepts BRL, USD, EUR, GBP, CHF and ARS since 2026-09-10 (before, only BRL); it is the currency the seller's checkout sessions must use. Since 2026-10-12, gateway: cooud_llc (V2AccountCreateLlc) onboards the seller through Cooud LLC on platforms Cooud enabled for it: a minimal body (email, country, business_type, the accepted fee and tos_acceptance), a store in USD that sells through Cooud LLC, a Cooud LLC (Stripe Express) account and the membership; Stripe collects the rest of the requirements through onboarding_session/onboarding_link, so the 201 account says gateway, country, default_currency, transfers_enabled and requirement_collection: stripe. gateway: cooud, or no gateway, is the Cooud Brasil onboarding exactly as before. One e-mail holds one onboarding per platform and environment: an e-mail that already has the Cooud Brasil onboarding is refused for Cooud LLC with 409 account_exists_on_other_gateway.

post/accounts

Request

  • Base URL: https://api.cooud.com/v2
  • URL: https://api.cooud.com/v2/accounts
  • Auth: HTTP bearer

Headers

Cooud-Compat-Datestring date required

Required per-request compat-date. Format: ISO calendar date YYYY-MM-DD. Merchants pinned to an older date have their request and response transformed by every gate whose appliesAfter is strictly greater than this date.

Request body

OR
OR

Response

account_invite for { email }; account (with onboarding_state: done, requirements, payouts_enabled, charges_enabled, livemode, metadata) for the full onboarding — a simulated account (livemode: false) under a sandbox key, a real one under a live key. A Cooud LLC account (gateway: cooud_llc) also carries country, default_currency, transfers_enabled and requirement_collection: stripe: the seller provides requirements.currently_due to Stripe through POST /accounts/{id}/onboarding_session or onboarding_link.

OR

Changes

No recorded changes to this operation across all 1 revision of this API.