---
id: JNY-ACC-PRD-003
title: Finance configures valid donation and audience pricing
feature: FEAT-ACC-PRD-02
product_area: accounting
module: products
revision: 3
status: draft
product_intent: proposed
implementation_evidence: observed
supersedes:
  - ACT-ACC-0108
  - ACT-ACC-0136
  - ACT-ACC-0128
  - ACT-ACC-0129
  - ACT-ACC-0109
  - ACT-ACC-0113
  - ACT-ACC-0140
  - ACT-ACC-0142
  - ACT-ACC-0144
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
actor: ACT-ACC-006
goal: Configure donation and fixed-price offers while rejecting grid choices with invalid backing.
capabilities:
  - CAP-ACC-PRD-008
  - CAP-ACC-PRD-009
  - CAP-ACC-PRD-002
screens:
  - '/console/{tenantId}/configuration/accounting/products?type=donation_product'
  - '/console/{tenantId}/configuration/accounting/products/new?type=donation_product'
  - '/console/{tenantId}/configuration/accounting/products/{id}'
steps:
  - 'n': 1
    surface: '/console/{tenantId}/configuration/accounting/products/new?type=donation_product'
    action: Create a named donation in its business unit.
    capability: CAP-ACC-PRD-008
    expected: The editor explains giver pricing and the row displays that choice.
    provenance: test
    source: 'react-console:acceptance/accounting/playwright/journeys/products/ACT-ACC-0136.spec.ts#ACT-ACC-0136'
  - 'n': 2
    surface: createProduct
    action: Submit a price row for the donation through the API.
    capability: CAP-ACC-PRD-008
    expected: Validation rejects the stored amount for a giver-priced kind.
    provenance: test
    source: 'react-console:acceptance/accounting/playwright/journeys/products/ACT-ACC-0136.spec.ts#ACT-ACC-0136'
  - 'n': 3
    surface: createProduct
    action: 'Try missing standard backing, standard percentages, unsupported currency and base-currency prohibition.'
    capability: CAP-ACC-PRD-008
    expected: Each invalid attempt fails without persisting a product.
    provenance: test
    source: 'react-console:acceptance/accounting/playwright/journeys/products/ACT-ACC-0108.spec.ts#ACT-ACC-0108'
  - 'n': 4
    surface: createProduct
    action: 'Configure a valid standard amount, member price and foreign conversion.'
    capability: CAP-ACC-PRD-008
    expected: The resulting product retains the submitted pricing choices.
    provenance: test
    source: 'react-console:acceptance/accounting/playwright/journeys/products/ACT-ACC-0100.spec.ts#ACT-ACC-0100'
  - 'n': 5
    surface: '/console/{tenantId}/configuration/accounting/products/{id}'
    action: Inspect a migrated product carrying a former special price.
    capability: CAP-ACC-PRD-009
    expected: The documented workflow presents its local audience pending Commerce realization.
    provenance: documented
    source: 'react-console:acceptance/accounting/journeys/products/ACT-ACC-0128.json'
alternates:
  - from_step: 4
    condition: Finance schedules a January price change.
    path: End the prior row when the new row starts.
    outcome: The disjoint windows take effect in sequence.
    provenance: test
    source: >-
      services-accounting:modules/products/tests/integration/services/persistence/products.integration.spec.js#accepts
      two periods of one audience and currency that meet without overlapping
failures:
  - from_step: 4
    condition: Another kind already uses the proposed Code.
    path: Explain the identity collision.
    outcome: Staff choose a distinct Code.
    provenance: test
    source: 'react-console:acceptance/accounting/playwright/journeys/products/ACT-ACC-0108.spec.ts#ACT-ACC-0108'
rules_in_play:
  - BR-CAP-ACC-PRD-008-01
  - BR-CAP-ACC-PRD-008-02
  - BR-CAP-ACC-PRD-008-03
  - BR-CAP-ACC-PRD-008-05
  - BR-CAP-ACC-PRD-008-06
  - BR-CAP-ACC-PRD-008-07
  - BR-CAP-ACC-PRD-008-10
  - BR-CAP-ACC-PRD-009-01
  - BR-CAP-ACC-PRD-002-03
assertions:
  - id: AS-JNY-ACC-PRD-003-01
    statement: Donation retrieval contains no stored prices and retains giver pricing.
    provenance: test
    source: 'react-console:acceptance/accounting/playwright/journeys/products/ACT-ACC-0136.spec.ts#ACT-ACC-0136'
  - id: AS-JNY-ACC-PRD-003-02
    statement: Rejected creation attempts leave no catalogue product.
    provenance: test
    source: 'react-console:acceptance/accounting/playwright/journeys/products/ACT-ACC-0108.spec.ts#ACT-ACC-0108'
e2e_policy: optional
e2e_reason: 'Most pricing refusals have backend proofs, with selected console checks adding useful coverage.'
evidence:
  - 'react-console:acceptance/accounting/journeys/products/ACT-ACC-0108.json'
  - 'react-console:acceptance/accounting/journeys/products/ACT-ACC-0128.json'
  - 'react-console:acceptance/accounting/playwright/journeys/products/ACT-ACC-0100.spec.ts'
  - 'react-console:acceptance/accounting/playwright/journeys/products/ACT-ACC-0108.spec.ts'
  - 'react-console:acceptance/accounting/playwright/journeys/products/ACT-ACC-0136.spec.ts'
  - 'services-accounting:modules/products/services/rules/product-rules.ts'
  - 'services-accounting:modules/products/tests/integration/services/persistence/products.integration.spec.js'
proved_by: []
---

# Finance configures valid donation and audience pricing

## Story

Finance creates a donation and a fixed-price offer through their appropriate paths. Invalid grid requests demonstrate refusal rather than silently leaving unusable choices. Staff also inspect migrated pricing that still needs Commerce realization. The journey connects catalogue configuration with the pricing boundaries that later purchases depend on.
