---
title: "Retrieve Product"
method: GET
path: "/rr/api/v1/product/{id}"
tags: ["Revenue Recognition", "Accounts Receivable"]
---

# Retrieve Product

`GET /rr/api/v1/product/{id}`

## Path parameters

- `id` integer, required

## Response `200`

- Product
  - `id` integer, required
  - `is_deleted` boolean, required
  - `deleted_at` string, date-time, nullable, required
  - `department_name` string, required
  - `invoice_account_name` string, nullable, required
  - `revenue_account_name` string, nullable, required
  - `ar_account_name` string, nullable, required
  - `bad_debt_account_name` string, nullable, required
  - `invoice_unbilled_account_name` string, nullable, required
  - `tax_account_name` string, required
  - `tags` object[], required
  - `last_modified_at` string, date-time, required
  - `product_uuid` string, uuid, required
  - `display_name` string, required
  - `usage_group_count` integer, required
  - `usage_groups` ProductUsageGroupSummary[], required
    - `id` integer, required
    - `name` string, nullable
    - `pricing_model` 'unit_based' | 'fixed_fee' | 'percentage_based' | 'graduated_tiered' | 'volume_based' — * `unit_based` - Unit based pricing * `fixed_fee` - Fixed fee pricing * `percentage_based` - Percentage based pricing * `graduated_tiered` - Graduated tiered pricing * `volume_based` - Volume based pricing
    - `unit_of_measure` string, nullable
    - `tier_count` integer, required
    - `tiers` ProductUsageTierSummary[], required
      - `id` integer, required
      - `name` string, required
      - `pricing_type` string, required
      - `from_quantity` number, double, required
      - `to_quantity` number, double, nullable, required
      - `price` number, double, nullable, required
      - `percentage` number, double, nullable, required
  - `product_id` string, nullable
  - `product_name` string, nullable
  - `product_description` string, nullable
  - `tag_ids` integer[]
  - `tag_group_ids` integer[]
  - `currency` string, nullable
  - `price` number, double, nullable
  - `cost` number, double, nullable
  - `exclude_from_mrr` boolean
  - `is_taxable` boolean
  - `is_renewable` boolean
  - `recognize_revenue` boolean — If False, contract-sync skips the revenue-recognition waterfall for this product (no ContractSubscription / RevenueTransaction rows).
  - `is_immediate_recognition` boolean — When true, revenue for this product is recognized in full on the invoice finalization date instead of being amortized over the service period. Used by the Stripe accrual JE waterfall.
  - `created_at` string, date-time, required
  - `stripe_product_id` string, nullable
  - `avalara_item_id` integer, nullable
  - `avalara_item_data` unknown
  - `avalara_tax_code` string, nullable — Avalara tax code (e.g., SW052000 for SAAS)
  - `anrok_item_id` string, nullable
  - `sphere_item_id` string, nullable
  - `apply_dept_tag_to_invoice_journals` boolean, nullable — Apply Department and Tag categorization to all lines on Invoice Journals
  - `customer` integer, required
  - `department` integer, nullable
  - `invoice_account` integer, nullable
  - `revenue_account` integer, nullable
  - `ar_account` integer, nullable
  - `bad_debt_account` integer, nullable
  - `invoice_unbilled_account` integer, nullable

---

[API](https://skmtc.net/campfire/apis/campfire-developer-apis.md) · [All operations](https://skmtc.net/campfire/apis/campfire-developer-apis/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/campfire/campfire-developer-apis/versions/6945ebc3180e/schema)
