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

# Get account-type requirements

> The owner and detail fields required to create each External Account type through `POST /external-accounts` on this project — one ruleset per type. A type absent from `requirements` cannot be created through `POST /external-accounts` on this project. Cards are never listed here; card registration is not part of the public API.

`walletExternal` is resolved from the project's wallet-provisioning vendor. `bankUs` is resolved per customer on a project holding both vendors: pass `customerId` to run the same resolution create runs for that customer — including its refusal when that customer cannot create `bankUs` at all — or omit it to receive the conservative default flagged with `routingDependsOnCustomer`.



## OpenAPI

````yaml /api-reference/openapi.yaml get /reference/account-type-requirements
openapi: 3.0.3
info:
  title: Polygon OMS Public API
  version: v26.10.20-0001
  description: >-
    Unified API for moving money between crypto and fiat. Three ways to move
    money: Transactions (instant, wallet or card funded, including Cash-In for
    in-person cash deposits), Deposit Addresses (reusable crypto deposit
    configurations), and Virtual Accounts (dedicated bank accounts that
    auto-convert fiat to crypto). Standard transactions follow a two-step flow:
    create a Quote (pricing), then create a Transaction (execution). Cash-in
    codes generate a one-time deposit code for in-person cash deposits at retail
    locations.
  contact:
    name: Polygon OMS
    url: https://oms.polygon.technology
servers:
  - url: https://sandbox-api.polygon.technology/v0.13
    description: Sandbox
  - url: https://api.polygon.technology/v0.13
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Auth
    description: Authentication via OMS API key and secret
  - name: Customers
    description: Customer management and KYC
  - name: Customer
  - name: Wallet
  - name: Quote
  - name: Transaction
  - name: Transfer
  - name: CashIns
  - name: CashLocation
  - name: Sandbox
  - name: VirtualAccount
  - name: Counterparty
  - name: ExternalAccount
  - name: Reference
  - name: DepositAddress
  - name: Indexer
    description: >-
      Read token balances, prices, and transaction history across EVM networks,
      Solana, and Tron. Indexer methods are webRPC calls: each is a `POST` with
      a JSON body, served at `/v1/{Service}/{Method}` on the API host rather
      than under the `/v0.13` base path. Authenticate with a publishable key in
      the `Api-Key` header, or with a bearer token from `POST /auth/token`.
paths:
  /reference/account-type-requirements:
    get:
      tags:
        - Reference
      summary: Get account-type requirements
      description: >-
        The owner and detail fields required to create each External Account
        type through `POST /external-accounts` on this project — one ruleset per
        type. A type absent from `requirements` cannot be created through `POST
        /external-accounts` on this project. Cards are never listed here; card
        registration is not part of the public API.


        `walletExternal` is resolved from the project's wallet-provisioning
        vendor. `bankUs` is resolved per customer on a project holding both
        vendors: pass `customerId` to run the same resolution create runs for
        that customer — including its refusal when that customer cannot create
        `bankUs` at all — or omit it to receive the conservative default flagged
        with `routingDependsOnCustomer`.
      operationId: getAccountTypeRequirements
      parameters:
        - name: customerId
          in: query
          required: false
          description: >-
            Resolve `bankUs` for this customer (canonical `cst_` TypeID).
            Ignored by every other type.
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountTypeRequirements'
        '400':
          description: The server could not understand the request due to invalid syntax.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidParameterErrorResponse'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VendorConfigMissingErrorResponse'
        '404':
          description: >-
            The `customerId` query parameter did not resolve to a customer on
            this project.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/AccountTypeRequirementsCustomerNotFoundErrorResponse
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/AccountTypeRequirementsNotMetErrorResponse
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'
        '503':
          description: Service unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableErrorResponse'
