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

# Fetch a list of accounts

> Retrieves a list of accounts with companyId and other optional filters. Results are paginated.



## OpenAPI

````yaml post /v1/chart-of-accounts:search
openapi: 3.0.1
info:
  title: Chart of Accounts API
  description: Bookkeeping Core OpenAPI definitions
  termsOfService: https://pleo.io/terms/
  contact:
    email: team.actina@pleo.io
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  version: 24.9.0
servers:
  - url: https://external.pleo.io
    description: Production server
  - url: https://external.staging.pleo.io
    description: Staging server
security:
  - bearerAuth: []
  - basicAuth: []
tags:
  - name: BookkeepingCore
    description: This resource is associated with the BookkeepingCore API
  - name: Accounts
    description: >
      This API enables you to create an account in Pleo, search for an account
      by its ID, update details of an account recorded in Pleo, delete an
      account from Pleo, or apply specific filters to retrieve a list of
      accounts managed in Pleo.


      💡**Note**


      Please note that only response codes specific to the API behaviour are
      documented. Otherwise, we follow HTTP response codes.
  - name: Aggregated Bookkeeping Category Groups
    description: >-
      This API enables you to read aggregated bookkeeping category groups.


      💡**Note**


      Please note that only response codes specific to the API behaviour are
      documented. Otherwise, we follow HTTP response codes.
  - name: Aggregated Contra Accounts
    description: >-
      This API enables you to read aggregated contra accounts.


      💡**Note**


      Please note that only response codes specific to the API behaviour are
      documented. Otherwise, we follow HTTP response codes.
  - name: Bookkeeping Categories
    description: >
      This API enables you to perform operations on a bookkeeping category.


      💡**Note**


      Please note that only response codes specific to the API behaviour are
      documented. Otherwise, we follow HTTP response codes..
  - name: Bookkeeping Category Groups
    description: >-
      This API enables you to perform operations on a bookkeeping category
      group.


      💡**Note**


      Please note that only response codes specific to the API behaviour are
      documented. Otherwise, we follow HTTP response codes.
  - name: Contra Accounts
    description: >
      This API enables you to manage contra accounts.


      💡**Note**


      Please note that only response codes specific to the API behaviour are
      documented. Otherwise, we follow HTTP response codes..
  - name: Bookkeeping Preferences Resource
paths:
  /v1/chart-of-accounts:search:
    post:
      tags:
        - Accounts
      summary: Fetch a list of accounts
      description: >-
        Retrieves a list of accounts with companyId and other optional filters.
        Results are paginated.
      operationId: searchAccountsV1
      parameters:
        - name: before
          in: query
          description: >-
            Lower bound of the page of data to return (cannot be used together
            with [after] or [offset]).
          required: false
          style: form
          explode: true
          schema:
            pattern: ^[A-Z2-7=~]+$
            type: string
        - name: after
          in: query
          description: >-
            Upper bound of the page of data to return (cannot be used together
            with [before] or [offset]).
          required: false
          style: form
          explode: true
          schema:
            pattern: ^[A-Z2-7=~]+$
            type: string
        - name: offset
          in: query
          description: >-
            Offset of the page of data to return (cannot be used together with
            [before] or [after]).
          required: false
          style: form
          explode: true
          schema:
            type: integer
            format: int64
        - name: limit
          in: query
          description: The maximum amount of items to return.
          required: false
          style: form
          explode: true
          schema:
            type: integer
            format: int32
        - name: sorting_keys
          in: query
          description: The keys to sort the results by.
          required: false
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: sorting_order
          in: query
          description: >-
            The order to sort the results by. Must be the same length as
            [sortingKeys]; one order per key.
          required: false
          style: form
          explode: true
          schema:
            type: array
            items:
              $ref: '#/components/schemas/PageOrder'
      requestBody:
        content:
          application/json;charset=UTF-8:
            schema:
              $ref: '#/components/schemas/BookkeepingAccountSearchRequestV1'
        required: true
      responses:
        '200':
          description: Retrieval of accounts successful.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/CursorPaginatedResponseBookkeepingAccountRestModelV1
              example:
                data:
                  - accountingSystem: xero
                    archived: false
                    code: '2001'
                    companyId: 123e4567-e89b-12d3-a456-426614174006
                    externalId: External Id
                    id: 123e4567-e89b-12d3-a456-426614174005
                    name: Bank Charges
                    taxCodeExternalId: IVA 20
                pagination:
                  currentRequestPagination:
                    parameters: {}
                  endCursor: string
                  hasNextPage: true
                  hasPreviousPage: true
                  startCursor: string
                  total: 1
        '400':
          description: >-
            Bad request: for example, missing required fields, tax code does not
            exist in Pleo.
