---
title: "Get bill reports"
method: GET
path: "/api/v2/reports/bill_reports"
tags: ["Reports"]
---

# Get bill reports

`GET /api/v2/reports/bill_reports`

## Request

- Base URL: `https://developer.productive.io` (the document declares no server; this is the origin it was published from)
- URL: `https://developer.productive.io/api/v2/reports/bill_reports`
- Auth: none declared

## Query parameters

- `filter` union
  - object
    - `$op` 'or' | 'and', required
  - FilterBillReport
    - `creator_id` union
      - object
        - `eq` CreatorId (unresolved $ref)
        - `not_eq` CreatorId (unresolved $ref)
        - `contains` CreatorId (unresolved $ref)
        - `not_contain` CreatorId (unresolved $ref)
      - CreatorId (unresolved $ref)
    - `date` union
      - object
        - `eq` Date (unresolved $ref)
        - `not_eq` Date (unresolved $ref)
        - `contains` Date (unresolved $ref)
        - `not_contain` Date (unresolved $ref)
      - Date (unresolved $ref)
    - `deal_id` union
      - object
        - `eq` DealId (unresolved $ref)
        - `not_eq` DealId (unresolved $ref)
        - `contains` DealId (unresolved $ref)
        - `not_contain` DealId (unresolved $ref)
      - DealId (unresolved $ref)
    - `description` union
      - object
        - `eq` Description (unresolved $ref)
        - `not_eq` Description (unresolved $ref)
        - `contains` Description (unresolved $ref)
        - `not_contain` Description (unresolved $ref)
      - Description (unresolved $ref)
    - `due_date` union
      - object
        - `eq` DueDate (unresolved $ref)
        - `not_eq` DueDate (unresolved $ref)
        - `contains` DueDate (unresolved $ref)
        - `not_contain` DueDate (unresolved $ref)
      - DueDate (unresolved $ref)
    - `id` union
      - object
        - `eq` Id (unresolved $ref)
        - `not_eq` Id (unresolved $ref)
        - `contains` Id (unresolved $ref)
        - `not_contain` Id (unresolved $ref)
      - Id (unresolved $ref)
    - `invoice_number` union
      - object
        - `eq` InvoiceNumber (unresolved $ref)
        - `not_eq` InvoiceNumber (unresolved $ref)
        - `contains` InvoiceNumber (unresolved $ref)
        - `not_contain` InvoiceNumber (unresolved $ref)
      - InvoiceNumber (unresolved $ref)
    - `purchase_order_id` union
      - object
        - `eq` PurchaseOrderId (unresolved $ref)
        - `not_eq` PurchaseOrderId (unresolved $ref)
        - `contains` PurchaseOrderId (unresolved $ref)
        - `not_contain` PurchaseOrderId (unresolved $ref)
      - PurchaseOrderId (unresolved $ref)
    - `total_cost` union
      - object
        - `eq` TotalCost (unresolved $ref)
        - `not_eq` TotalCost (unresolved $ref)
        - `contains` TotalCost (unresolved $ref)
        - `not_contain` TotalCost (unresolved $ref)
      - TotalCost (unresolved $ref)
    - `total_received` union
      - object
        - `eq` TotalReceived (unresolved $ref)
        - `not_eq` TotalReceived (unresolved $ref)
        - `contains` TotalReceived (unresolved $ref)
        - `not_contain` TotalReceived (unresolved $ref)
      - TotalReceived (unresolved $ref)
- `sort` string[]
- `group` 'bill' | 'creator' | 'date' | 'deal' | 'due_date' | 'number' | 'organization' | 'payment_status_id' | 'purchase_order' | 'sent_status' | 'status_id' | 'vendor'

## Response `200`

Collection bill report

