Hevn Inc Banks API

The Banks API from Hevn Inc — 14 operation(s) for banks.

OpenAPI Specification

hevn-inc-banks-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: HEVN 2FA Banks API
  description: Backend API for HEVN mobile neobank
  version: 0.1.2
servers:
- url: https://api.hevn.finance
  description: Production
tags:
- name: Banks
paths:
  /api/v1/bank/{rail}/pre-approve:
    post:
      tags:
      - Banks
      summary: Pre-approve a bank rail
      description: Read-only KYC info for the rail. Does not mutate Bank rows.
      operationId: pre_approve_bank_api_v1_bank__rail__pre_approve_post
      security:
      - HTTPBearer: []
      parameters:
      - name: rail
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/BankRail'
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankPreApproveResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/bank/{rail}/activate:
    post:
      tags:
      - Banks
      summary: Activate a bank rail
      description: Create or upsert a Bank row for the given rail. Idempotent.
      operationId: activate_bank_api_v1_bank__rail__activate_post
      security:
      - HTTPBearer: []
      parameters:
      - name: rail
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/BankRail'
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/banks/payin/quote:
    post:
      tags:
      - Banks
      summary: Get a pooled bank payin quote
      description: Create a Swipelux quote for paying into the user's custodial wallet via a pooled bank rail.
      operationId: create_bank_payin_quote_api_v1_banks_payin_quote_post
      security:
      - HTTPBearer: []
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankPayinQuoteRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankPayinQuoteResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/banks/payin/quote/submit:
    post:
      tags:
      - Banks
      summary: Submit a pooled bank payin quote
      description: Execute a Swipelux payin quote and return payment instructions.
      operationId: submit_bank_payin_quote_api_v1_banks_payin_quote_submit_post
      security:
      - HTTPBearer: []
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankPayinQuoteSubmitRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankPayinQuoteSubmitResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/banks/payin/quote/{quote_id}/cancel:
    post:
      tags:
      - Banks
      summary: Cancel a locally tracked bank payin quote
      description: Mark the local FiatTransfer created from a Swipelux payin quote as canceled.
      operationId: cancel_bank_payin_quote_api_v1_banks_payin_quote__quote_id__cancel_post
      security:
      - HTTPBearer: []
      parameters:
      - name: quote_id
        in: path
        required: true
        schema:
          type: string
          title: Quote Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankPayinQuoteCancelResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/banks/activate:
    post:
      tags:
      - Banks
      summary: Activate multiple bank rails
      description: Create or upsert Bank rows for multiple rails in one request. Returns a per-rail result so one pending or failed rail does not abort the batch.
      operationId: activate_banks_api_v1_banks_activate_post
      security:
      - HTTPBearer: []
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankActivateRailsRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankActivateRailsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/banks:
    get:
      tags:
      - Banks
      summary: List all bank rails
      description: Return every supported bank rail. Rails the user has activated come from the Bank table (with status / iban_data); rails the user has not activated are returned from the static BANK_INFO registry with status=not_started and iban_data=None. If a rail's provider KYC is APPROVED but no ACTIVE Bank row exists yet, syncs lazily from Swipelux / Align before returning.
      operationId: list_banks_api_v1_banks_get
      security:
      - HTTPBearer: []
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BanksListResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/accounts/bank/{rail}/pre-approve:
    post:
      tags:
      - Banks
      summary: Pre-approve a bank rail
      description: Read-only KYC info for the rail. Does not mutate Bank rows.
      operationId: pre_approve_bank_package_alias_api_v1_accounts_bank__rail__pre_approve_post
      security:
      - HTTPBearer: []
      parameters:
      - name: rail
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/BankRail'
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankPreApproveResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/accounts/bank/{rail}/activate:
    post:
      tags:
      - Banks
      summary: Activate a bank rail
      description: Create or upsert a Bank row for the given rail. Idempotent.
      operationId: activate_bank_package_alias_api_v1_accounts_bank__rail__activate_post
      security:
      - HTTPBearer: []
      parameters:
      - name: rail
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/BankRail'
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/accounts/banks/payin/quote:
    post:
      tags:
      - Banks
      summary: Get a pooled bank payin quote
      description: Create a Swipelux quote for paying into the user's custodial wallet via a pooled bank rail.
      operationId: create_bank_payin_quote_package_alias_api_v1_accounts_banks_payin_quote_post
      security:
      - HTTPBearer: []
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankPayinQuoteRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankPayinQuoteResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/accounts/banks/payin/quote/submit:
    post:
      tags:
      - Banks
      summary: Submit a pooled bank payin quote
      description: Execute a Swipelux payin quote and return payment instructions.
      operationId: submit_bank_payin_quote_package_alias_api_v1_accounts_banks_payin_quote_submit_post
      security:
      - HTTPBearer: []
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankPayinQuoteSubmitRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankPayinQuoteSubmitResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/accounts/banks/payin/quote/{quote_id}/cancel:
    post:
      tags:
      - Banks
      summary: Cancel a locally tracked bank payin quote
      description: Mark the local FiatTransfer created from a Swipelux payin quote as canceled.
      operationId: cancel_bank_payin_quote_package_alias_api_v1_accounts_banks_payin_quote__quote_id__cancel_post
      security:
      - HTTPBearer: []
      parameters:
      - name: quote_id
        in: path
        required: true
        schema:
          type: string
          title: Quote Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankPayinQuoteCancelResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/accounts/banks/activate:
    post:
      tags:
      - Banks
      summary: Activate multiple bank rails
      description: Create or upsert Bank rows for multiple rails in one request. Returns a per-rail result so one pending or failed rail does not abort the batch.
      operationId: activate_banks_package_alias_api_v1_accounts_banks_activate_post
      security:
      - HTTPBearer: []
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankActivateRailsRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankActivateRailsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/accounts/banks:
    get:
      tags:
      - Banks
      summary: List all bank rails
      description: Return every supported bank rail. Rails the user has activated come from the Bank table (with status / iban_data); rails the user has not activated are returned from the static BANK_INFO registry with status=not_started and iban_data=None. If a rail's provider KYC is APPROVED but no ACTIVE Bank row exists yet, syncs lazily from Swipelux / Align before returning.
      operationId: list_banks_package_alias_api_v1_accounts_banks_get
      security:
      - HTTPBearer: []
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BanksListResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    app__schemas__base__ContactRelationship:
      type: string
      enum:
      - charity
      - commercial_investment
      - corporate_card
      - credit_card
      - dividend
      - family
      - financial_services
      - good_sold
      - goods_bought
      - government
      - insurance
      - intergroup_transfer
      - intra_group_dividends
      - information_technology
      - leasing
      - loan_charges
      - merchant_settlement
      - mobile_wallet
      - none
      - non_resident_transfer_between_accounts
      - pension
      - personal_expenses
      - prepaid_cards
      - professional
      - rental
      - resident_transfer_between_accounts
      - salaries
      - telecommunications
      - travel
      - utility_bill
      title: ContactRelationship
      description: 'Unified contact relationship / transfer purpose.


        Values match Align AlignTransferPurpose (the more granular set).

        Mapped to Swipelux AccountHolderRelationship via ``swipelux_relationship``.'
    BankPayinQuoteRequest:
      properties:
        amount:
          anyOf:
          - type: number
            exclusiveMinimum: 0
          - type: string
            pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
        bankAccountId:
          type: string
          format: uuid
          title: Bankaccountid
        memo:
          anyOf:
          - type: string
            maxLength: 500
          - type: 'null'
          title: Memo
      type: object
      required:
      - amount
      - bankAccountId
      title: BankPayinQuoteRequest
      description: Request a Swipelux payin quote for a pooled bank rail.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    BankRequestedRails:
      properties:
        us:
          $ref: '#/components/schemas/BankRequestedRailSettings'
        swift:
          $ref: '#/components/schemas/BankRequestedRailSettings'
        eu:
          $ref: '#/components/schemas/BankRequestedRailSettings'
        uae:
          $ref: '#/components/schemas/BankRequestedRailSettings'
      type: object
      title: BankRequestedRails
      description: Rails the user is interested in opening.
    BankRequestedRailSettings:
      properties:
        pooled:
          type: boolean
          title: Pooled
          default: false
        named:
          type: boolean
          title: Named
          default: false
      type: object
      title: BankRequestedRailSettings
      description: User interest in a bank rail group.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    BankPayinQuoteSubmitRequest:
      properties:
        quoteId:
          type: string
          title: Quoteid
      type: object
      required:
      - quoteId
      title: BankPayinQuoteSubmitRequest
      description: Submit a previously created Swipelux bank payin quote.
    BankActivateRailsRequest:
      properties:
        rails:
          items:
            $ref: '#/components/schemas/BankRail'
          type: array
          title: Rails
      type: object
      required:
      - rails
      title: BankActivateRailsRequest
      description: Bulk bank activation request.
    FiatPaymentType:
      type: string
      enum:
      - sepa
      - swift
      - ach
      - uaefts
      - fedwire
      title: FiatPaymentType
      description: 'Canonical fiat payment rail used for ``account_type`` discrimination,

        bank-rail methods, and contact/transaction type alignment.'
    BankPayinQuoteResponse:
      properties:
        quoteId:
          type: string
          title: Quoteid
        provider:
          $ref: '#/components/schemas/FiatProvider'
          default: swipelux
        bankAccountId:
          type: string
          format: uuid
          title: Bankaccountid
        rail:
          $ref: '#/components/schemas/BankRail'
        paymentRail:
          type: string
          title: Paymentrail
        fromAmount:
          type: string
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Fromamount
        fromCurrency:
          type: string
          title: Fromcurrency
        toAmount:
          type: string
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Toamount
        toCurrency:
          type: string
          title: Tocurrency
          default: USDC
        feeAmount:
          anyOf:
          - type: string
            pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          - type: 'null'
          title: Feeamount
        feeCurrency:
          anyOf:
          - type: string
          - type: 'null'
          title: Feecurrency
        rate:
          anyOf:
          - type: string
            pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          - type: 'null'
          title: Rate
        expiresAt:
          type: string
          format: date-time
          title: Expiresat
      type: object
      required:
      - quoteId
      - bankAccountId
      - rail
      - paymentRail
      - fromAmount
      - fromCurrency
      - toAmount
      - expiresAt
      title: BankPayinQuoteResponse
      description: Swipelux payin quote response normalized for bank payins.
    BankResponse:
      properties:
        rail:
          $ref: '#/components/schemas/BankRail'
        bankName:
          type: string
          title: Bankname
        country:
          type: string
          title: Country
        currency:
          type: string
          title: Currency
        type:
          $ref: '#/components/schemas/FiatPaymentType'
        method:
          $ref: '#/components/schemas/FiatPaymentType'
        methods:
          items:
            $ref: '#/components/schemas/FiatPaymentType'
          type: array
          title: Methods
        pooled:
          type: boolean
          title: Pooled
        compliance:
          type: integer
          title: Compliance
        bankIcon:
          type: string
          title: Bankicon
        depositFee:
          type: number
          title: Depositfee
        timeToOpen:
          $ref: '#/components/schemas/BankTimeToOpen'
        status:
          $ref: '#/components/schemas/IBANStatus'
        accountHolderBusinessName:
          anyOf:
          - type: string
          - type: 'null'
          title: Accountholderbusinessname
        accountHolderFirstName:
          anyOf:
          - type: string
          - type: 'null'
          title: Accountholderfirstname
        accountHolderLastName:
          anyOf:
          - type: string
          - type: 'null'
          title: Accountholderlastname
        ibanData:
          anyOf:
          - $ref: '#/components/schemas/IBANAccountDetails-Output'
          - $ref: '#/components/schemas/USExternalAccountDetails-Output'
          - $ref: '#/components/schemas/SwiftAccountDetails-Output'
          - type: 'null'
          title: Ibandata
        id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Id
        externalAccountId:
          anyOf:
          - type: string
          - type: 'null'
          title: Externalaccountid
        createdAt:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Createdat
      type: object
      required:
      - rail
      - bankName
      - country
      - currency
      - type
      - method
      - methods
      - pooled
      - compliance
      - bankIcon
      - depositFee
      - timeToOpen
      - status
      title: BankResponse
      description: 'Bank row as returned to clients.


        Merges static rail metadata (from BANK_INFO) with per-user state. For rails

        the user hasn''t activated yet, ``id`` / ``external_account_id`` / ``created_at``

        are ``None`` and ``status`` is ``not_started``.'
    USExternalAccountDetails-Output:
      properties:
        bankName:
          type: string
          title: Bankname
        bankAddress:
          anyOf:
          - type: string
          - type: 'null'
          title: Bankaddress
        currency:
          anyOf:
          - type: string
          - type: 'null'
          title: Currency
        accountHolderType:
          $ref: '#/components/schemas/AlignAccountHolderType'
        accountHolderFirstName:
          anyOf:
          - type: string
          - type: 'null'
          title: Accountholderfirstname
        accountHolderLastName:
          anyOf:
          - type: string
          - type: 'null'
          title: Accountholderlastname
        accountHolderBusinessName:
          anyOf:
          - type: string
          - type: 'null'
          title: Accountholderbusinessname
        accountHolderAddress:
          anyOf:
          - $ref: '#/components/schemas/UserAddress'
          - type: 'null'
        relationship:
          anyOf:
          - $ref: '#/components/schemas/app__schemas__base__ContactRelationship'
          - type: 'null'
        paymentReference:
          anyOf:
          - type: string
          - type: 'null'
          title: Paymentreference
        accountType:
          type: string
          enum:
          - ach
          - fedwire
          title: Accounttype
          default: ach
        us:
          $ref: '#/components/schemas/USAccountDetails'
        beneficiaryName:
          anyOf:
          - type: string
          - type: 'null'
          title: Beneficiaryname
          description: Frontend-only alias derived from account holder fields.
          readOnly: true
      type: object
      required:
      - bankName
      - accountHolderType
      - us
      - beneficiaryName
      title: USExternalAccountDetails
      description: US domestic (ACH) external account.
    BankPayinQuoteCancelResponse:
      properties:
        transferId:
          type: string
          format: uuid
          title: Transferid
        quoteId:
          type: string
          title: Quoteid
        status:
          type: string
          title: Status
      type: object
      required:
      - transferId
      - quoteId
      - status
      title: BankPayinQuoteCancelResponse
      description: Response after canceling a locally tracked bank payin quote.
    BankActivateRailsResponse:
      properties:
        results:
          items:
            $ref: '#/components/schemas/BankActivateRailResult'
          type: array
          title: Results
      type: object
      required:
      - results
      title: BankActivateRailsResponse
      description: Bulk bank activation response.
    USAccountDetails:
      properties:
        accountNumber:
          type: string
          title: Accountnumber
        routingNumber:
          type: string
          title: Routingnumber
      type: object
      required:
      - accountNumber
      - routingNumber
      title: USAccountDetails
      description: US domestic account details (ACH).
    BanksListResponse:
      properties:
        banks:
          items:
            $ref: '#/components/schemas/BankResponse'
          type: array
          title: Banks
        allOptions:
          items:
            $ref: '#/components/schemas/BankResponse'
          type: array
          title: Alloptions
        rails:
          $ref: '#/components/schemas/BankRequestedRails'
      type: object
      required:
      - banks
      - rails
      title: BanksListResponse
      description: List bank rails plus user's requested rail preferences.
    AlignAccountHolderType:
      type: string
      enum:
      - individual
      - business
      title: AlignAccountHolderType
      description: Account holder type.
    SwiftDetails:
      properties:
        accountNumber:
          type: string
          title: Accountnumber
        routingNumber:
          anyOf:
          - type: string
          - type: 'null'
          title: Routingnumber
        bic:
          type: string
          title: Bic
      type: object
      required:
      - accountNumber
      - bic
      title: SwiftDetails
      description: SWIFT (international wire) account details.
    UserAddress:
      properties:
        streetAddress:
          anyOf:
          - type: string
          - type: 'null'
          title: Streetaddress
        addressLine2:
          anyOf:
          - type: string
          - type: 'null'
          title: Addressline2
        city:
          anyOf:
          - type: string
          - type: 'null'
          title: City
        state:
          anyOf:
          - type: string
          - type: 'null'
          title: State
        country:
          anyOf:
          - $ref: '#/components/schemas/CountryCode'
          - type: 'null'
        zip:
          anyOf:
          - type: string
          - type: 'null'
          title: Zip
      type: object
      title: UserAddress
      description: 'Address schema for user.


        Canonical field names: street_address, address_line_2, city, state, country, zip.

        Accepts legacy Align/IBAN field names (street_line_1, street_line_2, postal_code)

        for backward compatibility with existing JSONB data.'
    IBANAccountDetails-Output:
      properties:
        bankName:
          type: string
          title: Bankname
        bankAddress:
          anyOf:
          - type: string
          - type: 'null'
          title: Bankaddress
        currency:
          anyOf:
          - type: string
          - type: 'null'
          title: Currency
        accountHolderType:
          $ref: '#/components/schemas/AlignAccountHolderType'
        accountHolderFirstName:
          anyOf:
          - type: string
          - type: 'null'
          title: Accountholderfirstname
        accountHolderLastName:
          anyOf:
          - type: string
          - type: 'null'
          title: Accountholderlastname
        accountHolderBusinessName:
          anyOf:
          - type: string
          - type: 'null'
          title: Accountholderbusinessname
        accountHolderAddress:
          anyOf:
          - $ref: '#/components/schemas/UserAddress'
          - type: 'null'
        relationship:
          anyOf:
          - $ref: '#/components/schemas/app__schemas__base__ContactRelationship'
          - type: 'null'
        paymentReference:
          anyOf:
          - type: string
          - type: 'null'
          title: Paymentreference
        accountType:
          type: string
          enum:
          - sepa
          - uaefts
          title: Accounttype
          default: sepa
        ibanNumber:
          type: string
          title: Ibannumber
        bic:
          anyOf:
          - type: string
          - type: 'null'
          title: Bic
        beneficiaryName:
          anyOf:
          - type: string
          - type: 'null'
          title: Beneficiaryname
          description: Frontend-only alias derived from account holder fields.
          readOnly: true
      type: object
      required:
      - bankName
      - accountHolderType
      - ibanNumber
      - beneficiaryName
      title: IBANAccountDetails
      description: IBAN (SEPA) external account.
    BankActivateRailResult:
      properties:
        rail:
          $ref: '#/components/schemas/BankRail'
        ok:
          type: boolean
          title: Ok
        bank:
          anyOf:
          - $ref: '#/components/schemas/BankResponse'
          - type: 'null'
        error:
          anyOf:
          - $ref: '#/components/schemas/BankActivateRailError'
          - type: 'null'
      type: object
      required:
      - rail
      - ok
      title: BankActivateRailResult
      description: Per-rail bulk activation result.
    BankActivateRailError:
      properties:
        statusCode:
          type: integer
          title: Statuscode
        message:
          type: string
          title: Message
        detail:
          anyOf:
          - {}
          - type: 'null'
          title: Detail
      type: object
      required:
      - statusCode
      - message
      title: BankActivateRailError
      description: Per-rail bulk activation error.
    BankPayinQuoteSubmitResponse:
      properties:
        quoteId:
          type: string
          title: Quoteid
        bankAccountId:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Bankaccountid
        resource:
          anyOf:
          - type: string
          - type: 'null'
          title: Resource
        recipientDetails:
          any

# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hevn-inc/refs/heads/main/openapi/hevn-inc-banks-api-openapi.yml