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

# Create bank account (API key)

> Programmatically creates a new bank account for a customer using API key authentication.
No presigned URL is required. The account registration data (name, CURP, RFC, CLABE, etc.)
is validated and sent to the payment processor.
Bank accounts require verification before they can be used for transactions.




## OpenAPI

````yaml /openapi.yaml post /ramp/customer/{customer_id}/bank-account
openapi: 3.1.0
info:
  title: FX API
  version: 1.0.0
  description: >
    API for managing FX operations including onboarding, quotes, orders, and
    customer management.

    This API provides endpoints for managing customers, bank accounts, crypto
    wallets, orders, and webhooks.
servers:
  - url: https://api.etherfuse.com
    description: Production API
  - url: https://api.sand.etherfuse.com
    description: Sandbox API (for testing)
security: []
tags:
  - name: Lookup
    description: Public endpoints for looking up stablebond and exchange rate data
  - name: Assets
    description: Get available assets for ramping
  - name: Onboarding
    description: Customer onboarding and KYC
  - name: Bank Accounts
    description: Manage customer bank accounts
  - name: Agreements
    description: Handle customer agreements and consents
  - name: Quotes
    description: Get quotes for conversions
  - name: Orders
    description: Create and manage orders
  - name: Swaps
    description: Create and manage swaps
  - name: Customers
    description: Manage customers
  - name: Crypto Wallets
    description: Manage crypto wallets
  - name: Webhooks
    description: Manage webhook subscriptions
  - name: Organizations
    description: Manage organizations and child organizations
paths:
  /ramp/customer/{customer_id}/bank-account:
    post:
      tags:
        - Bank Accounts
      summary: Create bank account (API key)
      description: >
        Programmatically creates a new bank account for a customer using API key
        authentication.

        No presigned URL is required. The account registration data (name, CURP,
        RFC, CLABE, etc.)

        is validated and sent to the payment processor.

        Bank accounts require verification before they can be used for
        transactions.
      parameters:
        - name: customer_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: ID of the customer to create the bank account for
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - account
              properties:
                account:
                  $ref: '#/components/schemas/AccountRegistration'
                skipAutoApproval:
                  type: boolean
                  default: false
                  description: >-
                    If true, skips automatic approval in sandbox/devnet
                    environments
                label:
                  type: string
                  nullable: true
                  description: Optional label for the bank account
                bankAccountId:
                  type: string
                  format: uuid
                  description: >-
                    Optional UUID for the bank account. Auto-generated if
                    omitted.
      responses:
        '201':
          description: Bank account created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccount'
        '400':
          description: Invalid request parameters (invalid CLABE, RFC, CURP, etc.)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    AccountRegistration:
      oneOf:
        - $ref: '#/components/schemas/PersonalAccountRegistration'
        - $ref: '#/components/schemas/BusinessAccountRegistration'
      description: >
        Bank account registration data. Accepts either Personal or Business
        format.

        The variant is auto-detected based on the fields present (untagged
        union).
    BankAccount:
      type: object
      properties:
        bankAccountId:
          type: string
          format: uuid
          description: Unique identifier for the bank account. Must be a valid UUID v4.
        customerId:
          type: string
          format: uuid
          description: ID of the customer who owns this bank account
        createdAt:
          type: string
          format: date-time
          description: Timestamp when the bank account was created
        updatedAt:
          type: string
          format: date-time
          description: Timestamp when the bank account was last updated
        deletedAt:
          type: string
          format: date-time
          nullable: true
          description: Timestamp when the bank account was deleted (if applicable)
        abbrClabe:
          type: string
          description: Abbreviated CLABE number for the bank account
        etherfuseDepositClabe:
          type: string
          nullable: true
          description: Etherfuse deposit CLABE number
        label:
          type: string
          nullable: true
          description: Custom label for the bank account
        compliant:
          type: boolean
          description: >-
            Whether the bank account is compliant. This is a derived value —
            true if the account has been explicitly marked compliant OR if the
            owning organization is approved (KYB'd).
        status:
          type: string
          enum:
            - pending
            - awaitingDepositVerification
            - active
            - inactive
          description: Current status of the bank account
      example:
        bankAccountId: 123e4567-e89b-12d3-a456-426614174000
        customerId: 123e4567-e89b-12d3-a456-426614174001
        createdAt: '2024-01-01T00:00:00Z'
        updatedAt: '2024-01-01T00:00:00Z'
        abbrClabe: 1234...5678
        compliant: true
        status: active
    Error:
      type: object
      properties:
        error:
          type: string
          description: Error message
      example:
        error: Invalid request parameters
    PersonalAccountRegistration:
      type: object
      description: Personal bank account registration data
      required:
        - transactionId
        - firstName
        - paternalLastName
        - maternalLastName
        - birthDate
        - curp
        - rfc
        - clabe
      properties:
        transactionId:
          type: string
          format: uuid
          description: Unique transaction ID for this registration
        firstName:
          type: string
          description: Account holder's first name
        paternalLastName:
          type: string
          description: Account holder's paternal last name
        maternalLastName:
          type: string
          description: Account holder's maternal last name
        birthDate:
          type: string
          description: Date of birth in YYYYMMDD format
          example: '19900101'
        birthCountryIsoCode:
          type: string
          description: >-
            ISO 3166-1 alpha-2 country code for birth country. Defaults to MX if
            omitted.
          example: MX
        birthCountryId:
          type: string
          description: Legacy numeric country ID. Prefer birthCountryIsoCode instead.
          deprecated: true
        curp:
          type: string
          description: Mexican CURP (Clave Única de Registro de Población)
        rfc:
          type: string
          description: Mexican RFC (Registro Federal de Contribuyentes)
        clabe:
          type: string
          description: >-
            18-digit CLABE number (digits only, no letters or special
            characters)
      example:
        transactionId: 123e4567-e89b-12d3-a456-426614174000
        firstName: Juan
        paternalLastName: García
        maternalLastName: López
        birthDate: '19900101'
        birthCountryIsoCode: MX
        curp: GALJ900101HDFRRN09
        rfc: GALJ9001016V3
        clabe: '012345678901234567'
    BusinessAccountRegistration:
      type: object
      description: Business bank account registration data
      required:
        - transactionId
        - name
        - incorporatedDate
        - rfc
        - clabe
      properties:
        transactionId:
          type: string
          format: uuid
          description: Unique transaction ID for this registration
        name:
          type: string
          description: Business legal name
        countryIsoCode:
          type: string
          description: ISO 3166-1 alpha-2 country code. Defaults to MX if omitted.
          example: MX
        countryId:
          type: string
          description: Legacy numeric country ID. Prefer countryIsoCode instead.
          deprecated: true
        incorporatedDate:
          type: string
          description: Date of incorporation in YYYYMMDD format
          example: '20100315'
        rfc:
          type: string
          description: Mexican RFC (Registro Federal de Contribuyentes)
        clabe:
          type: string
          description: >-
            18-digit CLABE number (digits only, no letters or special
            characters)
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        API key for authentication. Pass the key directly (e.g., `Authorization:
        your-api-key`). Do not use a `Bearer` prefix.

````