---
id: CON-ACC-PRD-001
name: Product
feature: FEAT-ACC-PRD-01
product_area: accounting
module: products
revision: 3
status: draft
product_intent: proposed
implementation_evidence: observed
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
definition: >-
  A product is the common, continuing catalogue identity for a chargeable item or financial reference, shared
  across Accounting and domain applications.
owned_by: MOD-ACC-PRD
synonyms:
  - General-purpose Accounting item
  - Catalogue charge
not_to_be_confused_with:
  - A recorded transaction charge
  - A domain’s specialized extension
facets:
  - name: Kind (product type)
    meaning: >-
      A release-managed classification identifies pricing, supported behavior and the application owning the
      product.
    used_for: Selecting a suitable kind and enforcing its ownership.
  - name: Identity
    meaning: >-
      A supplied or name-derived readable Code remains unique across kinds; older generated identities retain
      restricted use.
    used_for: Maintaining continuing references as descriptive information changes.
  - name: Business unit
    meaning: The unit provides the product’s fixed financial context and eligible currencies.
    used_for: Confining component and accounting references to the correct books.
  - name: Status
    meaning: 'Active, inactive and retired describe availability and whether ordinary correction is allowed.'
    used_for: Withdrawing and restoring a product without removing its identity.
  - name: Sale window and portal visibility
    meaning: Stored opening and closing instants and portal visibility describe intended selling availability.
    used_for: Supplying configuration whose controls are hidden in the current editor.
  - name: Fees and notes
    meaning: Monetary cancellation and restocking settings accompany internal finance remarks.
    used_for: Retaining instructions for future cancellation work and staff understanding.
  - name: Lock
    meaning: Delete-only or combined update-and-delete protection can be explicitly removed by an authorized editor.
    used_for: Preventing unwanted mutation while allowing deliberate release.
  - name: Domain extension
    meaning: The owning application retains specialized information under the common product identity.
    used_for: Connecting package or merchandise details to one shared financial product.
  - name: Bundle
    meaning: 'Components retain included products, quantities and allocation prices.'
    used_for: Grouping products while validating relationships and price totals.
  - name: Quantity discount (bulk pricing)
    meaning: Quantity bands store percentage or monetary price reductions.
    used_for: Describing incentives for later order pricing.
  - name: Purchase limit
    meaning: A customer ceiling describes an all-time or rolling maximum.
    used_for: Supplying the configured purchase restriction to Orders.
  - name: Tasks to generate
    meaning: 'Task instructions retain CRM type, queue, assignee and due timing.'
    used_for: Describing staff work needed after purchase.
  - name: Confirmation e-mail
    meaning: Confirmation configuration selects shared or product-owned content in Platform.
    used_for: Supplying messaging choices for purchase confirmation.
relationships:
  - to: CON-ACC-PRD-002
    statement: The product’s grid supplies configured prices for its audiences and currencies.
    provenance: observed
    source: 'services-accounting:modules/products/services/rules/product-rules.ts:pricesProblem'
  - to: CON-ACC-PRD-004
    statement: The product can carry independent financial treatment through its accounting setup.
    provenance: observed
    source: 'services-accounting:modules/products/db/product-accounting-setups.table.ts'
lifecycle:
  - state: active
    meaning: The product is currently available for new use.
    how_it_changes: An ordinary correction withdraws it or Retirement preserves it as retired.
  - state: inactive
    meaning: The product remains correctable while withdrawn from sale.
    how_it_changes: Correction or Reactivation restores active status; Retirement moves it to retired.
  - state: retired
    meaning: The product remains retained and requires reactivation before correction.
    how_it_changes: Reactivation restores active status.
acted_on_by:
  - CAP-ACC-PRD-001
  - CAP-ACC-PRD-002
  - CAP-ACC-PRD-003
  - CAP-ACC-PRD-004
  - CAP-ACC-PRD-005
  - CAP-ACC-PRD-006
  - CAP-ACC-PRD-007
  - CAP-ACC-PRD-010
  - CAP-ACC-PRD-011
  - CAP-ACC-PRD-012
  - CAP-ACC-PRD-013
  - CAP-ACC-PRD-014
visible_to:
  - ACT-ACC-006
  - ACT-ACC-007
  - ACT-ACC-008
  - ACT-ACC-010
  - ACT-ACC-011
