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

# Create a customer-bound external account for your authenticated platform.

> Create a customer-bound external account for your authenticated platform. `platformAccountId` is the platform-side mapping field, while `accountInfo` is the bounded external-account details block. The response returns only safe masked account details.



## OpenAPI

````yaml /openapi/blips-public-reference.yaml post /customers/external-accounts
openapi: 3.1.0
info:
  title: BLIPS Public Reference API
  version: '2026-04-08'
  description: >-
    Public OpenAPI 3.1 subset for the first BLIPS Mintlify API Reference and
    Playground release. This document is bound to the confirmed Public Test
    Backend at https://public-test.blips.network, includes only the approved
    first-release public endpoints, uses only internal `$ref` values, and
    excludes callback-only webhook documentation and operator-only surfaces.
servers:
  - url: https://public-test.blips.network
    description: >-
      Confirmed Public Test Backend ingress target for public BLIPS API
      Reference, Playground, and internet-testable Try It flows.
security:
  - BasicAuth: []
tags:
  - name: Platform Setup
    description: >-
      Bootstrap and platform configuration surfaces for establishing the public
      BLIPS integration context.
  - name: Sandbox API
    description: >-
      Sandbox-only externally displayed helper surfaces. These routes either
      adjust quote inputs or create incoming-payment review cases, but they
      always feed the existing quote or transaction families and never become
      second outward API families.
  - name: Tokens
    description: >-
      Platform-scoped API credential create, list, detail, and revoke
      operations.
  - name: Customers
    description: >-
      Customer onboarding, profile lifecycle, and PPV payment-address issuance
      surfaces.
  - name: Accounts
    description: >-
      Customer-bound internal-account and external-account surfaces kept in the
      first-layer public contract.
  - name: Same-Currency Transfers
    description: >-
      Same-currency receiver lookup plus incoming and outgoing transfer
      primitives.
  - name: Cross-Currency Transfers
    description: >-
      PPV-first receiver lookup, quote creation/readback, and quote execution
      for cross-currency flows.
  - name: Transactions
    description: Transaction readback plus bounded incoming-review decision operations.
  - name: Webhooks
    description: >-
      Webhook connectivity verification surface for the public BLIPS
      integration.
paths:
  /customers/external-accounts:
    post:
      tags:
        - Accounts
      summary: >-
        Create a customer-bound external account for your authenticated
        platform.
      description: >-
        Create a customer-bound external account for your authenticated
        platform. `platformAccountId` is the platform-side mapping field, while
        `accountInfo` is the bounded external-account details block. The
        response returns only safe masked account details.
      operationId: createCustomerExternalAccount
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerExternalAccountCreateMvpRequest'
            examples:
              bankTransfer:
                value:
                  customerId: 00000000-0000-4000-8000-000000000001
                  currency: PHP
                  platformAccountId: ext_demo_customer_php_001
                  accountInfo:
                    accountType: BANK_TRANSFER
                    accountNumber: '1234567890'
                    routingNumber: '010100013'
                    accountCategory: CHECKING
                    bankName: Demo Bank
      responses:
        '200':
          description: Customer external account created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerExternalAccountCreateMvpResponse'
              examples:
                created:
                  value:
                    id: ext_acc_php_001
                    status: ACTIVE
                    customerId: 00000000-0000-4000-8000-000000000001
                    currency: PHP
                    platformAccountId: ext_demo_customer_php_001
                    accountInfo:
                      accountType: BANK_TRANSFER
                      accountCategory: CHECKING
                      bankName: Demo Bank
                      accountNumberLast4: '7890'
                      routingNumberLast4: '0013'
                    createdAt: '2026-04-05T12:00:00Z'
                    updatedAt: '2026-04-05T12:00:00Z'
        '400':
          description: Missing or invalid external-account create fields.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/CustomerExternalAccountCreateMvpErrorResponse
              examples:
                invalidRequest:
                  value:
                    status: 400
                    code: INVALID_REQUEST
                    message: Invalid external-account create request.
                    details:
                      platformAccountId: Required
        '401':
          description: Invalid or missing API credentials.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/CustomerExternalAccountCreateMvpErrorResponse
              examples:
                unauthorized:
                  value:
                    status: 401
                    code: UNAUTHORIZED
                    message: Invalid or missing API credentials
                    details: {}
        '404':
          description: Customer not found.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/CustomerExternalAccountCreateMvpErrorResponse
              examples:
                customerNotFound:
                  value:
                    status: 404
                    code: CUSTOMER_NOT_FOUND
                    message: Customer not found
                    details: {}
        '409':
          description: >-
            Active external account already exists for this customer and
            currency.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/CustomerExternalAccountCreateMvpErrorResponse
              examples:
                currencyConflict:
                  value:
                    status: 409
                    code: EXTERNAL_ACCOUNT_CURRENCY_CONFLICT
                    message: >-
                      Active external account already exists for this customer
                      and currency. Delete it first.
                    details:
                      currency: PHP
                      existingExternalAccountId: ext_acc_php_001
        '410':
          description: Customer already deleted.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/CustomerExternalAccountCreateMvpErrorResponse
              examples:
                customerDeleted:
                  value:
                    status: 410
                    code: CUSTOMER_DELETED
                    message: Customer already deleted
                    details: {}
        '500':
          description: Internal service error.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/CustomerExternalAccountCreateMvpErrorResponse
              examples:
                internalError:
                  value:
                    status: 500
                    code: INTERNAL_ERROR
                    message: Internal service error
                    details: {}
      security:
        - BasicAuth: []
