> ## Documentation Index
> Fetch the complete documentation index at: https://docs.polinate.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# List invoices

> Returns a paginated list of invoices with optional filters by creation time, artefact presence, status, and JSONB properties.

**Property Filtering:** Use `propertyPath`, `propertyValue`, and `propertyExists` to filter invoices by integration-specific metadata stored in the `properties` JSONB field.
- `propertyPath`: Dot-notation path to the property (e.g., "xero.invoiceId")
- `propertyValue`: Value to match exactly (mutually exclusive with `propertyExists`)
- `propertyExists`: Boolean to check existence (true) or non-existence (false) of the property path (mutually exclusive with `propertyValue`)

**Note:** `propertyPath` filtering takes precedence over `hasArtefact`.



## OpenAPI

````yaml openapi.json get /api/v1/invoices
openapi: 3.0.3
info:
  title: Polinate External API
  version: 1.0.0
  description: >-
    External API for partners and services. Authentication via X-Business-Id and
    X-API-Key headers.


    Credentials location: In the Polinate app, navigate to Business Settings →
    Integrations to find your Business ID and API Key.
servers:
  - url: https://integrations.polinate.ai
    description: Production
security: []
tags:
  - name: Items
    description: >-
      Manage items and item variants. Auth: X-Business-Id and X-API-Key (see
      Business Settings → Integrations).
  - name: Buyers
    description: >-
      Create buyers and related contacts/locations. Auth: X-Business-Id and
      X-API-Key (see Business Settings → Integrations).
  - name: Pricing
    description: >-
      Create price lists and entries. Auth: X-Business-Id and X-API-Key (see
      Business Settings → Integrations).
  - name: Invoices
    description: >-
      List and update invoices. Auth: X-Business-Id and X-API-Key (see Business
      Settings → Integrations).
  - name: Orders
    description: >-
      Order ingestion. Auth: X-Business-Id and X-API-Key (see Business Settings
      → Integrations).
paths:
  /api/v1/invoices:
    get:
      tags:
        - Invoices
      summary: List invoices
      description: >-
        Returns a paginated list of invoices with optional filters by creation
        time, artefact presence, status, and JSONB properties.


        **Property Filtering:** Use `propertyPath`, `propertyValue`, and
        `propertyExists` to filter invoices by integration-specific metadata
        stored in the `properties` JSONB field.

        - `propertyPath`: Dot-notation path to the property (e.g.,
        "xero.invoiceId")

        - `propertyValue`: Value to match exactly (mutually exclusive with
        `propertyExists`)

        - `propertyExists`: Boolean to check existence (true) or non-existence
        (false) of the property path (mutually exclusive with `propertyValue`)


        **Note:** `propertyPath` filtering takes precedence over `hasArtefact`.
      operationId: listInvoices
      parameters:
        - schema:
            type: integer
            minimum: 0
            exclusiveMinimum: true
            example: 1
          required: false
          name: page
          in: query
        - schema:
            type: integer
            minimum: 0
            exclusiveMinimum: true
            example: 20
          required: false
          name: limit
          in: query
        - schema:
            type: string
            format: date-time
            example: '2024-01-01T00:00:00Z'
          required: false
          name: createdSince
          in: query
        - schema:
            type: boolean
            description: >-
              Filter by presence of invoiceArtefact property (use propertyPath
              for more control)
            example: true
          required: false
          name: hasArtefact
          in: query
        - schema:
            type: string
            enum:
              - DELETED
              - DRAFT
              - AUTHORISED
              - PARTIALLY_PAID
              - PAID
              - OVERPAID
              - OVERDUE
              - VOIDED
              - DEFAULTED
              - CREDITED
              - REFUNDED
            example: PAID
          required: false
          name: status
          in: query
        - schema:
            type: string
            description: Dot-notation path to filter by JSONB property
            example: xero.invoiceId
          required: false
          name: propertyPath
          in: query
        - schema:
            type: string
            description: >-
              Value to match exactly for the property path (mutually exclusive
              with propertyExists)
            example: '12345'
          required: false
          name: propertyValue
          in: query
        - schema:
            type: boolean
            description: >-
              Boolean to check existence (true) or non-existence (false) of the
              property path (mutually exclusive with propertyValue)
            example: false
          required: false
          name: propertyExists
          in: query
        - schema:
            type: string
            description: >-
              Business identifier for external auth. Find in Polinate app →
              Business Settings → Integrations.
            example: '{{businessId}}'
          required: true
          name: X-Business-Id
          in: header
        - schema:
            type: string
            description: >-
              Per-business API key for external auth. Find in Polinate app →
              Business Settings → Integrations.
            example: '{{apiKey}}'
          required: true
          name: X-API-Key
          in: header
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Paginated_ZodObject'
              example:
                items: []
                total: 0
                page: 1
                pageSize: 20
        '400':
          description: >-
            Bad Request - Invalid query parameters or invalid property filter
            combinations
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardError'
              examples:
                ValidationError:
                  summary: Invalid status value
                  value:
                    errorCode: VALIDATION_ERROR
                    message: Invalid status value
                MutuallyExclusiveParams:
                  summary: propertyValue and propertyExists are mutually exclusive
                  value:
                    errorCode: VALIDATION_ERROR
                    message: propertyValue and propertyExists cannot be used together
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardError'
        '429':
          description: Rate limited
          headers:
            Retry-After:
              schema:
                type: string
              description: Seconds to wait before retrying
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardError'
components:
  schemas:
    Paginated_ZodObject:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Invoice'
        total:
          type: number
        page:
          type: number
        pageSize:
          type: number
      required:
        - items
        - total
        - page
        - pageSize
    StandardError:
      type: object
      properties:
        errorCode:
          type: string
        message:
          type: string
        fieldErrors:
          type: object
          additionalProperties:
            type: string
      required:
        - errorCode
        - message
    Invoice:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
          enum:
            - DELETED
            - DRAFT
            - AUTHORISED
            - PARTIALLY_PAID
            - PAID
            - OVERPAID
            - OVERDUE
            - VOIDED
            - DEFAULTED
            - CREDITED
            - REFUNDED
        reference:
          type: string
        notes:
          type: string
        createdAt:
          type: string
        updatedAt:
          type: string
        properties:
          type: object
          properties: {}
        invoiceLineItems:
          type: array
          items:
            $ref: '#/components/schemas/InvoiceLineItem'
      required:
        - id
    InvoiceLineItem:
      type: object
      properties:
        id:
          type: string
        invoiceId:
          type: string
        itemVariantId:
          type: string
        description:
          type: string
        quantity:
          type: number
        unitAmount:
          type: number
        currency:
          type: string
      required:
        - id
        - invoiceId

````