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

# Register External Account

> Register a payout destination the merchant controls: a wallet address (type Digital) or a bank account (type Fiat). Registering is the whitelisting step — /accounts/virtual/payout only sends to accounts created here — so this endpoint requires X-Step-Up-Token when authenticated with a Bearer session.



## OpenAPI

````yaml /openapi.yaml post /accounts/external-account
openapi: 3.1.0
info:
  contact:
    email: support@boomfi.xyz
    name: API Support
  description: >-
    The BoomFi Merchants API provides a set of endpoints for merchants to manage
    their accounts, transactions, and more. Hosts differ per brand/environment;
    use the brand-specific base URL from the docs.
  title: ZBX Merchants API
  version: '1.0'
servers:
  - url: https://mapi.zbx.boomfi.xyz/v1
    description: Production
security: []
tags:
  - description: Payment links
    name: Paylinks
  - description: Billing plans
    name: Plans
  - description: Subscriptions
    name: Subscriptions
  - description: Customer records
    name: Customers
  - description: Invoices
    name: Invoices
  - description: Payments
    name: Payments
  - description: Organisation events
    name: Events
  - description: Organisation profile and display settings
    name: Organisation
  - description: Webhook and request-signing secrets
    name: Secrets
  - description: Settlement accounts
    name: Accounts
  - name: Bank Address Book
  - description: Managed virtual accounts, balances, pay-in, and payout
    name: Virtual Accounts
  - description: Partner-managed accounts, virtual accounts, pay-in, and payout
    name: Partners
  - description: Partner virtual account automations and run history
    name: Partner Automations
  - description: Partner maintain-balance automations
    name: Partner Balance Monitoring
  - description: Tradeable currencies, instruments, and swap targets
    name: Instruments
  - description: RFQ quotes
    name: Quotes
  - description: RFQ orders and one-click trades
    name: Orders
  - description: Executed trades
    name: Trades
paths:
  /accounts/external-account:
    post:
      tags:
        - Accounts
      summary: Register External Account
      description: >-
        Register a payout destination the merchant controls: a wallet address
        (type Digital) or a bank account (type Fiat). Registering is the
        whitelisting step — /accounts/virtual/payout only sends to accounts
        created here — so this endpoint requires X-Step-Up-Token when
        authenticated with a Bearer session.
      parameters:
        - description: >-
            Step-up token required for Bearer/session auth (ignored for API-key
            auth)
          in: header
          name: X-Step-Up-Token
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/accounts.CreateExternalAccountRequest'
        description: body
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal.Response-accounts_ExternalAccountResponse
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal.ErrorResponse'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    accounts.CreateExternalAccountRequest:
      properties:
        account_holder_name:
          description: Name on the bank account. Fiat only, required.
          type: string
        account_number:
          description: >-
            Bank account number or IBAN. Fiat only, required. Encrypted at rest;
            only a hint is ever returned.
          type: string
        address:
          description: Destination wallet address. Digital only, required.
          type: string
        bank_name:
          description: Name of the beneficiary bank. Fiat only.
          type: string
        beneficiary_type:
          description: Who owns the bank account. Fiat only; defaults to business.
          enum:
            - individual
            - business
          type: string
        business_name:
          description: >-
            Beneficiary business name. Fiat only; defaults to
            account_holder_name for a business.
          type: string
        chain_id:
          description: Chain id. Digital only, required.
          example: 8453
          type: integer
        country:
          description: ISO 3166-1 alpha-2 country of the bank account. Fiat only, required.
          example: DE
          type: string
        currencies:
          description: >-
            Currencies this account can receive. A Fiat account takes exactly
            one.
          example:
            - USDC
          items:
            type: string
          minItems: 1
          type: array
        first_name:
          description: >-
            Beneficiary first name. Fiat only, required when beneficiary_type is
            individual.
          type: string
        last_name:
          description: >-
            Beneficiary last name. Fiat only, required when beneficiary_type is
            individual.
          type: string
        name:
          description: Display name.
          example: Treasury (Base)
          maxLength: 255
          type: string
        payment_rail:
          description: Payment rail to settle on. Fiat only; defaults to SEPA.
          enum:
            - SEPA
            - SEPA_INSTANT
          type: string
        reference:
          description: Merchant's own reference. Payouts can name this account by it.
          example: treasury-base
          maxLength: 255
          type: string
        type:
          allOf:
            - $ref: '#/components/schemas/docenums.CurrencyType'
          description: >-
            Kind of destination, mirroring our currency_type enum: Digital (a
            wallet) or Fiat (a bank account).
          enum:
            - Digital
            - Fiat
          example: Digital
      required:
        - currencies
        - name
        - reference
        - type
      type: object
    internal.Response-accounts_ExternalAccountResponse:
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/accounts.ExternalAccountResponse'
          description: Response payload when the request succeeded.
        error:
          description: True when the request failed.
          type: boolean
        message:
          description: Human-readable status or error message.
          type: string
      type: object
    internal.ErrorResponse:
      properties:
        error:
          allOf:
            - $ref: '#/components/schemas/internal.ErrorStruct'
          description: Error details including HTTP-style code and message.
      type: object
    docenums.CurrencyType:
      enum:
        - Fiat
        - Digital
      type: string
      x-enum-varnames:
        - CurrencyTypeFiat
        - CurrencyTypeDigital
    accounts.ExternalAccountResponse:
      properties:
        account_holder_name_hint:
          description: Masked account holder name. Fiat only.
          type: string
        account_number_hint:
          description: Masked tail of the bank account number. Fiat only.
          type: string
        address:
          description: Destination wallet address. Digital only.
          type: string
        bank_name:
          description: Name of the beneficiary bank. Fiat only.
          type: string
        beneficiary_type:
          description: Who owns the bank account. Fiat only.
          enum:
            - individual
            - business
          type: string
        chain_id:
          description: Chain id. Digital only.
          type: integer
        country:
          description: ISO 3166-1 alpha-2 country. Fiat only.
          type: string
        created_at:
          description: When the account was registered.
          type: string
        currencies:
          description: Currencies this account can receive.
          items:
            type: string
          type: array
        enabled:
          description: Whether this account can currently be paid out to.
          type: boolean
        id:
          description: >-
            Unique account identifier. Pass as destination_account_id when
            paying out.
          type: integer
        name:
          description: Display name.
          type: string
        payment_rail:
          description: Payment rail. Fiat only.
          enum:
            - SEPA
            - SEPA_INSTANT
          type: string
        reference:
          description: Merchant's own reference.
          type: string
        type:
          allOf:
            - $ref: '#/components/schemas/docenums.CurrencyType'
          description: Kind of destination.
          enum:
            - Digital
            - Fiat
      type: object
    internal.ErrorStruct:
      properties:
        code:
          description: |-
            Error code
            Example: 400
          example: 400
          type: integer
        errors:
          description: List of errors
          items:
            $ref: '#/components/schemas/internal.SingleError'
          type: array
        message:
          description: |-
            Error message
            Example: Insufficient quantity
          example: Insufficient quantity
          type: string
      type: object
    internal.SingleError:
      properties:
        domain:
          description: |-
            Domain
            Example: orders
          example: orders
          type: string
        reason:
          description: |-
            Error Reason
            Example: InsufficientQuantity
          example: InsufficientQuantity
          type: string
      type: object
  securitySchemes:
    ApiKeyAuth:
      in: header
      name: X-API-KEY
      type: apiKey

````