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

# List system-keyed accounts

> Returns the list of system-key GL accounts for the entity: the accounts mapped to system roles
such as Accounts Receivable, Accounts Payable, Inventory Asset, COGS, Sales Revenue, and
Undeposited Funds. These mappings drive automatic journal entry creation throughout the ERP.
Requires `accounting:read` scope.




## OpenAPI

````yaml /openapi.yaml get /chart-of-accounts/system-keys
openapi: 3.1.0
info:
  title: Arcus ERP Public API
  version: 1.0.0
  description: >
    Arcus ERP public REST API. Designed for external integrations and data
    migration.


    **Authentication.** Bearer token (API key) via the `Authorization` header.

    Format: `Authorization: Bearer ark_live_ent_<code>_<random>` (or
    `ark_test_*` for sandbox).

    API keys are issued per-entity in **Settings > Developers > API Keys**.


    **Entity scoping.** The entity is encoded in the API key prefix; routes are
    flat

    (e.g. `/v1/accounts`, `/v1/orders`, `/v1/products`). A small set of platform
    endpoints

    (migration, reconciliation, events, webhook endpoints, API keys) use the

    `/v1/entities/{entity_id}/...` form -- those are noted in their tags.


    **Key capabilities.**
      - Related-resource hydration via `?expand[]=` (see `x-arcus-expand` on each resource).
      - Cursor-based pagination (`starting_after` / `ending_before` / `limit`).
      - Idempotency via the `Idempotency-Key` header.
      - Webhook events for asynchronous notification.
      - Conditional requests / ETag for cache validation.
servers:
  - url: https://api.arcuserp.com/v1
    description: Arcus ERP API (accepts both live `ark_live_*` and test `ark_test_*` keys)
  - url: https://dev-api.arcuserp.com/v1
    description: >-
      Dev sandbox API (test-only data, accepts `ark_test_*` keys against dev
      RDS)
security: []
paths:
  /chart-of-accounts/system-keys:
    get:
      tags:
        - Accounting
      summary: List system-keyed accounts
      description: >
        Returns the list of system-key GL accounts for the entity: the accounts
        mapped to system roles

        such as Accounts Receivable, Accounts Payable, Inventory Asset, COGS,
        Sales Revenue, and

        Undeposited Funds. These mappings drive automatic journal entry creation
        throughout the ERP.

        Requires `accounting:read` scope.
      operationId: listChartOfAccountsSystemKeysV1
      responses:
        '200':
          description: System-keyed GL accounts
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/GlAccount'
        '401':
          $ref: '#/components/responses/Error'
        '403':
          $ref: '#/components/responses/Error'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    GlAccount:
      type: object
      description: >
        A General Ledger account in the chart of accounts. Header accounts
        (is_header=true) aggregate child accounts and cannot receive postings
        (Rule A2 / Rule 21). Leaf accounts (is_header=false, is_active=true) are
        the only valid targets for journal entry lines. System accounts
        (is_system_account=true) are provisioned by entity-seed-helpers.mjs and
        cannot be created or modified via the API.
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        entity_id:
          type: string
          format: uuid
          readOnly: true
        account_number:
          type: string
          readOnly: true
          description: Immutable post-create (e.g. '1300')
        name:
          type: string
        description:
          type: string
          nullable: true
        account_type:
          type: string
          enum:
            - asset
            - liability
            - equity
            - revenue
            - expense
            - cogs
          readOnly: true
          description: Immutable post-create
        account_sub_type:
          type: string
          nullable: true
        normal_balance:
          type: string
          enum:
            - debit
            - credit
          readOnly: true
          description: Immutable post-create
        is_header:
          type: boolean
          description: >
            True for rollup accounts that aggregate children. Header accounts
            CANNOT receive journal entry line postings (Rule A2 /
            assertGLLinesPostable).
        parent_account_id:
          type: string
          format: uuid
          nullable: true
        is_system_account:
          type: boolean
          readOnly: true
          description: >
            True for accounts seeded by entity-seed-helpers.mjs. System accounts
            cannot be created, updated, or deleted via the API.
        system_account_key:
          type: string
          nullable: true
          readOnly: true
          description: >
            Lookup key used by posting helpers (e.g. ar_account, cogs, revenue,
            inventory_fg). Code uses getGLAccountByKey(entityId, key) instead of
            hardcoded account numbers.
        is_bank_account:
          type: boolean
          description: True for bank/cash accounts eligible for reconciliation
        is_active:
          type: boolean
        tax_line_mapping:
          type: string
          nullable: true
        opening_balance:
          type: number
          nullable: true
        opening_balance_date:
          type: string
          format: date
          nullable: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
    ErrorEnvelope:
      type: object
      description: |
        Canonical error response envelope. All API errors use this shape.
      required:
        - error
        - code
      properties:
        error:
          type: string
          description: Machine-readable error key
          example: not_found
        code:
          type: string
          description: Machine-readable error code (often same as error)
          example: not_found
        type:
          type: string
          enum:
            - validation_error
            - permission_error
            - not_found
            - conflict
            - rate_limit
            - internal
            - expand_error
            - not_implemented
          example: not_found
        hint:
          type: string
          description: Human-readable one-sentence explanation (English)
          example: >-
            The requested order does not exist or does not belong to this
            entity.
        param:
          type: string
          description: The parameter that caused the error, if applicable
          example: expand[0]
        required:
          type: string
          description: The scope required (only on insufficient_scope errors)
          example: accounts:read
        request_id:
          type: string
          description: >-
            Unique request ID for support tracing (maps to CloudWatch log
            stream)
          example: req_abc123
  responses:
    Error:
      description: Error response (400/401/403/404/409/422/429/500)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      description: |
        API key issued per entity via Settings > Developers > API Keys.
        Each key carries scopes (e.g. orders:read, products:write).
        Bearer token format: Authorization: Bearer ark_live_ent_<code>_<random>
        Test keys use ark_test_ent_<code>_<random>. Both are issued per entity
        via Settings > Developers > API Keys.

````