evidence:
  - 'react-console:components/accounting-config/products/product-bulk-pricing-section.tsx'
  - 'react-console:components/accounting-config/products/product-common-sections.tsx'
  - 'react-console:components/accounting-config/products/product-editor-page.tsx'
  - 'react-console:components/accounting-config/products/product-row-actions.tsx'
  - 'react-console:components/accounting-config/products/product-section-types.ts'
  - 'react-console:components/accounting-config/products/product-task-generation-section.tsx'
  - 'react-console:components/accounting-config/products/products-page.tsx'
  - 'react-console:components/accounting-config/products/use-products.ts'
  - 'services-accounting:docs/accounting/products.md'
  - 'services-accounting:docs/migrations/accounting-modernization/products-shared/README.md'
  - 'services-accounting:docs/milestones/ACCT-M1-books-and-invoices.md'
  - 'services-accounting:docs/milestones/plans/ACCT-M1-plan.md'
  - 'services-accounting:modules/products/db/product-accounting-setups.table.ts'
  - 'services-accounting:modules/products/db/product-bulk-pricing-rules.table.ts'
  - 'services-accounting:modules/products/db/product-bundle-components.table.ts'
  - 'services-accounting:modules/products/db/product-task-templates.table.ts'
  - 'services-accounting:modules/products/db/product-types.table.ts'
  - 'services-accounting:modules/products/db/products.table.ts'
  - 'services-accounting:modules/products/services/confirmation-emails/confirmation-email-templates.ts'
  - 'services-accounting:modules/products/services/persistence/communication-templates.ts'
  - 'services-accounting:modules/products/services/persistence/product-types.ts'
  - 'services-accounting:modules/products/services/persistence/products.ts'
  - 'services-accounting:modules/products/services/persistence/task-configurations.ts'
  - 'services-accounting:modules/products/services/rules/product-rules.ts'
supersedes:
  - react-console acceptance inventory CAP-ACC-PRD-001
  - react-console acceptance inventory CAP-ACC-PRD-018
---

# Product

## What It Is

A product is the continuing catalogue record for something the organization charges for or needs to identify in its financial work. A publication, a parking permit, a donation and a membership package can all use this common record. Finance creates the general-purpose kinds in Accounting. Other applications keep their own kinds on the same base, so a sale can refer to the product without knowing how that application describes it.

The product brings together a recognizable name, a stable Code, its kind, its owning business unit and the configuration needed by selling and accounting processes. Staff can correct the name without replacing the identity. The kind and business unit are fixed once the record exists. This gives later references a continuing meaning even when the description or price changes.

The shared base separates common financial information from application-specific information. Membership describes package rules beside the product; Commerce describes merchandise beside it. Those extensions do not create competing financial identities.

## What It Is Not

A product is distinct from a particular sale. An invoice line records what was charged in a transaction, while the catalogue supplies configuration for later work. A membership package’s eligibility or a merchandise item’s retail presentation belongs to its domain extension. The product also does not grant customer access or establish that a purchase is permitted.

Selling settings are facets of the product. Bundles, task instructions and confirmation choices have no independent lifecycle that would make each a separate broad business concept.

## How It Is Used

An administrator chooses the appropriate product kind and business unit, supplies its identity and name, and configures its prices. Finance can separately add accounting treatment. Readers search and inspect the catalogue without receiving authority to change it. Staff withdraw obsolete products while keeping references available, then restore them if the offer returns.

Corrections need the version staff read. Another writer’s save can make that version stale. The console also saves product information separately from accounting information, so a setup refusal may leave the product already saved. Domain applications can instead place their product and extension writes within a shared transaction.

## Its Facets

**Kind and ownership.** The release-managed register describes pricing and supported features. Accounting, Donation and Legacy kinds serve different purposes; domain kinds identify their owning application.

**Identity and unit.** A readable Code distinguishes the product across all kinds in the workspace. Its fixed unit supplies the accounting context and available currencies. Older generated identities remain usable as references but cannot be corrected.

**Status and protection.** Active, inactive and retired distinguish current use from withdrawal. Retirement blocks correction until restoration. Separate locks protect deletion or both replacement and deletion.

**Availability, visibility and remarks.** The record carries sale boundaries, portal visibility, fees and staff notes. Some stored choices have no controls in the current console.

**Bundles and quantity incentives.** Component allocations describe included products and their quantities. Discount bands describe reductions for quantity purchases. These settings are checked when stored rather than proving purchase-time execution.

**Purchase ceilings and follow-up.** Customer ceilings describe an all-time or rolling maximum. Task instructions describe staff work after a purchase, including type, queue, assignee and timing.

**Confirmation content.** A product selects shared content or owns content held by Platform. Storing that selection does not establish that an order sends it.

## How It Relates

Prices describe the product’s audience, currency and period choices. Accounting setup describes where its revenue belongs and when it is recognized. Books owns the referenced units and accounts; transactions and orders consume product information. CRM owns task configuration, Platform owns communication content, and domain applications own their extensions.

## What It Could Become

The product should keep the common identity dependable as more domain kinds become active. Before design, Product needs to settle omission differences between API and database replacement and the intended purchase-time use of stored features. Restoring hidden console controls also needs an explicit decision about which staff outcome they serve.
