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

# List Products

> Lists your products, newest first, each with its `resolved_tax_codes`. Page with `limit` + `starting_after` (pass the last product's `id`). Filter by `source_id`, `source`, and `source_account_id` — exact matches combined with AND; all three together select at most one product.



## OpenAPI

````yaml GET /products
openapi: 3.1.0
info:
  title: Taxwire Public API
  version: 0.1.0
servers: []
security: []
paths:
  /products:
    get:
      tags:
        - Products
      summary: List Products
      description: >-
        Lists your products, newest first, each with its `resolved_tax_codes`.
        Page with `limit` + `starting_after` (pass the last product's `id`).
        Filter by `source_id`, `source`, and `source_account_id` — exact matches
        combined with AND; all three together select at most one product.
      operationId: list_products_products_get
      parameters:
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 1000
            minimum: 1
            description: Page size, between 1 and 1000.
            default: 100
            title: Limit
          description: Page size, between 1 and 1000.
        - name: starting_after
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Return products after this one. Pass the `id` of the last product
              from the previous page to fetch the next page.
            title: Starting After
          description: >-
            Return products after this one. Pass the `id` of the last product
            from the previous page to fetch the next page.
        - name: source_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Only products with this source id.
            title: Source Id
          description: Only products with this source id.
        - name: source
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                enum:
                  - business_central
                  - campfire
                  - maxio
                  - monetizenow
                  - netsuite
                  - quickbooks
                  - rillet
                  - salesbricks
                  - shopify
                  - stripe
                  - taxwire
                  - xero
              - type: 'null'
            description: Only products from this source system.
            title: Source
          description: Only products from this source system.
        - name: source_account_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Only products in this source account.
            title: Source Account Id
          description: Only products in this source account.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductsListResponse'
        '422':
          description: Validation Error - Invalid input data
          content:
            application/json:
              schema:
                properties:
                  detail:
                    items:
                      properties:
                        type:
                          type: string
                        loc:
                          items:
                            type: string
                          type: array
                        msg:
                          type: string
                        input:
                          oneOf:
                            - type: string
                            - type: number
                            - type: boolean
                            - type: 'null'
                      type: object
                    type: array
                type: object
              example:
                detail:
                  - type: string_type
                    loc:
                      - body
                      - line_items
                      - 0
                      - quantity
                    msg: Input should be a valid string
                    input: 1
        '429':
          description: Rate limit exceeded. Try again later.
          headers:
            Retry-After:
              schema:
                type: string
              description: Time in seconds until the rate limit resets
            X-RateLimit-Limit:
              schema:
                type: string
              description: The rate limit ceiling for the given request
            X-RateLimit-Remaining:
              schema:
                type: string
              description: The number of requests remaining in the time window
          content:
            application/json:
              schema:
                properties:
                  detail:
                    type: string
                    example: Rate limit exceeded
                type: object
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: string
              example: Internal Server Error
      security:
        - APIKeyHeader: []
        - HTTPBearer: []
components:
  schemas:
    ProductsListResponse:
      properties:
        object:
          type: string
          title: Object
          default: list
        url:
          type: string
          title: Url
          default: /products
        has_more:
          type: boolean
          title: Has More
          description: More results available
          examples:
            - true
            - false
        data:
          items:
            $ref: '#/components/schemas/ProductResource'
          type: array
          title: Data
          description: A page of products, newest first by default.
      type: object
      required:
        - has_more
      title: ProductsListResponse
      description: List envelope for GET /products, cursor-paged by `id`.
    ProductResource:
      properties:
        id:
          type: string
          title: Id
          description: Taxwire's stable identifier for the product.
          examples:
            - prd_01J9Z8Q4E7K2M3N4P5R6S7T8U9
        source_id:
          type: string
          title: Source Id
          description: >-
            Your identifier for the product in the system it came from (a SKU, a
            Stripe product id).
          examples:
            - SKU-123
            - prd_2344536
        source:
          type: string
          enum:
            - business_central
            - campfire
            - maxio
            - monetizenow
            - netsuite
            - quickbooks
            - rillet
            - salesbricks
            - shopify
            - stripe
            - taxwire
            - xero
          description: >-
            The system the product came from. `taxwire` for products you send
            directly to this API.
          examples:
            - taxwire
            - stripe
        source_account_id:
          type: string
          title: Source Account Id
          description: >-
            The account the product belongs to within `source`, for sources that
            have more than one. `__default__` when the source has a single
            account.
          examples:
            - acct_234234
        name:
          type: string
          title: Name
          description: The product's name.
          examples:
            - Organic Coffee Beans
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: The product's description, if any.
          examples:
            - 12 oz bag of roasted coffee beans
        source_category:
          anyOf:
            - type: string
            - type: 'null'
          title: Source Category
          description: >-
            The product's category in the source system, kept for
            identification. Not a tax code and never used in a calculation.
          examples:
            - Food & Beverage > Coffee
        tax_codes:
          items:
            type: string
          type: array
          title: Tax Codes
          description: >-
            The tax codes you assigned to the product. Empty means no
            product-level assignment, so the organization default applies.
          examples:
            - - TANGIBLE_PERSONAL_PROPERTY.FOOD
        resolved_tax_codes:
          items:
            type: string
          type: array
          title: Resolved Tax Codes
          description: >-
            The tax codes actually used for the product during a calculation:
            `tax_codes` when set, otherwise your organization default. Never
            empty.
          examples:
            - - TANGIBLE_PERSONAL_PROPERTY
        source_updated_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Source Updated At
          description: >-
            When the product last changed in the source system, as reported by
            the sender. Null when unknown.
          examples:
            - '2026-09-14T19:58:12Z'
        created_at:
          type: string
          format: date-time
          title: Created At
          description: When Taxwire first stored the product.
          examples:
            - '2026-09-14T20:00:00Z'
        updated_at:
          type: string
          format: date-time
          title: Updated At
          description: >-
            When the product was last changed in Taxwire. Equals `created_at`
            until the first change.
          examples:
            - '2026-09-14T20:00:00Z'
      additionalProperties: false
      type: object
      required:
        - id
        - source_id
        - source
        - source_account_id
        - name
        - resolved_tax_codes
        - created_at
        - updated_at
      title: ProductResource
      description: A product in your Taxwire catalog and the tax codes assigned to it.
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
    HTTPBearer:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.