> ## Documentation Index
> Fetch the complete documentation index at: https://docs.brale.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a customer account

> Creates a new customer (account) with the required KYC/KYB details.

Use the playground below to try this endpoint directly, or review the OpenAPI details in the right panel.

> [!NOTE]
>
> **Verification documents:** [Stage KYB documents](https://docs.brale.xyz/api-reference/brale/stage-verification-document.md) first, then either pass the returned `doc_submission_ids` on this request or [link them afterward](https://docs.brale.xyz/api-reference/brale/link-verification-documents.md). If Brale's review later requires more documents, subscribe to `account.verification.documents_required` (see [Webhook Events](https://docs.brale.xyz/webhooks/webhook-events.md#accountverificationdocuments_required)) or [poll required documents](https://docs.brale.xyz/api-reference/brale/list-verification-documents.md) — 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](https://docs.brale.xyz/api-reference/brale/stage-verification-document.md) call (`POST /documents`). Omit the field to create the account without documents and [link them later](https://docs.brale.xyz/api-reference/brale/link-verification-documents.md).

| Field | Type | Required | Description |
| - | - | - | - |
| `doc_submission_ids` | array of strings (KSUID) | No | Staged 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](https://docs.brale.xyz/key-concepts/accounts.md#creating-a-business-account). The example below is a US controller and owner; for parties outside the US, see [Non-US controllers and beneficial owners](https://docs.brale.xyz/key-concepts/accounts.md#non-us-controllers-and-beneficial-owners). For a business outside the US, see [Creating a non-US business account](https://docs.brale.xyz/key-concepts/accounts.md#creating-a-non-us-business-account). For the individual (KYC) path, see [Accounts — Creating an individual account](https://docs.brale.xyz/key-concepts/accounts.md#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 the account shape. All eight combinations are supported: business or individual, custodial or transactional, `standard` or `reliance`. Reliance is enabled per managing account by Brale and is not self-serve; `verification_mode: "bypass"` is not supported for any combination. Omitting all three fields preserves the default business custodial behavior. See [Account types](https://docs.brale.xyz/key-concepts/account-types.md) for the full matrix and [Account availability](https://docs.brale.xyz/coverage/account-availability.md) for the U.S. states and approved countries where each combination can be created. Brale does not onboard the business types listed in [Prohibited businesses](https://docs.brale.xyz/coverage/prohibited-businesses.md).

## Example request with documents (business)

```json theme={null}
{
  "business_name": "Acme Corp",
  "ein": "12-3456789",
  "address": {
    "street_line_1": "123 Main St",
    "city": "Des Moines",
    "state": "IA",
    "zip": "50309"
  },
  "phone_number": "2134678902",
  "email": "mark@example.com",
  "website": "https://acme.example.com",
  "business_controller": {
    "first_name": "John",
    "last_name": "Doe",
    "ssn": "222-22-2222",
    "dob": "1981-01-25",
    "email": "john@acme.example.com",
    "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)

```json theme={null}
{
  "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.

## Example request (individual)

Create a KYC-verified individual account. Set `account_type` to `transactional` (shown below) or `custodial` — the request shape is identical for both. The `individual` object and `tos_attestation` are required. Business-only fields (`business_name`, `ein`, `website`, `business_controller`, `beneficial_owners`, `regulatory_profile`) must not be sent on this path; they are rejected with `400 unexpected_business_fields`.

```json theme={null}
{
  "entity_type": "individual",
  "account_type": "transactional",
  "verification_mode": "standard",
  "individual": {
    "first_name": "Jane",
    "last_name": "Doe",
    "date_of_birth": "1990-01-01",
    "email": "jane@example.com",
    "phone_number": "2125550182",
    "country": "US",
    "address": {
      "street_line_1": "123 Main St",
      "street_line_2": "Apt 4",
      "city": "Des Moines",
      "state": "IA",
      "zip": "50309"
    },
    "identity": {
      "number": "222-22-2222",
      "type": "SSN9"
    }
  },
  "tos_attestation": {
    "version": "2025-04-01",
    "accepted_at": "2026-05-13T20:45:15Z",
    "ip": "203.0.113.42",
    "user_agent": "Mozilla/5.0 ..."
  }
}
```

## Example response, individual (201)

```json theme={null}
{
  "id": "3Ar9BnQCKIrB3SYjKGBzCtFs6XL",
  "name": "Jane Doe",
  "status": "pending",
  "created": "2026-05-13T20:45:16Z",
  "updated": "2026-05-13T20:45:16Z"
}
```

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](https://docs.brale.xyz/guides/individual-accounts.md) for the end-to-end workflow, including the receive-only constraints on transactional accounts.

## Required scope

`accounts:write`


## OpenAPI

````yaml POST /accounts
openapi: 3.0.3
info:
  title: Brale Issuance and Orchestration API
  version: 2.3.1
  description: >
    Brale supports stablecoin issuance and orchestration, enabling businesses
    and

    ecosystems to create their own stablecoins and convert between fiat and
    stablecoins

    seamlessly. From stablecoin onramps, offramps, and swaps to custody and
    payouts, the

    Brale API makes it easy to build stablecoin-enabled products.


    NOTE: All resource IDs (including account_id, address_id,
    financial_institution_id,

    and automation_id) are KSUIDs—27-character alphanumeric strings that are
    sortable

    by time. Examples showing UUIDs are incorrect.



    **What's new in 2.3.1**

    - Unified **Addresses** model for on-chain and off-chain endpoints
      - `Transfers` now accepts **address_id only** (no financial_institution_id)
      - Optional `brand` object to control bank statement presentation (`branding` still accepted as legacy alias)
    - Added off-chain rails: `ach_credit`, `same_day_ach_credit`, `ach_debit`,
    `same_day_ach_debit`, `rtp-credit`

    - Plaid endpoints moved to `/accounts/{account_id}/plaid/*`

    - `Financial Institutions` marked **deprecated** (migration path to
    **Addresses**)

    - Create Account now uses `CreateManagedAccountRequest` with
    `beneficial_owners`, `business_controller`, and `EndUserTosAttestation`.

    - Transfers now accept `brand` (replaces `branding`, still aliased in docs).

    - Plaid endpoints updated to return `address_id` and accept
    `transfer_types`.

    - Off-chain Address creation uses `CreateExternalAddressRequest` oneOf with
    bank + blockchain variants.

    - FI endpoints kept but marked deprecated; use Addresses instead.

    - `rtp_credit` is the canonical RTP rail name.



    **FedNow**

    - Added the `fednow_credit` rail. Outbound: create a Transfer with
      `destination.transfer_type: fednow_credit` to a bank Address that lists
      `fednow_credit` in `transfer_types`. Inbound: payers send FedNow credits to an
      active Automation's `source.funding_instructions`; Brale creates the Transfer
      automatically with `source.transfer_type: fednow_credit`.
    - Simulate a testnet FedNow deposit with `transfer_type: fednow` on
      `POST /accounts/{account_id}/automations/{automation_id}/simulations/deposits`.
    - `bank_address` and `beneficiary_address` are required only when an
    external
      bank Address requests `wire`.
    - FedNow availability depends on account enablement.
servers:
  - url: https://api.brale.xyz
    description: Production server
security:
  - BearerAuth: []
tags:
  - name: Accounts
    description: Endpoints related to managing customer accounts (KYB, details, etc.)
  - name: Transfers
    description: >-
      Endpoints for creating and retrieving transfers (fiat to stablecoins,
      etc.)
  - name: Addresses
    description: >-
      On-chain and off-chain endpoints (custodial or external) represented by a
      single Addresses resource
  - name: Financial Institutions
    description: Legacy (deprecated) bank endpoints. Use Addresses instead.
  - name: Automations
    description: Automated deposit addresses or onramps
  - name: Plaid
    description: Bank linking and ACH debit via Plaid.
  - name: Orders
    description: Legacy tag used for transfers in older specs.
paths:
  /accounts:
    post:
      tags:
        - Accounts
      summary: Create a customer account
      description: |
        Creates a new customer (account) with the required KYC/KYB details.
      operationId: createAccount
      parameters:
        - in: header
          name: Idempotency-Key
          required: true
          schema:
            type: string
          example: idemp-123e4567-e89b-12d3-a456-426614174000
          description: >
            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`
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAccountRequest'
            examples:
              create_business_account:
                summary: Business account with controller + TOS attestation
                value:
                  business_name: ABC Company Inc
                  ein: 11-1111111
                  address:
                    street_line_1: 100 Example St
                    city: Des Moines
                    state: IA
                    zip: '50309'
                    country: US
                  phone_number: '5155550182'
                  email: ops@abc.example
                  website: https://abc.example
                  beneficial_owners:
                    - first_name: Jane
                      last_name: Doe
                      dob: '1980-05-12'
                      ssn: 222-22-2222
                      email: jane@example.com
                      phone_number: 212-555-0182
                      address:
                        street_line_1: 100 Example St
                        city: Des Moines
                        state: IA
                        zip: '50309'
                        country: US
                  business_controller:
                    first_name: Alicia
                    last_name: Ng
                    dob: '1986-07-14'
                    ssn: 123-45-6789
                    email: alicia.ng@example.com
                    phone_number: '+12125550182'
                    address:
                      street_line_1: 200 Market St
                      city: Des Moines
                      state: IA
                      zip: '50310'
                      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
              create_business_transactional_account_non_us:
                summary: Business (KYB) transactional account, non-US
                value:
                  entity_type: business
                  account_type: transactional
                  business_name: Example Trading Ltd
                  ein: '12345678'
                  address:
                    street_line_1: 10 Example Street
                    city: London
                    zip: EC1A 1BB
                    country: GB
                  phone_number: '+442071234567'
                  email: ops@example.co.uk
                  website: https://example.co.uk
                  beneficial_owners: []
                  business_controller:
                    first_name: Oliver
                    last_name: Smith
                    dob: '1985-03-14'
                    email: oliver@example.co.uk
                    phone_number: '+447700900123'
                    address:
                      street_line_1: 10 Example Street
                      city: London
                      zip: EC1A 1BB
                      country: GB
                    identity:
                      number: '123456789'
                      type: PASSPORT
                  tos_attestation:
                    accepted_at: '2026-05-13T20:45:15Z'
                    version: '2025-04-01'
              create_business_custodial_account_regulated_non_us:
                summary: Business (KYB) custodial account, regulated non-US
                value:
                  entity_type: business
                  account_type: custodial
                  verification_mode: standard
                  business_name: Example Payments Inc
                  ein: '123456789'
                  address:
                    street_line_1: 100 King Street West
                    city: Toronto
                    state: 'ON'
                    zip: M5X 1A9
                    country: CA
                  phone_number: '+14165550123'
                  email: ops@example.ca
                  website: https://example.ca
                  regulatory_profile:
                    regulator: FINTRAC
                    license_number: M12345678
                  beneficial_owners: []
                  business_controller:
                    first_name: Emma
                    last_name: Tremblay
                    dob: '1984-06-21'
                    email: emma@example.ca
                    phone_number: '+14165550188'
                    address:
                      street_line_1: 100 King Street West
                      city: Toronto
                      state: 'ON'
                      zip: M5X 1A9
                      country: CA
                    identity:
                      number: AB123456
                      type: PASSPORT
                  tos_attestation:
                    accepted_at: '2026-05-13T20:45:15Z'
                    version: '2025-04-01'
              create_individual_account:
                summary: Individual (KYC) transactional account
                value:
                  entity_type: individual
                  account_type: transactional
                  verification_mode: standard
                  individual:
                    first_name: Jane
                    last_name: Doe
                    date_of_birth: '1990-01-01'
                    email: jane@example.com
                    phone_number: '2125550182'
                    country: US
                    address:
                      street_line_1: 123 Main St
                      street_line_2: Apt 4
                      city: Des Moines
                      state: IA
                      zip: '50309'
                    identity:
                      number: 222-22-2222
                      type: SSN9
                  tos_attestation:
                    accepted_at: '2026-05-13T20:45:15Z'
                    version: '2025-04-01'
                    ip: 203.0.113.42
                    user_agent: Mozilla/5.0 ...
              create_individual_custodial_account:
                summary: Individual (KYC) custodial account
                value:
                  entity_type: individual
                  account_type: custodial
                  verification_mode: standard
                  individual:
                    first_name: Jane
                    last_name: Doe
                    date_of_birth: '1990-01-01'
                    email: jane@example.com
                    phone_number: '2125550182'
                    country: US
                    address:
                      street_line_1: 123 Main St
                      street_line_2: Apt 4
                      city: Des Moines
                      state: IA
                      zip: '50309'
                    identity:
                      number: 222-22-2222
                      type: SSN9
                  tos_attestation:
                    accepted_at: '2026-05-13T20:45:15Z'
                    version: '2025-04-01'
              create_individual_account_non_us:
                summary: Individual (KYC) transactional account, non-US
                value:
                  entity_type: individual
                  account_type: transactional
                  individual:
                    first_name: Amara
                    last_name: Okafor
                    date_of_birth: '1988-07-22'
                    email: amara@example.com
                    phone_number: '+2348012345678'
                    country: NG
                    address:
                      street_line_1: 12 Awolowo Road
                      city: Lagos
                      state: Lagos
                      zip: '101233'
                    identity:
                      number: '22222222222'
                      type: BVN
                  tos_attestation:
                    accepted_at: '2026-05-13T20:45:15Z'
                    version: '2025-04-01'
      responses:
        '201':
          description: Account successfully created
          content:
            '*/*':
              schema:
                type: object
                properties:
                  id:
                    $ref: '#/components/schemas/Ksuid'
        '400':
          description: |
            Bad request. Possible `type` values on the business path:
            - `regulator_required` — `regulatory_profile` was sent with
              `regulator` missing or blank. Permanent; safe to cache against an
              idempotency key.

            - `license_number_required` — `regulatory_profile` was sent with
              `license_number` missing or blank. Permanent; safe to cache
              against an idempotency key.


            Possible `type` values on the individual path:
            - `individual_details_required` — `entity_type: individual` was
              sent with no `individual` object.

            - `tos_attestation_required` — the individual path was used with
              no `tos_attestation`.

            - `unexpected_business_fields` — a business-only field
              (`business_name`, `ein`, `website`, `business_controller`,
              `beneficial_owners`, `regulatory_profile`) was sent on the
              individual path.

            - `invalid_attestation_timestamp` — `tos_attestation.accepted_at`
              is not an ISO-8601 timestamp.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: |
            Unprocessable entity. Possible `type` values on account creation:
            - `unsupported_account_combination` — the combination of
              `entity_type`, `account_type`, and `verification_mode` is
              not supported: any `verification_mode: bypass`, or
              `verification_mode: reliance` from a caller without reliance
              enabled. Permanent; safe to cache against an idempotency key.

            - `unsupported_jurisdiction` — Brale does not serve the
              applicant's jurisdiction for the requested account type (for
              example, a non-US individual custodial account, a non-US
              business custodial account without `regulatory_profile` or
              outside the approved countries, or a US state where the
              combination is unavailable). Permanent; safe to cache against an
              idempotency key.

            - `invalid_us_state` — `individual.country` is `US` or `USA` and
              `individual.address.state` is missing, blank, or not a
              recognized US state or territory (abbreviation or full name).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    CreateAccountRequest:
      title: CreateAccountRequest
      description: >
        Request body for `POST /accounts`. The three optional dimension fields
        `entity_type`, `account_type`, and `verification_mode` select which
        shape is validated. All eight combinations of `entity_type` (`business`,
        `individual`), `account_type` (`custodial`, `transactional`), and
        `verification_mode` (`standard`, `reliance`) are supported. Omitting all
        three fields creates a business custodial account with `standard`
        verification.

        `verification_mode: bypass` is not supported for any combination and
        returns `422 unsupported_account_combination`. `reliance` is enabled per
        managing account by Brale and is not self-serve; a caller without it
        enabled receives `422 unsupported_account_combination`.


        No `discriminator` is declared, because `entity_type` is optional: a
        request that omits it is a business account, and a discriminator would
        require the property to be present. The two branches resolve
        unambiguously without one, since both set `additionalProperties: false`
        and their required fields are disjoint.
      oneOf:
        - $ref: '#/components/schemas/CreateManagedAccountRequest'
        - $ref: '#/components/schemas/CreateIndividualAccountRequest'
    Ksuid:
      title: Kusid
      type: string
      format: ksuid
      pattern: ^[a-zA-Z0-9]{27}$
      example: 2VcUIIsgARwVbEGlIYbhg6fGG57
    ErrorResponse:
      type: object
      title: ErrorResponse
      description: Standard Brale error envelope.
      required:
        - type
      properties:
        type:
          type: string
          description: Machine-readable error type identifier.
          example: unsupported_account_combination
        message:
          type: string
          description: Human-readable explanation of the error.
          example: >-
            The combination of entity_type, account_type, and verification_mode
            is not supported.
    CreateManagedAccountRequest:
      type: object
      additionalProperties: false
      title: CreateManagedAccountRequest
      description: >
        Business (KYB) account creation payload. This is the default path when
        `entity_type` is omitted, or when it is explicitly set to `business`.
        `account_type` selects between a custodial account (the default) and a
        non-custodial transactional account. A business outside the US sends its
        country in `address.country`; see `BusinessAddress`. It can be created
        as a transactional account, or as a custodial account if it is a
        regulated business in an approved country and sends
        `regulatory_profile`.
      required:
        - business_name
        - ein
        - address
        - phone_number
        - email
        - website
        - business_controller
        - tos_attestation
      properties:
        entity_type:
          type: string
          enum:
            - business
          description: |
            Optional discriminator. When omitted, defaults to `business`.
          example: business
        account_type:
          type: string
          enum:
            - custodial
            - transactional
          description: >
            Optional. When omitted, defaults to `custodial` for business
            accounts. `custodial` accounts receive Brale-managed internal
            wallets and can hold balances. Business custodial accounts are
            available in supported US states, and outside the US only to
            regulated businesses in approved countries that send
            `regulatory_profile`; any other non-US business custodial request
            returns `422 unsupported_jurisdiction`. `transactional` accounts are
            non-custodial: they receive no internal wallets, hold no balances at
            Brale, and register external destination-only addresses.
          example: custodial
        verification_mode:
          type: string
          enum:
            - standard
            - reliance
          description: >
            Optional. When omitted, defaults to `standard`. `reliance` is
            enabled per managing account by Brale and is not self-serve; a
            caller without it enabled receives `422
            unsupported_account_combination`.
          example: standard
        business_name:
          type: string
          example: My Customer
        ein:
          type: string
          example: '123456789'
        address:
          $ref: '#/components/schemas/BusinessAddress'
        regulatory_profile:
          $ref: '#/components/schemas/RegulatoryProfile'
        beneficial_owners:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/ControllingParty'
        ultimate_beneficial_owners:
          deprecated: true
          description: Deprecated alias of beneficial_owners.
          type: array
          items:
            $ref: '#/components/schemas/ControllingParty'
        business_controller:
          $ref: '#/components/schemas/ControllingParty'
        email:
          type: string
          example: a@b.com
        phone_number:
          type: string
          example: 515-555-1212
        tos_attestation:
          $ref: '#/components/schemas/EndUserTosAttestation'
        website:
          type: string
          example: https://example.com
        name:
          type: string
          example: My Account
        doc_submission_ids:
          type: array
          description: >-
            Optional pre-staged verification document submission IDs to link on
            creation.
          items:
            $ref: '#/components/schemas/Ksuid'
    CreateIndividualAccountRequest:
      type: object
      additionalProperties: false
      title: CreateIndividualAccountRequest
      description: >
        Individual (KYC) account creation payload, custodial or transactional.
        The request shape is identical for both account types. Business-only
        fields (`business_name`, `ein`, `website`, `business_controller`,
        `beneficial_owners`, `regulatory_profile`) must not be sent on this
        path; they are rejected with `400 unexpected_business_fields`.
      required:
        - entity_type
        - account_type
        - individual
        - tos_attestation
      properties:
        entity_type:
          type: string
          enum:
            - individual
          example: individual
        account_type:
          type: string
          enum:
            - custodial
            - transactional
          description: >
            `custodial` accounts receive Brale-custodied internal wallets and
            can hold balances at Brale; they are US-only. `transactional`
            accounts are non-custodial: they receive no custodial wallets and
            cannot create custodial addresses.
          example: transactional
        verification_mode:
          type: string
          enum:
            - standard
            - reliance
          description: >
            `standard` (default) or `reliance`. Use `reliance` when your
            integration operates under an agreement with Brale that specifies a
            reliance model. Reliance is enabled per managing account by Brale
            and is not self-serve; a caller without it enabled receives `422
            unsupported_account_combination`.
          example: standard
        individual:
          $ref: '#/components/schemas/Individual'
        tos_attestation:
          $ref: '#/components/schemas/EndUserTosAttestation'
        name:
          type: string
          description: >-
            Optional display name. When omitted, the account's `name` is derived
            from the individual's first and last name.
          example: Jane Doe
        doc_submission_ids:
          type: array
          description: >-
            Optional pre-staged verification document submission IDs to link on
            creation.
          items:
            $ref: '#/components/schemas/Ksuid'
    BusinessAddress:
      type: object
      additionalProperties: false
      title: BusinessAddress
      description: >
        Business address. `state` is absent from `required` because whether it
        is required depends on `country`: a US business must supply a recognized
        US state or territory, and elsewhere it is optional and free-form.
      required:
        - street_line_1
        - city
        - zip
      properties:
        street_line_1:
          type: string
          example: 100 Example St.
        street_line_2:
          type: string
          example: Suite 500
        city:
          type: string
          example: Springfield
        state:
          type: string
          description: >
            State, province, or region. When the business's country is US or
            omitted this is required and must be a US state or territory, by
            abbreviation or full name (`CA`, `California`, `PR`). Optional and
            free-form otherwise.
          example: CA
        zip:
          type: string
          description: Postal code (any format).
          example: '90001'
        country:
          type: string
          description: >
            ISO 3166-1 alpha-2 country code of the business. Defaults to `US`
            when omitted. Determines jurisdiction coverage for the account. A
            non-US business in an approved country can be created as a
            transactional account, or as a custodial account if it sends
            `regulatory_profile`.
          example: US
    RegulatoryProfile:
      type: object
      additionalProperties: false
      title: RegulatoryProfile
      description: >
        Optional. Send only for a regulated business, for example a money
        services business (MSB) or a virtual asset service provider (VASP).
        Sending it declares the business regulated; omitting it means the
        business is not regulated. Required for a non-US business custodial
        account. Declaring the business regulated is not approval: Brale
        requests supporting regulatory documents and verifies the license during
        verification. Business path only; sending it on the individual path
        returns `400 unexpected_business_fields`.
      properties:
        regulator:
          type: string
          description: >
            The authority the business is licensed or registered with. Required
            and must be non-blank when `regulatory_profile` is sent; otherwise
            the request returns `400 regulator_required`.
          example: FINTRAC
        license_number:
          type: string
          description: >
            The license or registration number that `regulator` issued. Required
            and must be non-blank when `regulatory_profile` is sent; otherwise
            the request returns `400 license_number_required`.
          example: M12345678
    ControllingParty:
      type: object
      additionalProperties: false
      title: ControllingParty
      description: >
        A business controller or beneficial owner. Identity is supplied one of
        two ways, and exactly one of them is required: `ssn` for a US party,
        which is what every request written before non-US parties were supported
        already sends, or `identity` (number and type) otherwise.


        `ssn` is only accepted when the party's country is the US, since an SSN
        has no meaning elsewhere. A US party may also use `identity` when the
        document is something other than an SSN.
      required:
        - first_name
        - last_name
        - dob
        - address
        - email
        - phone_number
      properties:
        first_name:
          type: string
          example: John
        last_name:
          type: string
          example: Doe
        dob:
          type: string
          example: YYYY-MM-DD
        ssn:
          type: string
          example: 123-45-6789
          description: >
            US Social Security Number. Required for a US party unless `identity`
            is supplied, and not accepted for a party outside the US.
        identity:
          allOf:
            - $ref: '#/components/schemas/IndividualIdentity'
          nullable: true
          description: >
            Typed identity document, a number and the kind of document it came
            from. Required for a party outside the US, where the number could be
            a passport, a national ID or a tax number and the type is what keeps
            it from being submitted as an SSN. Mutually exclusive with `ssn`.
        address:
          $ref: '#/components/schemas/ControllingPartyAddress'
        email:
          type: string
          example: a@b.com
        phone_number:
          type: string
          example: 515-555-1212
          description: >
            Parsed against the party's own country, so a number written in
            national form outside the US is accepted and stored in E.164.
        ownership_percentage:
          type: number
          nullable: true
          example: 40
    EndUserTosAttestation:
      type: object
      additionalProperties: false
      title: EndUserTosAttestation
      required:
        - accepted_at
      properties:
        accepted_at:
          $ref: '#/components/schemas/DateTime'
        ip:
          type: string
          example: 203.0.113.42
        user_agent:
          type: string
          example: >-
            Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:138.0)
            Gecko/20100101 Firefox/138.0
        version:
          type: string
          example: '2025-04-01'
    Individual:
      type: object
      additionalProperties: false
      title: Individual
      required:
        - first_name
        - last_name
        - date_of_birth
        - email
        - phone_number
        - country
        - address
        - identity
      properties:
        first_name:
          type: string
          example: Jane
        last_name:
          type: string
          example: Doe
        date_of_birth:
          type: string
          description: ISO date, `YYYY-MM-DD`.
          example: '1990-01-01'
        email:
          type: string
          example: jane@example.com
        phone_number:
          type: string
          example: '2125550182'
        country:
          type: string
          description: >
            Top-level jurisdiction used for verification. Separate from
            `address`. When `US` or `USA`, `address.state` must be a valid US
            state or territory.
          example: US
        address:
          $ref: '#/components/schemas/IndividualAddress'
        identity:
          $ref: '#/components/schemas/IndividualIdentity'
    IndividualIdentity:
      type: object
      additionalProperties: false
      title: IndividualIdentity
      description: >
        A government-issued identifier for a natural person. One identity is
        submitted per person: `SSN9` for a US taxpayer, or a document type such
        as `PASSPORT` or `NATIONAL_ID` for someone outside the US. Used by an
        individual account and, as `identity`, by a controlling party.
      required:
        - number
        - type
      properties:
        number:
          type: string
          example: 222-22-2222
          description: >-
            The identifier value (for `SSN9`, the 9-digit Social Security
            number).
        type:
          type: string
          enum:
            - SSN9
            - SSN4
            - DRIVER_LICENSE
            - PASSPORT
            - NATIONAL_ID
            - VOTER_ID
            - BVN
            - NIN
            - NIN_SLIP
            - SSNIT
            - TAX_ID
            - KENYA_KRA_PIN
            - ALIEN_CARD
            - RESIDENT_ID
            - COLOMBIA_PPT
            - GHANA_CARD_NUMBER
          example: SSN9
          description: The kind of identifier submitted.
    ControllingPartyAddress:
      type: object
      additionalProperties: false
      title: ControllingPartyAddress
      description: >
        Postal address for a business controller or beneficial owner. `state` is
        free-form and the postal code accepts any format, so controlling parties
        outside the US are supported.


        `state` is absent from `required` because whether it is required depends
        on `country`, which this schema cannot express: a US party must supply a
        recognized US state, and elsewhere it is optional because many countries
        have no state or province.
      required:
        - street_line_1
        - city
        - zip
      properties:
        street_line_1:
          type: string
          example: Calle 93
        street_line_2:
          type: string
          example: Oficina 402
        city:
          type: string
          example: Bogota
        state:
          type: string
          description: >
            State, province, or region. Required when `country` is the US,
            optional otherwise. A blank value is treated as absent.
          example: Cundinamarca
        zip:
          type: string
          description: >-
            Postal code. Any format is accepted, so non-US postal codes are
            supported.
          example: '110221'
        country:
          type: string
          description: >
            ISO 3166-1 country code or country name. Defaults to `US` when
            omitted, so requests written before non-US parties were supported
            are unchanged.
          example: CO
    DateTime:
      type: string
      format: date-time
      title: DateTime
      description: ISO-8601 timestamp that includes date and time
      example: '2020-01-01T12:00:00Z'
    IndividualAddress:
      type: object
      additionalProperties: false
      title: IndividualAddress
      description: >
        Residential address for an individual account. When `individual.country`
        is `US` or `USA`, `state` is required and must be a US state or
        territory, as an abbreviation or full name (`CA`, `California`, and `PR`
        all work); otherwise the request returns `422 invalid_us_state`. A US
        territory is a US jurisdiction, not a separate country: send `country:
        US` with the territory in `state` (`PR`, `GU`, `AS`, `VI`, `MP`). For
        non-US individuals `state` is optional and free-form, since many
        countries have no state or province.


        `state` is absent from `required` because whether it is required depends
        on `individual.country`, which this schema cannot express.
      required:
        - street_line_1
        - city
        - zip
      properties:
        street_line_1:
          type: string
          example: 123 Main St
        street_line_2:
          type: string
          example: Apt 4
        city:
          type: string
          example: Des Moines
        state:
          type: string
          description: >
            State, province, or region. Required when `individual.country` is
            `US` or `USA`, and accepted as an abbreviation or full name (`CA`,
            `California`, `PR`); optional and free-form otherwise. A blank value
            is treated as absent.
          example: IA
        zip:
          type: string
          description: >-
            Postal code. Any format is accepted, so non-US postal codes are
            supported.
          example: '50309'
        country:
          type: string
          description: >
            Optional. The individual's jurisdiction is taken from the top-level
            `individual.country`, not from this field.
          example: US
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >
        Use the Bearer token returned from the Auth endpoint via OAuth2
        client_credentials flow. Include the token in the "Authorization: Bearer
        <token>" header.

````