> ## 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.


## 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—26-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.
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/CreateManagedAccountRequest'
            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: New York
                    state: NY
                    zip: '10001'
                    country: US
                  phone_number: '2125550182'
                  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: 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: alicia.ng@example.com
                    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
      responses:
        '201':
          description: Account successfully created
          content:
            '*/*':
              schema:
                type: object
                properties:
                  id:
                    $ref: '#/components/schemas/Ksuid'
components:
  schemas:
    CreateManagedAccountRequest:
      type: object
      additionalProperties: false
      title: CreateManagedAccountRequest
      required:
        - business_name
        - ein
        - address
        - phone_number
        - email
        - website
        - business_controller
        - tos_attestation
      properties:
        business_name:
          type: string
          example: My Customer
        ein:
          type: string
          example: '123456789'
        address:
          $ref: '#/components/schemas/USStreetAddress'
        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
    Ksuid:
      title: Kusid
      type: string
      format: ksuid
      pattern: ^[a-zA-Z0-9]{26}$
      example: 2VcUIIsgARwVbEGlIYbhg6fGG57
    USStreetAddress:
      type: object
      additionalProperties: false
      title: USStreetAddress
      required:
        - street_line_1
        - city
        - state
        - 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
          example: CA
        zip:
          type: string
          example: '90001'
    ControllingParty:
      type: object
      additionalProperties: false
      title: ControllingParty
      required:
        - first_name
        - last_name
        - dob
        - ssn
        - 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
        address:
          $ref: '#/components/schemas/USStreetAddress'
        email:
          type: string
          example: a@b.com
        phone_number:
          type: string
          example: 515-555-1212
        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'
    DateTime:
      type: string
      format: date-time
      title: DateTime
      description: ISO-8601 timestamp that includes date and time
      example: '2020-01-01T12:00:00Z'
  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.

````