---
id: TST-ACC-PRD-026
title: Financial setup API lifecycle
kind: api-lifecycle
product_area: accounting
module: products
revision: 1
status: draft
product_intent: proposed
implementation_evidence: observed
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
repository: services-accounting
files:
  - modules/products/tests/e2e/product-accounting.e2e.spec.js
implements:
  - ATS-ACC-PRD-015-01
  - ATS-ACC-PRD-015-02
  - ATS-ACC-PRD-015-03
  - ATS-ACC-PRD-015-05
  - ATS-ACC-PRD-015-06
  - ATS-ACC-PRD-015-07
  - ATS-ACC-PRD-015-10
  - ATS-ACC-PRD-015-11
  - ATS-ACC-PRD-016-01
  - ATS-ACC-PRD-016-02
  - ATS-ACC-PRD-016-03
  - ATS-ACC-PRD-016-05
  - ATS-ACC-PRD-016-06
  - ATS-ACC-PRD-016-07
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 5
estimation_note: Planning estimate; no runtime measurement is claimed.
isolation: 'Suite-named local workspaces, isolated fixture records and explicit cleanup or rollback.'
evidence:
  - 'services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js'
assertion_bindings:
  - scenario: ATS-ACC-PRD-015-01
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#answers accounting: null
        on the product
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#answers 404 to a read of
        its setup
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js'
  - scenario: ATS-ACC-PRD-015-02
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#answers 400 to an
        Accounting Product without a revenue GL account
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#answers 400 to a
        Donation Product without a revenue GL account
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#accepts a Legacy Product
        without a revenue GL account
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js'
  - scenario: ATS-ACC-PRD-015-03
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#answers 400 to another
        unit’s revenue GL account
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js'
  - scenario: ATS-ACC-PRD-015-05
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#answers 200 at the next
        version, keeping the inactive account it already held
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js'
  - scenario: ATS-ACC-PRD-015-06
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#keeps the class it
        already names after the class is retired
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#answers 400 to newly
        choosing an inactive tax class
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js'
  - scenario: ATS-ACC-PRD-015-07
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#answers 400 to a
        replacement without the version read
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#answers 409 to a stale
        version
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js'
  - scenario: ATS-ACC-PRD-015-10
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#deletes it, leaving the
        product with accounting: null
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#answers 404 to deleting
        a setup that does not exist
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js'
  - scenario: ATS-ACC-PRD-015-11
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#answers 409 to deleting
        a GL account a setup still names
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#answers 409 to deleting
        a tax class a setup still names
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js'
  - scenario: ATS-ACC-PRD-016-01
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#answers 400 to deferral
        without a deferred revenue GL account
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js'
  - scenario: ATS-ACC-PRD-016-02
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#answers 400 to fixed
        dates that do not total 100
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js'
  - scenario: ATS-ACC-PRD-016-03
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#answers 400 to relative
        rules overlapping across the year end
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js'
  - scenario: ATS-ACC-PRD-016-05
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#answers 400 to fixed
        revenue splits above the product’s price
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js'
  - scenario: ATS-ACC-PRD-016-06
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#replaces the splits as a
        whole, keeping the id sent back
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js'
  - scenario: ATS-ACC-PRD-016-07
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js#answers 400 to an
        inter-entity entry naming the product’s own unit
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-accounting.e2e.spec.js'
coverage_note: Scenario references name existing assertion evidence; broader unexecuted variants remain findings.
---

# Financial setup API lifecycle

## Verification Boundary

Requests pass through the local enforcing Accounting dispatcher, request mapping and persistence to PostgreSQL. This is local API evidence rather than a deployed network run.

## What This Suite Proves

The enforcing API tests setup creation, versioned replacement, references, financial validation, dependency protection and setup removal.

## What It Does Not Prove

Local execution does not prove deployed infrastructure, downstream purchase behavior, real domain extension completion or atomic remote-template recovery.

## Real Dependencies and Test Doubles

The composed handler, permission evaluation and Accounting database are real. Local signing keys and Platform workspace registration stand in for external infrastructure.

## Must Not Be Doubled

Do not double PostgreSQL, row-level security, transaction boundaries, constraints or the persistence implementation when claiming these local guarantees.
