> ## 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 P&L summaries

> Returns profit and loss summaries over a specified time range. This endpoint is useful for displaying charts and comparisons, as the summaries are less detailed than the full P&L report but a range of months can be queried at the same time.



## OpenAPI

````yaml get /v1/businesses/{businessId}/reports/profit-and-loss-summaries
openapi: 3.0.1
info:
  title: API
  version: latest
servers: []
security:
  - BearerAuth: []
tags: []
externalDocs:
  url: /
paths:
  /v1/businesses/{businessId}/reports/profit-and-loss-summaries:
    get:
      tags: []
      summary: Fetch P&L summaries
      description: >-
        Returns profit and loss summaries over a specified time range. This
        endpoint is useful for displaying charts and comparisons, as the
        summaries are less detailed than the full P&L report but a range of
        months can be queried at the same time.
      operationId: business.reports.profit-and-loss-summaries.get
      parameters:
        - name: businessId
          in: path
          description: The UUID of the business to fetch the profit and loss for.
          required: true
          schema:
            type: string
        - name: Content-Type
          in: header
          description: Content-Type must be set to application/json.
          schema:
            type: string
        - name: start_year
          in: query
          description: The starting year for the summaries range (e.g. 2024).
          required: true
          schema:
            type: integer
        - name: start_month
          in: query
          description: The starting month for the summaries range (1–12).
          required: true
          schema:
            type: integer
            minimum: 1
            maximum: 12
        - name: end_year
          in: query
          description: The ending year for the summaries range (e.g. 2024).
          required: true
          schema:
            type: integer
        - name: end_month
          in: query
          description: The ending month for the summaries range (1–12).
          required: true
          schema:
            type: integer
            minimum: 1
            maximum: 12
        - name: reporting_basis
          in: query
          description: Accounting basis for the report.
          schema:
            type: string
            enum:
              - ACCRUAL
              - CASH
        - name: structure
          in: query
          description: P&L structure template to use.
          schema:
            type: string
        - name: tag_key
          in: query
          description: Tag key to filter results by (use together with tag_values).
          schema:
            type: string
        - name: tag_values
          in: query
          description: >-
            Comma-separated tag values to filter results by (use together with
            tag_key).
          schema:
            type: string
      responses:
        '200':
          description: ''
          headers: {}
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiMonthlyPnlSummaries'
        '400':
          description: >-
            P&L not yet reconciled: one or more of the requested time periods is
            not closed or reconciled and cannot be displayed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: >-
            Business id is not found. This indicates the business id is invalid
            or the business has been archived.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      deprecated: false
components:
  schemas:
    ApiMonthlyPnlSummaries:
      type: object
      properties:
        monthly_pnl_summaries:
          type: array
          items:
            $ref: '#/components/schemas/MonthlyPnlSummary'
    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
    MonthlyPnlSummary:
      type: object
      properties:
        year:
          type: integer
          format: int32
          description: The year for the PnL summary.
          example: 2024
        month:
          type: integer
          format: int32
          description: The month for the PnL summary.
          example: 3
        income:
          type: integer
          format: int64
          description: The business's total income for the month, in cents.
          example: 1050000
        costOfGoodsSold:
          type: integer
          format: int64
          description: The business's cost of goods sold for the month, in cents.
          example: 350000
        grossProfit:
          type: integer
          format: int64
          description: The business's gross profit for the month, in cents.
          example: 700000
        operatingExpenses:
          type: integer
          format: int64
          description: The business's operating expenses for the month, in cents.
          example: 300000
        profitBeforeTaxes:
          type: integer
          format: int64
          description: The business's pre-tax profit for the month, in cents.
          example: 400000
        taxes:
          type: integer
          format: int64
          description: The business's taxes for the month, in cents.
          example: 100000
        netProfit:
          type: integer
          format: int64
          description: The business's net profit for the month, in cents.
          example: 300000
        totalExpenses:
          type: integer
          format: int64
          description: The sum of the business's expenses for the month, in cents.
          example: 750000
        uncategorizedInflows:
          type: integer
          format: int64
          description: >-
            The sum of the business's positive uncategorized transactions for
            the month, in cents.
          example: 10
        uncategorizedOutflows:
          type: integer
          description: >-
            The sum of the business's negative uncategorized transactions for
            the month, in cents.
          example: 10
        fullyCategorized:
          type: boolean
          description: >-
            Whether the business has categorized all of their transactions for
            the month.
          example: true
        uncategorized_transactions:
          type: integer
          description: The number of uncategorized transactions remaining in this month.
          format: int64
          example: 1
    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
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````