> ## 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 the current bookkeeping status summary together with historical bookkeeping periods for a business. Periods include simplified external status, billing status, closing timeline milestones, and per-period task metrics. Newest periods are returned first; inactive and ongoing periods are excluded.

Returns the current bookkeeping status summary together with historical bookkeeping periods (newest first). Each period includes 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 the current bookkeeping status summary together with historical
        bookkeeping periods for a business. Periods include simplified external
        status, billing status, closing timeline milestones, and per-period task
        metrics. Newest periods are returned 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 or bookkeeping configuration not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      deprecated: false
components:
  schemas:
    ApiBookkeepingReportingPeriods:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/ApiBookkeepingReportingSummary'
          description: Current bookkeeping reporting status for the business.
        periods:
          type: array
          items:
            $ref: '#/components/schemas/ApiBookkeepingReportingPeriod'
      required:
        - status
        - 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
    ApiBookkeepingReportingSummary:
      type: object
      description: >-
        Enrollment, outstanding work, bank connection health, latest close, and
        latest inbound SMS for a single business.
      properties:
        business_id:
          type: string
          format: uuid
          description: The business this summary describes.
        onboarding_date:
          type: string
          format: date
          nullable: true
          description: >-
            Date bookkeeping onboarding was marked complete. Null if still
            onboarding or not enrolled.
        first_bookkeeping_months:
          type: string
          format: date
          nullable: true
          description: >-
            First month Layer is responsible for (start of the books
            subscription / catch-up window).
        enrollment_status:
          $ref: '#/components/schemas/BookkeepingEnrollmentStatus'
        bookkeeping_end_date:
          type: string
          format: date
          nullable: true
          description: >-
            Last billable month when bookkeeping is paused. Null while actively
            enrolled.
        churned_at:
          type: string
          format: date
          nullable: true
          description: Date enrollment was paused or churned. Null if not paused.
        periods_awaiting_business_count:
          type: integer
          description: How many periods are currently blocked waiting on the business.
        latest_closed_period:
          allOf:
            - $ref: '#/components/schemas/ApiBookkeepingReportingClosedPeriod'
          nullable: true
          description: Most recent monthly period fully closed. Null if none.
        pending_business_tasks_count:
          type: integer
          description: Open tasks across the business that still need a response.
        last_message_received_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Timestamp of the most recent SMS received from this business. Null
            if none.
        disconnected_bank_accounts:
          type: integer
          minimum: 0
          description: >-
            Number of bank accounts whose connection needs repair and for which
            disconnection notifications remain enabled.
        as_of:
          type: string
          format: date-time
          description: Server timestamp when this snapshot was evaluated.
      required:
        - business_id
        - enrollment_status
        - periods_awaiting_business_count
        - pending_business_tasks_count
        - disconnected_bank_accounts
        - as_of
    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
      example: InvalidParameters
    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
      example: InvalidPayload
    BookkeepingEnrollmentStatus:
      type: string
      enum:
        - NOT_PURCHASED
        - ONBOARDING
        - ACTIVE
        - BOOKKEEPING_PAUSED
      description: Bookkeeping enrollment status for a business.
      example: ACTIVE
    ApiBookkeepingReportingClosedPeriod:
      type: object
      properties:
        id:
          type: string
          format: uuid
        year:
          type: integer
        month:
          type: integer
          minimum: 1
          maximum: 12
      required:
        - id
        - year
        - month
    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

````