---
title: "Get P and L summary data"
method: GET
path: "/Metrics/pnl"
tags: ["Metrics"]
---

# Get P and L summary data

`GET /Metrics/pnl`

## Request

- Base URL: `https://api.clinicos.vet/backend/business`
- URL: `https://api.clinicos.vet/backend/business/Metrics/pnl`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/docs/Metrics/pnl/get.ts> (a function with typed inputs; its response is checked against the schema)

## Query parameters

- `period` string
- `mode` string

## Response `200`

OK

- BusinessMetricsResponseDtoOfPnLDto
  - `success` boolean
  - `data` PnLDto
    - `items` PnLItemDto[]
      - `label` string
      - `value` union
        - number, double
        - string, double
      - `type` string
      - `percent` union
        - number, double
        - string, double
      - `trend` string, nullable
      - `spark` union[], nullable
        - union
          - number, double
          - string, double
      - `noData` boolean: The line has no expense data behind it — decimal PnLItemDto.Value is arithmetic over $0 of known expense, not a measurement. Every surface must render "no data" rather than the number (ITE-773).
    - `netIncome` union: Null when the practice has not recorded every expense category for the period. A net income figure derived from partial expenses is not a net income figure, so it is suppressed rather than estimated (ITE-773).
      - number, double
      - string, double
    - `expensesRecorded` boolean: True only when COGS, labor and operating expenses were all recorded.
    - `period` string
  - `error` string, nullable
  - `message` string, nullable

## Other responses

- `500`: Internal Server Error

## Changes

- **2026-09-17** `d4ae30be0619`: 3 breaking, 6 info
  - the response property `data/oneOf[#/components/schemas/PnLDto]/netIncome` became nullable for the status `200` (media type: text/plain)
  - the response property `data/oneOf[#/components/schemas/PnLDto]/netIncome` became nullable for the status `200` (media type: application/json)
  - the response property `data/oneOf[#/components/schemas/PnLDto]/netIncome` became nullable for the status `200` (media type: text/json)
  - added the optional property `data/oneOf[#/components/schemas/PnLDto]/expensesRecorded` to the response with the `200` status (media type: text/plain)
  - …5 more

[Operation history](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/changes/Metrics/pnl/get.md)

---

[API](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1.md) - [All operations](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/revisions/099cf36186e0?raw)
