> ## 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 (presigned URL)

> Registers a customer's Mexican bank account (CLABE) for on/off-ramp transactions.
The `account` field accepts two variants — Personal or Business — auto-detected based on the fields present.

**Note:** This endpoint is intended for customers onboarding through the Etherfuse UI using a presigned URL.
For programmatic bank account creation via API key, use `POST /ramp/customer/{customer_id}/bank-account` instead.




## OpenAPI

````yaml /openapi.yaml post /ramp/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/bank-account:
    post:
      tags:
        - Bank Accounts
      summary: Create bank account (presigned URL)
      description: >
        Registers a customer's Mexican bank account (CLABE) for on/off-ramp
        transactions.

        The `account` field accepts two variants — Personal or Business —
        auto-detected based on the fields present.


        **Note:** This endpoint is intended for customers onboarding through the
        Etherfuse UI using a presigned URL.

        For programmatic bank account creation via API key, use `POST
        /ramp/customer/{customer_id}/bank-account` instead.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - presignedUrl
                - account
              properties:
                presignedUrl:
                  type: string
                  description: Presigned URL for verification
                account:
                  $ref: '#/components/schemas/AccountRegistration'
                skipAutoApproval:
                  type: boolean
                  default: false
                  description: If true, skips automatic approval in sandbox environments
                label:
                  type: string
                  description: Optional display label for the account
      responses:
        '200':
          description: Bank account created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccount'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
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)

````