Skip to main content
POST
/
accounts
Create a customer account
curl --request POST \
  --url https://api.brale.xyz/accounts \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --data '
{
  "business_name": "ABC Company Inc",
  "ein": "11-1111111",
  "address": {
    "street_line_1": "100 Example St",
    "city": "New York",
    "state": "NY",
    "zip": "10001",
    "country": "US"
  },
  "phone_number": "2125550182",
  "email": "[email protected]",
  "website": "https://abc.example",
  "beneficial_owners": [
    {
      "first_name": "Jane",
      "last_name": "Doe",
      "dob": "1980-05-12",
      "ssn": "222-22-2222",
      "email": "[email protected]",
      "phone_number": "212-555-0182",
      "address": {
        "street_line_1": "100 Example St",
        "city": "New York",
        "state": "NY",
        "zip": "10001",
        "country": "US"
      }
    }
  ],
  "business_controller": {
    "first_name": "Alicia",
    "last_name": "Ng",
    "dob": "1986-07-14",
    "ssn": "123-45-6789",
    "email": "[email protected]",
    "phone_number": "+12125550182",
    "address": {
      "street_line_1": "200 Market St",
      "city": "New York",
      "state": "NY",
      "zip": "10002",
      "country": "US"
    }
  },
  "tos_attestation": {
    "accepted_at": "2025-05-13T20:45:15Z",
    "version": "2025-04-01",
    "ip": "203.0.113.42",
    "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 ..."
  },
  "name": "My Account"
}
'
{
  "id": "2VcUIIsgARwVbEGlIYbhg6fGG57"
}
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.
FieldTypeRequiredDescription
doc_submission_idsarray of strings (KSUID)NoStaged submission IDs to link and upload as part of account creation.
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.

Example request with documents

{
  "business_name": "Acme Corp",
  "ein": "12-3456789",
  "address": {
    "street_line_1": "123 Main St",
    "city": "Des Moines",
    "state": "IA",
    "zip": "12345"
  },
  "phone_number": "2134678902",
  "email": "[email protected]",
  "website": "https://acme.example.com",
  "business_controller": {
    "first_name": "John",
    "last_name": "Doe",
    "ssn": "222-22-2222",
    "dob": "1981-01-25",
    "email": "[email protected]",
    "phone_number": "2154688987",
    "ownership_percentage": "50",
    "address": {
      "street_line_1": "456 Elm St",
      "city": "Chicago",
      "state": "IL",
      "zip": "60601"
    }
  },
  "beneficial_owners": [],
  "tos_attestation": {
    "version": "2025-04-01",
    "accepted_at": "2026-06-09T10:00:00Z"
  },
  "doc_submission_ids": [
    "3Ar9BnQCKIrB3SYjKGBzCtFs6XL",
    "3Ar9BnQCKIrB3SYjKGBzCtFs6XM"
  ]
}

Example response (201)

{
  "id": "3Ar9BnQCKIrB3SYjKGBzCtFs6XL",
  "name": "Acme Corp",
  "status": "pending",
  "created": "2026-06-09T10:00:00Z",
  "updated": "2026-06-09T10:00:00Z"
}
Linked documents are uploaded asynchronously after the account is created. The account status remains pending while Brale reviews the submission.

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_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"

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

Deprecated alias of beneficial_owners.

name
string
Example:

"My Account"

Response

201 - */*

Account successfully created

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

"2VcUIIsgARwVbEGlIYbhg6fGG57"