components:
  schemas:
    AccountTypeRequirements:
      type: object
      required:
        - requirements
      properties:
        object:
          type: string
          enum:
            - accountTypeRequirements
        requirements:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/AccountTypeRequirement'
          description: >-
            External Account type → the single resolved ruleset for this
            project.
      description: >-
        Reference response for `GET /reference/account-type-requirements`,
        resolved for the calling project. `requirements` is keyed by External
        Account type and carries exactly one ruleset per type — never a menu of
        vendors for the caller to choose between. A type absent from the map
        cannot be created through `POST /external-accounts` on this project.
        Cards are never listed here; card registration is not part of the public
        API.
    InvalidParameterErrorResponse:
      type: object
      required:
        - error
        - code
        - msg
      properties:
        error:
          type: string
          enum:
            - InvalidParameter
        code:
          type: number
          enum:
            - 10006
        msg:
          type: string
          enum:
            - a request parameter is invalid
        cause:
          type: string
    VendorConfigMissingErrorResponse:
      type: object
      required:
        - error
        - code
        - msg
      properties:
        error:
          type: string
          enum:
            - VendorConfigMissing
        code:
          type: number
          enum:
            - 10024
        msg:
          type: string
          enum:
            - provider adapter/vendor is not configured for this partner
        cause:
          type: string
    AccountTypeRequirementsCustomerNotFoundErrorResponse:
      type: object
      required:
        - error
        - code
        - msg
      properties:
        error:
          type: string
          enum:
            - CustomerNotFound
        code:
          type: number
          enum:
            - 10001
        msg:
          type: string
          enum:
            - customer not found
        cause:
          type: string
      description: >-
        The `customerId` query parameter did not resolve to a customer on this
        project.
    AccountTypeRequirementsNotMetErrorResponse:
      type: object
      required:
        - error
        - code
        - msg
      properties:
        error:
          type: string
          enum:
            - AccountTypeRequirementsNotMet
        code:
          type: number
          enum:
            - 10048
        msg:
          type: string
          enum:
            - account type requirements not met for this request
        cause:
          type: string
    InternalErrorResponse:
      type: object
      required:
        - error
        - code
        - msg
      properties:
        error:
          type: string
          enum:
            - Internal
        code:
          type: number
          enum:
            - 10124
        msg:
          type: string
          enum:
            - internal error
        cause:
          type: string
    ServiceUnavailableErrorResponse:
      type: object
      required:
        - error
        - code
        - msg
      properties:
        error:
          type: string
          enum:
            - ServiceUnavailable
        code:
          type: number
          enum:
            - 5003
        msg:
          type: string
          enum:
            - service unavailable
        cause:
          type: string
    AccountTypeRequirement:
      type: object
      required:
        - type
        - ownerFields
        - detailFields
        - requiredCapabilities
      properties:
        type:
          $ref: '#/components/schemas/ExternalAccountType'
        ownerFields:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/FieldRequirement'
          description: >-
            Owner fields and their requirement level (e.g. `name: required`,
            `address: required`).
        detailFields:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/FieldRequirement'
          description: >-
            Fields on the type's own detail object — `walletExternal.custodian`
            today — and their requirement level.
        requiredCapabilities:
          type: array
          items:
            type: string
          description: >-
            Project capabilities required to create this type (e.g. an outgoing
            rail).
        routingDependsOnCustomer:
          type: boolean
          description: >-
            Only on `bankUs`, and only when `customerId` was omitted on a
            project that holds both vendors: which vendor validates the create
            depends on the owning customer, so this entry is the conservative
            default. Pass `customerId` for the definitive answer.
      description: >-
        Per-type owner-field, detail-field and capability requirements, already
        resolved for the calling project.
    ExternalAccountType:
      type: string
      enum:
        - bankUs
        - bankIban
        - bankCanada
        - card
        - walletExternal
      description: >-
        External Account type. `card` accounts are registered with `POST
        /external-accounts/cards`.
    FieldRequirement:
      type: string
      enum:
        - required
        - recommended
        - optional
      description: >-
        How strongly an owner field is required for a given account type /
        provider.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Token from POST /auth/token

````