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

# Fetch bookkeeping reporting periods

> Returns historical bookkeeping period status for a business, including simplified external status, billing status, closing timeline milestones, and per-period task metrics. Newest periods first. Inactive and ongoing periods are excluded.

Returns historical bookkeeping periods for a business (newest first), with simplified external status, billing status, closing timeline milestones, and task metrics. Inactive and ongoing periods are excluded.


## OpenAPI

````yaml get /v1/businesses/{businessId}/reports/bookkeeping/periods
openapi: 3.0.1
info:
  title: API
  version: latest
servers: []
security:
  - BearerAuth: []
tags: []
externalDocs:
  url: /
paths:
  /v1/businesses/{businessId}/reports/bookkeeping/periods:
    get:
      tags: []
      summary: Fetch bookkeeping reporting periods
      description: >-
        Returns historical bookkeeping period status for a business, including
        simplified external status, billing status, closing timeline milestones,
        and per-period task metrics. Newest periods first. Inactive and ongoing
        periods are excluded.
      operationId: business.reports.bookkeeping.periods.get
      parameters:
        - name: businessId
          in: path
          description: The UUID of the business.
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Bookkeeping period history for the business.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ApiBookkeepingReportingPeriods'
                required:
                  - data
        '404':
          description: Business not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      deprecated: false
