---
title: "Get recent patient transactions for the master grid"
method: GET
path: "/Metrics/patient-transactions"
tags: ["Metrics"]
---

# Get recent patient transactions for the master grid

`GET /Metrics/patient-transactions`

## Query parameters

- `page` union
  - integer
  - string, int32
- `pageSize` union
  - integer
  - string, int32
- `period` string
- `providerId` string
- `recurringOnly` boolean

## Response `200`

OK

- BusinessMetricsResponseDtoOfPatientTransactionsDto
  - `success` boolean
  - `data` PatientTransactionsDto — Recent patient transactions for the master grid
    - `transactions` PatientTransactionRowDto[]
      - `date` string — Formatted date (e.g., "Jan 24, 2026")
      - `id` string — Invoice/Invoice ID (e.g., "EST-1024")
      - `invoiceId` string — Database estimate ID (UUID) for API calls
      - `client` string — Client name
      - `patient` string — Patient name
      - `desc` string — Description (primary service or summary)
      - `provider` string — Provider name
      - `providerId` string, nullable — Provider user ID for editing
      - `amount` union — Amount billed — the invoice total. NOT what was collected; see decimal PatientTransactionRowDto.AmountCollected. A refunded bill keeps its full invoice total here.
        - number, double
        - string, double
      - `amountCollected` union — Amount actually collected against this invoice, net of refunds (PaymentLedger). Differs from decimal PatientTransactionRowDto.Amount whenever a bill is unpaid, part-paid, or refunded. Summing decimal PatientTransactionRowDto.Amount to report "revenue" overstates it — sum this instead.
        - number, double
        - string, double
      - `status` string — Payment status derived from the payment ledger: "Paid", "Partial", "Refunded", "Pending", "Failed".
      - `appointmentId` string, nullable — Linked appointment ID (null when the estimate has no appointment — e.g. retail/boarding)
    - `totalCount` union
      - integer
      - string, int32
    - `page` union
      - integer
      - string, int32
    - `pageSize` union
      - integer
      - string, int32
  - `error` string, nullable
  - `message` string, nullable

## Other responses

- `500` — Internal Server Error

---

[API](https://skmtc.net/clinicos/apis/pawthosx-business-api-v1.md) · [All operations](https://skmtc.net/clinicos/apis/pawthosx-business-api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/clinicos/pawthosx-business-api-v1/versions/a905bde4e796/schema)
