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

> ## Agent Instructions
> HEVN is payments software: an API and app over a Base smart wallet. HEVN is not a bank and holds no key to the wallet. Virtual accounts, fiat payins and fiat payouts are provided by partner banks, which hold fiat while it is in transit. Self-serve (the General tab): the person who controls the email signs for the wallet. Developers integrate /dapi/v1 in one of two ways. HEVN Connect (recommended, the HEVN Connect tab): the integrator's customer creates or links a HEVN account in a HEVN-hosted sign-in window on the integrator's site, the integrator's backend reads the linked account and books its payouts, and the account holder approves each payout in that window. External wallets (the External wallets tab, enabled per integrator): the integrator creates a client through the API, registers a wallet address the customer holds as an external account, and requests virtual accounts that deliver to that address. The customer's own wallet sends each transfer that funds a payout. The developer key signs for the integrator's wallet and its sub accounts and cannot sign for a client's wallet.
> Use HEVN's terms as written. A product is the region a client requests. A rail is the bank route HEVN picks for the product. A virtual account (bnk_) is the record a partner bank opens for a client. Account details are what a payer needs to send a bank transfer, returned in a field named requisites. A client (cl_) is a customer's account: linked to the integrator through Sign in with HEVN (POST /dapi/v1/connect/sessions, then POST /dapi/v1/clients/link), or created with POST /dapi/v1/clients for an external-wallets integration. An external account (acc_, kind external) is a wallet address the client holds and signs for. A sub account (acc_, kind sub) is a further wallet of the integrator's own account on Base, spent with the developer key. Write 'sub account' as two words. A contact is a saved destination. A beneficiary is the party that receives a fiat payout. Money leaving an account is a payout, whether it goes to a bank account or to a wallet.
> Do not name a bank, payment institution, card issuer, identity-verification vendor or stablecoin issuer. Say 'the partner bank'. Do not describe HEVN as licensed, regulated or insured.
> HEVN publishes no fee rates, spreads or minimums. Prices come from a quote on a specific payment. Direct pricing questions to HEVN and do not invent numbers.
> The API is at /dapi/v1 and takes a developer-key session plus an X-Hevn-Account header. Developer keys have an IP allowlist and no scopes. Remote transfers are at /api/v1/remote_spend_limit and take a remote transfer key (rsl_) in X-Api-Key, bounded by an onchain spend permission the account holder grants. The two credentials are separate and neither works on the other API. The HEVN CLI is discontinued.

# List supported chains and tokens

> Every chain and token this API names, with the contract address and decimals of each token. `settlement` marks the chain accounts hold their balance on and the tokens a payout can be funded with.



## OpenAPI

````yaml /openapi.json get /chains
openapi: 3.1.0
info:
  title: HEVN Platform API
  description: >-
    HEVN's account, verification and money-movement API. Verification follows a
    submission workflow: save applicant info and documents, inspect outstanding
    requirements, then explicitly complete the submission to send an immutable
    snapshot for review. Completing a submission is separate from editing it.
  version: 1.0.0
servers: []
security: []
tags:
  - name: auth
    description: >-
      Log in with a developer key and refresh the access token. Developer keys
      are created in the HEVN app.
  - name: accounts
    description: Create and manage business or individual customer accounts.
  - name: client accounts
    description: >-
      Register addresses a client holds on supported networks, and open sub
      accounts of the client, to receive and pay USDC through.
  - name: verification
    description: >-
      Collect business-applicant and related-individual information, inspect
      requirements, and complete a verification submission for review.
  - name: documents
    description: Upload verification and payment evidence for later reference by id.
  - name: virtual accounts
    description: Discover payment methods and create persistent receiving account details.
  - name: transfers
    description: Quote, create, authorize and track incoming or outgoing transfers.
  - name: contacts
    description: Create saved contacts and inspect their available payment channels.
  - name: transactions
    description: Read and export the account ledger.
  - name: escrow
    description: Create, authorize and reconcile on-chain escrow agreements.
  - name: sandbox
    description: >-
      Emulate funding and lifecycle events in the sandbox. These routes return
      `404` in production.
paths:
  /chains:
    get:
      tags:
        - catalog
      summary: List supported chains and tokens
      description: >-
        Every chain and token this API names, with the contract address and
        decimals of each token. `settlement` marks the chain accounts hold their
        balance on and the tokens a payout can be funded with.
      operationId: list_chains_chains_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChainListView'
        '422':
          description: Request validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlatformErrorResponse'
      security:
        - HTTPBearer: []