components:
  schemas:
    ApiBookkeepingReportingPeriods:
      type: object
      properties:
        type:
          type: string
          description: >-
            Resource type. Value will be
            `com.layerfi.routers.ApiBookkeepingReportingPeriods`.
          example: com.layerfi.routers.ApiBookkeepingReportingPeriods
        periods:
          type: array
          items:
            $ref: '#/components/schemas/ApiBookkeepingReportingPeriod'
      required:
        - periods
    ApiError:
      type: object
      description: An error object returned in API error responses.
      properties:
        type:
          $ref: '#/components/schemas/ApiErrorType'
          description: >-
            A fixed category for the error, helpful for categorizing and
            processing errors.
        description:
          type: string
          description: A human-readable error description.
        error_enum:
          $ref: '#/components/schemas/ApiEnumErrorType'
          description: >-
            A stable, machine-readable identifier for programmatically handling
            specific error conditions. Only present for 4xx client errors—not
            included for 5xx server errors. Use this instead of parsing the
            description field, as enum values remain stable across API versions.
          nullable: true
        meta:
          type: object
          description: Optional additional information about the error.
          nullable: true
      required:
        - type
        - description
    ApiBookkeepingReportingPeriod:
      type: object
      description: Historical status and task metrics for a single bookkeeping period.
      properties:
        id:
          type: string
          format: uuid
          description: Unique period identifier.
        year:
          type: integer
          description: Calendar year for the period.
        month:
          type: integer
          minimum: 1
          maximum: 12
          nullable: true
          description: Calendar month (1-12). Null for annual periods.
        scale:
          $ref: '#/components/schemas/BookkeepingReportingPeriodScale'
        status:
          $ref: '#/components/schemas/BookkeepingReportingPeriodStatus'
        billing_status:
          $ref: '#/components/schemas/BookkeepingReportingBillingStatus'
        closing_timeline:
          $ref: '#/components/schemas/ApiBookkeepingReportingClosingTimeline'
        open_tasks:
          type: integer
          description: Active period tasks where the business has not responded.
        completed_tasks:
          type: integer
          description: Period tasks with a business response.
        avg_task_response_time_seconds:
          type: integer
          format: int64
          nullable: true
          description: >-
            Average time from task creation to business response, in seconds.
            Null if no responded tasks.
      required:
        - id
        - year
        - scale
        - status
        - billing_status
        - closing_timeline
        - open_tasks
        - completed_tasks
    ApiErrorType:
      type: string
      enum:
        - ResourceArchived
        - AuthFailure
        - Plaid
        - Stripe
        - InvalidState
        - ResourceNotFound
        - InvalidParameters
        - JsonSerialization
        - Unknown
        - BadRequest
        - PaginationCursor
        - Conflict
        - LedgerOperationFailed
    ApiEnumErrorType:
      type: string
      description: >-
        Stable enum values for programmatic error handling. Only present in 4xx
        error responses.
      enum:
        - AccessCodeInvalid
        - BalanceSheetDoesNotBalance
        - BalanceSheetMissingAccount
        - BankStatementParserError
        - BillStateError
        - BulkCategorizeFailure
        - BulkMatchFailure
        - BusinessTaskAlreadyCompleted
        - BusinessTaskDeleted
        - CalendlyOAuthError
        - CallBookingError
        - CantUpdateTransactionInCustomerPayout
        - CantUpdateTransactionInVendorPayout
        - CheckPayrollConfigNotFound
        - CheckPayrollServiceNotFound
        - ClerkUserAlreadyExists
        - ConflictingQueryParams
        - CustomAccountAlreadyExists
        - CustomTransactionCsvParsingError
        - CustomTransactionUploadFailure
        - CustomerPayoutInputFormatError
        - DoesNotMatchExistingEntity
        - EmptyBatchRequest
        - ExpenseParserError
        - ExternalAccountBalanceReconciliationError
        - ExternalIdConflict
        - InvalidCategory
        - InvalidEffectiveDate
        - InvalidLedgerOperation
        - InvalidMonthlyAverageRange
        - InvalidMultiPartRequest
        - InvalidPaginationCursor
        - InvalidPayload
        - InvoiceDeleted
        - InvoiceNotFound
        - InvoiceReferenceMismatch
        - InvoiceStateError
        - ManualRateLimit
        - MultipleTagKeyFiltersUnsupported
        - NoCognitoUserFound
        - NoOpeningBalanceFound
        - NotYetReconciled
        - OnePasswordApiError
        - OnePasswordItemNotFound
        - OnePasswordVaultNotFound
        - OpenAICategorizationError
        - PaymentLinkInvalid
        - PayrollStateError
        - PeriodIsClosed
        - PeriodNotClosed
        - PhoneNumberAlreadyRegistered
        - PlaidApiError
        - PlaidConnectionBroken
        - PlaidCreateLinkTokenError
        - PlaidCredentialsNotConfigured
        - PlaidExchangePublicTokenError
        - PlaidGetInstitutionByIdError
        - PlaidGetItemError
        - PlaidInvalidEnvironment
        - PlaidItemAlreadyExists
        - PlaidItemNotFound
        - PlaidProcessorApiError
        - PlaidUnlinkItemError
        - QueryParamFormat
        - QueryParamMissing
        - QuickbooksBrokenConnection
        - QuickbooksConnectionAlreadyExists
        - QuickbooksConnectionAlreadySyncing
        - QuickbooksConnectionMissing
        - QuickbooksConnectionNotActivated
        - QuickbooksInvalidRequest
        - QuickbooksInvalidState
        - QuickbooksNoMatchingAccount
        - QuickbooksNonPostingAccountType
        - QuickbooksNotConfigured
        - QuickbooksOAuthCallbackInvalid
        - QuickbooksOAuthError
        - QuickbooksTokenExpired
        - ResourceArchived
        - ScheduleCNotConfigured
        - SmsNotEnabled
        - SpecifiedBadRequest
        - SpecifiedIdNotFound
        - SplitTransactionError
        - StepEvaluationBadRequest
        - StripeConnectAccountIdNotFound
        - StripeCredentialsNotConfigured
        - StripeGetBalanceForConnectAccountFailure
        - StripeRedirectOrRefreshUrlNotConfigured
        - TagFilterNotFound
        - UnexpectedQueryParam
        - UnitAccountsInUse
        - WrongAnswerType
    BookkeepingReportingPeriodScale:
      type: string
      enum:
        - MONTHLY
        - ANNUAL
      example: MONTHLY
    BookkeepingReportingPeriodStatus:
      type: string
      enum:
        - NOT_STARTED
        - IN_PROGRESS
        - CLOSING_AWAITING_BUSINESS
        - CLOSING_BOOKKEEPER_REVIEW
        - CLOSED_PROVISIONALLY
        - CLOSED_COMPLETE
      description: Simplified external status for a bookkeeping period.
      example: IN_PROGRESS
    BookkeepingReportingBillingStatus:
      type: string
      enum:
        - ACTIVE
        - CATCHUP
        - NON_BILLABLE
      description: Whether the period is actively billable, catch-up, or non-billable.
      example: ACTIVE
    ApiBookkeepingReportingClosingTimeline:
      type: object
      description: >-
        Milestone timestamps for closing a bookkeeping period. Null means the
        milestone has not happened or was not recorded.
      properties:
        started_at:
          type: string
          format: date-time
          nullable: true
        first_awaiting_business_at:
          type: string
          format: date-time
          nullable: true
        closing_started_at:
          type: string
          format: date-time
          nullable: true
        first_closing_tasks_sent_at:
          type: string
          format: date-time
          nullable: true
        in_review_at:
          type: string
          format: date-time
          nullable: true
        last_task_completed_at:
          type: string
          format: date-time
          nullable: true
        waiting_for_business_since:
          type: string
          format: date-time
          nullable: true
        provisionally_closed_at:
          type: string
          format: date-time
          nullable: true
        closed_at:
          type: string
          format: date-time
          nullable: true
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````