- object
  - `data` object[]
    - `attributes` object
      - `count` Count (unresolved $ref)
      - `currency` Currency (unresolved $ref)
      - `currency_default` CurrencyDefault (unresolved $ref)
      - `currency_normalized` CurrencyNormalized (unresolved $ref)
      - `date_period` DatePeriod (unresolved $ref)
      - `due_date_period` DueDatePeriod (unresolved $ref)
      - `formula_fields` FormulaFields (unresolved $ref)
      - `group` Group (unresolved $ref)
      - `number` Number (unresolved $ref)
      - `payment_status_id` PaymentStatusId (unresolved $ref)
      - `sent_status` SentStatus (unresolved $ref)
      - `status_id` StatusId (unresolved $ref)
      - `total_cost` TotalCost (unresolved $ref)
      - `total_cost_default` TotalCostDefault (unresolved $ref)
      - `total_cost_normalized` TotalCostNormalized (unresolved $ref)
      - `total_received` TotalReceived (unresolved $ref)
      - `total_received_default` TotalReceivedDefault (unresolved $ref)
      - `total_received_normalized` TotalReceivedNormalized (unresolved $ref)
    - `relationships` object
      - `bill` union: A JSON:API single relationship — links to one related resource or `null`.
        - SingleLinkageNullable
          - `data` Resource, required: A JSON:API resource identifier object containing the resource type and ID.
            - `id` string, required: The unique identifier of the resource.
            - `type` string, required: The resource type name (e.g. `tasks`, `people`, `deals`).
        - NotIncluded: Placeholder for a relationship that was not sideloaded in this response.
          - `meta` object, required: Metadata indicating the sideload status of this relationship.
            - `included` false, required: Whether the related resource was included in the sideloaded data. Always `false` for this variant.
      - `creator` union: A JSON:API single relationship — links to one related resource or `null`.
        - SingleLinkageNullable
          - `data` Resource, required: A JSON:API resource identifier object containing the resource type and ID.
            - `id` string, required: The unique identifier of the resource.
            - `type` string, required: The resource type name (e.g. `tasks`, `people`, `deals`).
        - NotIncluded: Placeholder for a relationship that was not sideloaded in this response.
          - `meta` object, required: Metadata indicating the sideload status of this relationship.
            - `included` false, required: Whether the related resource was included in the sideloaded data. Always `false` for this variant.
      - `deal` union: A JSON:API single relationship — links to one related resource or `null`.
        - SingleLinkageNullable
          - `data` Resource, required: A JSON:API resource identifier object containing the resource type and ID.
            - `id` string, required: The unique identifier of the resource.
            - `type` string, required: The resource type name (e.g. `tasks`, `people`, `deals`).
        - NotIncluded: Placeholder for a relationship that was not sideloaded in this response.
          - `meta` object, required: Metadata indicating the sideload status of this relationship.
            - `included` false, required: Whether the related resource was included in the sideloaded data. Always `false` for this variant.
      - `organization` union: A JSON:API single relationship — links to one related resource or `null`.
        - SingleLinkageNullable
          - `data` Resource, required: A JSON:API resource identifier object containing the resource type and ID.
            - `id` string, required: The unique identifier of the resource.
            - `type` string, required: The resource type name (e.g. `tasks`, `people`, `deals`).
        - NotIncluded: Placeholder for a relationship that was not sideloaded in this response.
          - `meta` object, required: Metadata indicating the sideload status of this relationship.
            - `included` false, required: Whether the related resource was included in the sideloaded data. Always `false` for this variant.
      - `purchase_order` union: A JSON:API single relationship — links to one related resource or `null`.
        - SingleLinkageNullable
          - `data` Resource, required: A JSON:API resource identifier object containing the resource type and ID.
            - `id` string, required: The unique identifier of the resource.
            - `type` string, required: The resource type name (e.g. `tasks`, `people`, `deals`).
        - NotIncluded: Placeholder for a relationship that was not sideloaded in this response.
          - `meta` object, required: Metadata indicating the sideload status of this relationship.
            - `included` false, required: Whether the related resource was included in the sideloaded data. Always `false` for this variant.
      - `report` union: A JSON:API single relationship — links to one related resource or `null`.
        - SingleLinkageNullable
          - `data` Resource, required: A JSON:API resource identifier object containing the resource type and ID.
            - `id` string, required: The unique identifier of the resource.
            - `type` string, required: The resource type name (e.g. `tasks`, `people`, `deals`).
        - NotIncluded: Placeholder for a relationship that was not sideloaded in this response.
          - `meta` object, required: Metadata indicating the sideload status of this relationship.
            - `included` false, required: Whether the related resource was included in the sideloaded data. Always `false` for this variant.
      - `vendor` union: A JSON:API single relationship — links to one related resource or `null`.
        - SingleLinkageNullable
          - `data` Resource, required: A JSON:API resource identifier object containing the resource type and ID.
            - `id` string, required: The unique identifier of the resource.
            - `type` string, required: The resource type name (e.g. `tasks`, `people`, `deals`).
        - NotIncluded: Placeholder for a relationship that was not sideloaded in this response.
          - `meta` object, required: Metadata indicating the sideload status of this relationship.
            - `included` false, required: Whether the related resource was included in the sideloaded data. Always `false` for this variant.
  - `included` unknown[]
    - unknown
  - `meta` Meta: Pagination and response metadata returned with every collection endpoint.
    - `current_page` integer: The current page number in this paginated response (1-based).
    - `max_page_size` integer: Maximum number of records allowed per page for this endpoint.
    - `organization_features` object: Feature flags and capabilities enabled for the current organization, used for UI rendering.
    - `page_size` integer: Number of records returned per page in this response.
    - `settings` object: Organization or user settings relevant to this resource's display.
    - `total_count` integer: Total number of records matching the current query across all pages.
    - `total_pages` integer: Total number of pages available for the current query and page size.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `408`: Request Timeout
- `423`: Locked
- `429`: Too Many Requests
- `500`: Internal Server Error

## Changes

- **2026-11-02** `fa3060fd0144`: 7 info
  - added the non-success response with the status `400`
  - added the non-success response with the status `401`
  - added the non-success response with the status `403`
  - added the non-success response with the status `408`
  - …3 more
- **2026-10-27** `f11a8740641a`: 1 info
  - endpoint added
  - …this revision’s changelog is incomplete

[Operation history](https://skmtc.dev/productive/apis/api-documentation/changes/api/v2/reports/bill_reports/get.md)

---

[API](https://skmtc.dev/productive/apis/api-documentation.md) - [All operations](https://skmtc.dev/productive/apis/api-documentation/llms.txt) - [OpenAPI document](https://skmtc.dev/productive/apis/api-documentation/revisions/e7bdfdf6cba3?raw)