components:
  schemas:
    PageOrder:
      type: string
      enum:
        - ASC
        - ASC_NULLS_FIRST
        - ASC_NULLS_LAST
        - DESC
        - DESC_NULLS_FIRST
        - DESC_NULLS_LAST
    BookkeepingAccountSearchRequestV1:
      required:
        - companyId
        - excludeIfAssignedToCategory
        - excludeIfAssignedToContraAccount
      type: object
      properties:
        archived:
          type: boolean
          description: Filter by archived status.
          nullable: true
          example: false
        code:
          type: string
          description: Search by code.
          nullable: true
          example: '2001'
          deprecated: true
        codes:
          uniqueItems: true
          type: array
          description: Search by a list of codes.
          nullable: true
          items:
            type: string
            description: Search by a list of codes.
            nullable: true
        companyId:
          type: string
          description: Filter by company ID.
          format: uuid
          example: 123e4567-e89b-12d3-a456-426614174011
        excludeIfAssignedToCategory:
          type: boolean
          description: Exclude bookkeeping accounts assigned to a bookkeeping category.
          example: false
          default: false
        excludeIfAssignedToContraAccount:
          type: boolean
          description: Exclude bookkeeping accounts assigned to a contra account.
          example: false
          default: false
        externalId:
          type: string
          description: Search by external id.
          nullable: true
          example: 123e4567-e89b-12d3-a456-426614174011
        ids:
          uniqueItems: true
          type: array
          description: Filter by a list of account IDs.
          nullable: true
          items:
            type: string
            description: Filter by a list of account IDs.
            format: uuid
            nullable: true
        name:
          type: string
          description: Search by name.
          nullable: true
          example: Bank Charges
      description: Represents a request to search for accounts.
    CursorPaginatedResponseBookkeepingAccountRestModelV1:
      required:
        - data
        - pagination
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/BookkeepingAccountRestModelV1'
        pagination:
          $ref: '#/components/schemas/CursorPageInfo'
    BookkeepingAccountRestModelV1:
      required:
        - archived
        - companyId
        - externalId
        - id
        - name
      type: object
      properties:
        archived:
          type: boolean
          description: Boolean flag used to determine if the account is archived.
        code:
          type: string
          description: >-
            Account code or number used in the accounting system's chart of
            accounts.
          nullable: true
        companyId:
          type: string
          description: >-
            Pleo's internal identifier of the company the account is associated
            with.
          format: uuid
        externalId:
          type: string
          description: >-
            Unique external identifier of the account, assigned in the external
            ERP/accounting system. Can be the same as code if no other
            identifier is available.
        id:
          type: string
          description: Pleo's internal identifier of the account.
          format: uuid
        metadata:
          type: object
          additionalProperties:
            type: object
            description: Place for API users to store flexible data.
            nullable: true
          description: Place for API users to store flexible data.
          nullable: true
        name:
          type: string
          description: Name of the account.
        taxCodeExternalId:
          type: string
          description: >-
            The identifier in **the target system** for the tax code the account
            is associated with. 
          nullable: true
      description: Represents an account in Pleo.
    CursorPageInfo:
      required:
        - currentRequestPagination
        - hasNextPage
        - hasPreviousPage
      type: object
      properties:
        currentRequestPagination:
          $ref: '#/components/schemas/CursorPageCurrentRequestInfo'
        endCursor:
          type: string
        hasNextPage:
          type: boolean
        hasPreviousPage:
          type: boolean
        startCursor:
          type: string
        total:
          type: integer
          format: int64
    CursorPageCurrentRequestInfo:
      required:
        - parameters
      type: object
      properties:
        after:
          type: string
        before:
          type: string
        limit:
          type: integer
          format: int32
        offset:
          type: integer
          format: int64
        parameters:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        sortingKeys:
          type: array
          items:
            type: string
        sortingOrder:
          type: array
          items:
            $ref: '#/components/schemas/PageOrder'
  securitySchemes:
    bearerAuth:
      type: http
      description: >-
        JWT Bearer token authentication. Include the token in the Authorization
        header as: `Bearer <token>`
      scheme: bearer
      bearerFormat: JWT
    basicAuth:
      type: http
      description: >-
        Basic HTTP authentication using API key. Use your API key as the
        username and leave the password empty. The credentials will be Base64
        encoded automatically.
      scheme: basic

````