components:
  schemas:
    CustomerExternalAccountCreateMvpRequest:
      type: object
      description: >-
        Create a customer-bound external account for an existing customer under
        your authenticated platform.
      properties:
        customerId:
          type: string
          description: >-
            Existing BLIPS customer identifier for the customer who owns this
            external account. Create the customer first and then bind the
            external account here.
        currency:
          type: string
          description: Fiat ISO 4217 currency code.
        platformAccountId:
          type: string
          description: >-
            Stable platform-side mapping identifier/reference for this external
            account.
        accountInfo:
          $ref: >-
            #/components/schemas/CustomerExternalAccountCreateMvpAccountInfoRequest
          description: >-
            External-account details block. `accountInfo.accountType` is the
            bounded rail/type discriminator for current bank-transfer-first
            flows and any future account-type variants.
      required:
        - customerId
        - currency
        - platformAccountId
        - accountInfo
      additionalProperties: false
    CustomerExternalAccountCreateMvpResponse:
      type: object
      description: >-
        Frozen MVP customer-bound external-account create response with
        safe/masked account information.
      properties:
        id:
          type: string
          description: BLIPS identifier for the bound external account.
        status:
          type: string
          description: Lifecycle status of the bound external account.
        customerId:
          type: string
          description: >-
            BLIPS customer identifier for the customer who owns this external
            account.
        currency:
          type: string
          description: Fiat ISO 4217 currency code for the bound external account.
        platformAccountId:
          type: string
          description: >-
            Stable platform-side mapping identifier/reference for this external
            account.
        accountInfo:
          $ref: >-
            #/components/schemas/CustomerExternalAccountCreateMvpMaskedAccountInfoResponse
          description: Safe masked external-account details returned after binding.
        createdAt:
          type: string
          format: date-time
          description: Creation timestamp for the bound external account.
        updatedAt:
          type: string
          format: date-time
          description: Most recent update timestamp for the bound external account.
      required:
        - id
        - status
        - customerId
        - currency
        - platformAccountId
        - accountInfo
        - createdAt
        - updatedAt
      additionalProperties: false
    CustomerExternalAccountCreateMvpErrorResponse:
      type: object
      description: Public error envelope for customer external-account create failures.
      additionalProperties: false
      required:
        - status
        - code
        - message
        - details
      properties:
        status:
          type: integer
          description: >-
            HTTP status code returned for the failed customer external-account
            create request.
        code:
          type: string
          description: >-
            Stable public error code for the failed customer external-account
            create request.
        message:
          type: string
          description: >-
            Human-readable summary of the customer external-account create
            failure.
        details:
          type: object
          nullable: true
          additionalProperties: true
          description: Additional structured error context when present.
    CustomerExternalAccountCreateMvpAccountInfoRequest:
      type: object
      description: >-
        External-account details block for the customer-bound destination
        account.
      properties:
        accountType:
          type: string
          description: >-
            External account rail/type for this account, for example
            `BANK_TRANSFER`. Future account-type variants extend this bounded
            details block.
        accountNumber:
          type: string
          description: Account number for the external destination account.
        routingNumber:
          type: string
          description: >-
            Routing or bank-network identifier for the external destination
            account.
        accountCategory:
          type: string
          description: >-
            Account category for the external account, for example `CHECKING` or
            `SAVINGS`.
        bankName:
          type: string
          description: Bank or financial institution name for the external account.
      required:
        - accountType
        - accountNumber
        - routingNumber
        - accountCategory
        - bankName
      additionalProperties: false
    CustomerExternalAccountCreateMvpMaskedAccountInfoResponse:
      type: object
      description: Safe/masked external-account details returned after binding.
      properties:
        accountType:
          type: string
          description: External account rail/type returned for the bound account.
        accountCategory:
          type:
            - string
            - 'null'
          description: Account category returned for the bound external account.
        bankName:
          type:
            - string
            - 'null'
          description: Bank or financial institution name when available.
        accountNumberLast4:
          type:
            - string
            - 'null'
          description: Last four digits of the account number when available.
        routingNumberLast4:
          type:
            - string
            - 'null'
          description: >-
            Last four digits of the routing or bank-network identifier when
            available.
      required:
        - accountType
        - accountCategory
        - bankName
        - accountNumberLast4
        - routingNumberLast4
      additionalProperties: false
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
      description: >-
        Integration-key Basic Auth (`clientId:clientSecret`) as documented in
        docs/public/AUTHENTICATION.md.

````