---
id: ADR-ACC-PRD-007
title: Product Configuration Does Not Opt Into Custom Fields
product_area: accounting
module: products
revision: 3
status: proposed
design_intent: confirmed
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
decision: Products does not declare custom-field capability, rejects custom values at the HTTP boundary and
  registers standard read-only metadata, with no custom-field support on prices or setups.
constrains:
- DOM-ACC-PRD-001
- DOM-ACC-PRD-002
- DOM-ACC-PRD-004
- SVC-ACC-PRD-products
- RESP-ACC
origin: R2-ARCH-001 (Andrew, 2026-10-19, D1 Remove all six); supersedes D-4 of the shared product base
alternatives:
- option: Share one custom-field map across product kinds.
  why_not: The approved opt-in decision supersedes the earlier map design for Accounting products.
consequences:
- New common fields require a product change.
- The export dataset has no custom-value collection.
supersedes: []
evidence:
- 'services-accounting at f47cb263: docs/accounting/products.md (Custom fields); docs/milestones/ACCT-M1-books-and-invoices.md
  (Entity capabilities); modules/products/metadata/products.object.ts.'
---

# Product Configuration Does Not Opt Into Custom Fields

## Context

The architecture ruling replaces the earlier shared custom-map choice with explicit opt-in capability. The product registration omits that capability.

## Decision

Products does not declare custom-field capability, rejects custom values at the HTTP boundary and registers standard read-only metadata, with no custom-field support on prices or setups.

## Alternatives Considered

Share one custom-field map across product kinds. The approved opt-in decision supersedes the earlier map design for Accounting products.

## Consequences

Specialized application attributes can remain on domain extensions. This design introduces no product custom-field support.
