Skip to main content
POST
Use the playground below to try this endpoint directly, or review the OpenAPI details in the right panel.
Verification documents: Stage KYB documents first, then either pass the returned doc_submission_ids on this request or link them afterward. If Brale’s review later requires more documents, subscribe to account.verification.documents_required (see Webhook Events) or poll required documents — stage and link those documents the same way. When verification passes, Brale sends account.verification.completed and the account status becomes complete.

Linking documents at creation

Include optional doc_submission_ids in the request body to link staged document submissions when the account is created. Each ID must come from a prior Stage a Verification Document call (POST /documents). Omit the field to create the account without documents and link them later. doc_submission_ids is not supported for testnet-only clients or self-attested accounts. In those cases, omit the field or link documents after creation if supported for your account type. For the full account creation payload (business details, controller, beneficial owners, TOS attestation), see Accounts. For the individual (KYC) path, see Accounts — Creating an individual account.

Choosing between a business and an individual account

POST /accounts accepts three optional dimension fields — entity_type, account_type, and verification_mode — that select between a KYB-verified business account with Brale-custodied wallets and a KYC-verified individual account without custody. Omitting all three preserves today’s business behavior. See Account types for the full matrix.

Example request with documents (business)

Example response (201)

Linked documents are uploaded asynchronously after the account is created. The account status remains pending while Brale reviews the submission.

Example request (individual)

Create a KYC-verified individual account. The individual object and tos_attestation are required. Business-only fields (business_name, ein, website, business_controller, beneficial_owners) must not be sent on this path.

Example response, individual (201)

The account’s name is derived from the individual’s first and last name. status transitions to complete when KYC succeeds and account.verification.completed fires. See Individual accounts for the end-to-end workflow, including the receive-only constraints on transactional accounts.

Required scope

accounts:write

Authorizations

Authorization
string
header
required

Use the Bearer token returned from the Auth endpoint via OAuth2 client_credentials flow. Include the token in the "Authorization: Bearer " header.

Headers

Idempotency-Key
string
required

A unique string used to prevent duplicate operations. Each POST request must use a new idempotency key. Use a UUIDv4 string. Example: idemp-123e4567-e89b-12d3-a456-426614174000

Body

application/json

Business (KYB) account creation payload. This is the default path when entity_type is omitted, or when it is explicitly set to business with account_type: custodial and verification_mode: standard.

business_name
string
required
Example:

"My Customer"

ein
string
required
Example:

"123456789"

address
USStreetAddress · object
required
business_controller
ControllingParty · object
required
email
string
required
phone_number
string
required
Example:

"515-555-1212"

tos_attestation
EndUserTosAttestation · object
required
website
string
required
Example:

"https://example.com"

entity_type
enum<string>

Optional discriminator. When omitted, defaults to business.

Available options:
business
Example:

"business"

account_type
enum<string>

Optional. When omitted, defaults to custodial for business accounts.

Available options:
custodial
Example:

"custodial"

verification_mode
enum<string>

Optional. When omitted, defaults to standard.

Available options:
standard
Example:

"standard"

beneficial_owners
ControllingParty · object[] | null
ultimate_beneficial_owners
ControllingParty · object[]
deprecated

Deprecated alias of beneficial_owners.

name
string
Example:

"My Account"

doc_submission_ids
string<ksuid>[]

Optional pre-staged verification document submission IDs to link on creation.

Pattern: ^[a-zA-Z0-9]{26}$

Response

Account successfully created

id
string<ksuid>
Pattern: ^[a-zA-Z0-9]{26}$
Example:

"2VcUIIsgARwVbEGlIYbhg6fGG57"