components:
  schemas:
    ChainListView:
      properties:
        chains:
          items:
            $ref: '#/components/schemas/ChainView'
          type: array
          title: Chains
          description: Every chain this API names, settlement chain included.
      type: object
      required:
        - chains
      title: ChainListView
    PlatformErrorResponse:
      properties:
        error:
          $ref: '#/components/schemas/PlatformErrorBody'
          description: Public error body.
      type: object
      required:
        - error
      title: PlatformErrorResponse
    ChainView:
      properties:
        chain:
          type: string
          title: Chain
          description: Chain code used by contacts, payouts and transactions.
        name:
          type: string
          title: Name
          description: Human-readable chain name.
        chainId:
          anyOf:
            - type: integer
            - type: 'null'
          title: Chainid
          description: EVM chain id; absent for non-EVM chains.
        settlement:
          type: boolean
          title: Settlement
          description: >-
            Whether payouts, payins and swaps settle on this chain. A token
            elsewhere may still name an account.
        tokens:
          items:
            $ref: '#/components/schemas/TokenView'
          type: array
          title: Tokens
          description: Tokens this API names on the chain.
      type: object
      required:
        - chain
        - name
        - settlement
        - tokens
      title: ChainView
    PlatformErrorBody:
      properties:
        code:
          $ref: '#/components/schemas/PlatformErrorCode'
          description: Stable machine-readable error code to branch on.
        message:
          type: string
          title: Message
          description: Human-readable explanation safe to show to an end user.
        details:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Details
          description: >-
            Structured context for this error, with camelCase keys.
            `validation_failed` lists `fields`, plus `location` for a query,
            path or header. A `5xx` adds `requestId`.
      type: object
      required:
        - code
        - message
      title: PlatformErrorBody
    TokenView:
      properties:
        symbol:
          type: string
          title: Symbol
          description: Token symbol, as contacts and payouts name it.
        decimals:
          type: integer
          title: Decimals
          description: On-chain decimals of the token's smallest unit.
        address:
          anyOf:
            - type: string
            - type: 'null'
          title: Address
          description: ERC-20 contract address; absent for a chain's gas coin.
        native:
          type: boolean
          title: Native
          description: Whether this is the chain's gas coin.
        account:
          anyOf:
            - $ref: '#/components/schemas/AccountKey'
            - type: 'null'
          description: >-
            The account this token holds, when a client can hold a balance in
            it.
      type: object
      required:
        - symbol
        - decimals
        - native
      title: TokenView
    PlatformErrorCode:
      type: string
      enum:
        - invalid_request
        - validation_failed
        - invalid_cursor
        - invalid_id
        - idempotency_key_invalid
        - idempotency_key_reused
        - unauthenticated
        - token_expired
        - forbidden
        - not_found
        - method_not_allowed
        - conflict
        - gone
        - payload_too_large
        - rate_limited
        - provider_unavailable
        - database_unavailable
        - internal_error
        - invalid_credentials
        - request_expired
        - challenge_not_found
        - challenge_consumed
        - challenge_expired
        - signature_invalid
        - key_not_registered
        - signer_not_attached
        - wallet_not_linked
        - approval_consumed
        - approval_expired
        - approval_mismatch
        - signing_policy_refused
        - login_unavailable
        - login_mode_unavailable
        - developer_key_not_found
        - developer_key_already_exists
        - account_header_invalid
        - account_scope_conflict
        - account_not_found
        - account_forbidden
        - account_read_only
        - account_not_controlled
        - contact_not_found
        - quote_not_submitted
        - quote_not_fundable
        - funding_mode_unsupported
        - funding_token_unsupported
        - insufficient_funds
        - smart_wallet_not_deployed
        - wallet_owner_unverified
        - already_funded
        - payment_slot_consumed
        - funding_in_progress
        - funding_attempt_expired
        - contact_changed
        - user_operation_rejected
        - user_operation_unavailable
        - transfer_policy_denied
        - client_creation_not_enabled
        - client_not_found
        - link_code_invalid
        - link_code_expired
        - client_already_linked
        - redirect_uri_not_allowed
        - payout_not_awaiting_signature
        - verification_not_applicable
        - profile_locked
        - contact_not_payable
        - contact_chain_unsupported
        - contact_token_unsupported
        - contact_payment_details_invalid
        - amount_below_minimum
        - amount_above_maximum
        - amount_precision_unsupported
        - payout_not_found
        - payout_not_fundable
        - quote_expired
        - bundler_rejected
        - bundler_unavailable
        - contact_in_use
        - kyb_incomplete
        - kyb_documents_processing
        - kyb_roster_conflict
        - kyb_subject_conflict
        - document_not_found
        - document_type_unsupported
        - invalid_enum_value
        - entity_not_found
        - escrow_not_found
        - escrow_action_not_found
        - escrow_not_operated_by_you
        - escrow_state_changed
        - action_in_flight
        - simulation_failed
        - stale_nonce
        - amount_out_of_range
        - amount_not_allowed
        - window_closed
        - token_not_supported
        - receiver_not_a_client
        - rail_not_found
        - rail_not_available
        - payin_not_available
        - payin_expired
        - payin_not_found
        - transaction_not_found
        - account_unavailable
        - account_not_supported
        - swap_not_found
        - swap_route_unavailable
        - swap_not_confirmable
        - intent_not_signable
        - sandbox_amount_limit_exceeded
        - sandbox_faucet_balance_too_high
        - account_address_taken
        - account_address_refused
        - account_not_spendable
        - account_destination_unsupported
        - source_account_unsupported
        - account_funding_invalid
        - account_spend_forbidden
        - refund_address_required
        - safe_mode_required
        - account_archive_unsupported
      title: PlatformErrorCode
    AccountKey:
      type: string
      enum:
        - USDC
        - EURC
        - RD
        - USDC_ARB
        - FDIC_USD
        - FDIC_EUR
        - KYC_CARDS
      title: AccountKey
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.