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

# List bank accounts

> Returns all statuses; identifiers are masked to last4. The full IBAN/account number is never serialized.



## OpenAPI

````yaml GET /v1/beneficiaries/{id}/bank-accounts
openapi: 3.0.0
info:
  title: Cleff API
  description: >-
    Payout orchestration platform. All endpoints under /v1/ require an API key
    in the Authorization header (Bearer ck_<env>_<id>_<secret>).
  version: 0.0.1
  contact: {}
servers: []
security: []
tags: []
paths:
  /v1/beneficiaries/{id}/bank-accounts:
    get:
      tags:
        - Beneficiaries
      summary: List a Beneficiary’s bank accounts (masked)
      description: >-
        Returns all statuses; identifiers are masked to last4. The full
        IBAN/account number is never serialized.
      operationId: BeneficiariesController_listBankAccounts
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListBankAccountsResponseDto'
        '401':
          description: Missing or invalid credentials
        '404':
          description: Beneficiary not found
      security:
        - api_key: []
components:
  schemas:
    ListBankAccountsResponseDto:
      type: object
      properties:
        bank_accounts:
          type: array
          items:
            $ref: '#/components/schemas/BankAccountDto'
      required:
        - bank_accounts
    BankAccountDto:
      type: object
      properties:
        id:
          type: string
        account_holder_name:
          type: string
        currency:
          type: string
          description: ISO 4217 currency code
        country:
          type: string
          description: ISO 3166-1 alpha-2 of the bank country
        status:
          type: string
          enum:
            - verified
            - pending_verification
            - suspended
        validation_status:
          type: string
          enum:
            - unvalidated
            - validated
          description: >-
            Cleff-side format/modulus validation outcome. Distinct from
            ownership verification on `status`.
        payout_usable:
          type: boolean
          description: >-
            Derived: true only when the account is `validated`, `verified`, AND
            not rail-rejected. The single flag a Payout destination check should
            read.
        rail_rejection_reason:
          type: object
          nullable: true
          description: >-
            The payment rail rejected this specific bank at registration, with
            the captured reason — e.g. a routing number the sponsor bank won't
            accept. null when the rail never rejected it. Reflects only the rail
            outcome, never KYC/compliance.
        last4:
          type: string
          description: Last 4 of the account identifier; masked
        account_type:
          type: string
          enum:
            - checking
            - savings
          nullable: true
          description: >-
            ACH account type; null when not captured. Non-sensitive, no
            decryption.
      required:
        - id
        - account_holder_name
        - currency
        - country
        - status
        - validation_status
        - payout_usable
        - last4
        - account_type
  securitySchemes:
    api_key:
      scheme: bearer
      bearerFormat: ck_<env>_<id>_<secret>
      type: http
      description: >-
        Cleff API key issued to a Business that self-registers via POST
        /v1/registration

````