---
id: ATS-ACC-REC-006
scope: CAP-ACC-REC-006
product_area: accounting
module: reconciliation
revision: 3
status: proposed
approved_by: null
approved_at: null
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
scenarios:
  - id: ATS-ACC-REC-006-01
    title: Outstanding-state precedence
    level: unit
    proves:
      - BR-CAP-ACC-REC-006-01
    preconditions: 'Items vary by resolution, holdings, eligibility and exception status.'
    steps: Calculate their requested-day states.
    expected: The earliest applicable precedence branch determines each result.
    negative: false
    data_needs: No additional fixture beyond the case setup.
    bound_to:
      - >-
        services-accounting:modules/reconciliation/tests/unit/rules/outstanding-state.spec.js#is resolved when
        the item has a resolution, even with a finalized claim
      - >-
        services-accounting:modules/reconciliation/tests/unit/rules/outstanding-state.spec.js#is settled when
        its active claim is finalized, even long overdue
      - >-
        services-accounting:modules/reconciliation/tests/unit/rules/outstanding-state.spec.js#is in an open
        reconciliation when its active claim is open, even long overdue
      - >-
        services-accounting:modules/reconciliation/tests/unit/rules/outstanding-state.spec.js#is not yet
        eligible with no eligible date
      - >-
        services-accounting:modules/reconciliation/tests/unit/rules/outstanding-state.spec.js#is held with no
        expected settlement date, however late
      - >-
        services-accounting:modules/reconciliation/tests/unit/rules/outstanding-state.spec.js#is under
        investigation with an open exception
      - >-
        services-accounting:modules/reconciliation/tests/unit/rules/outstanding-state.spec.js#is accepted with
        an accepted exception
      - TST-ACC-REC-088
    provenance: test
    source: >-
      services-accounting:modules/reconciliation/tests/unit/rules/outstanding-state.spec.js#is resolved when
      the item has a resolution, even with a finalized claim
    category: rule
  - id: ATS-ACC-REC-006-02
    title: Grace and calendar boundaries
    level: unit
    proves:
      - BR-CAP-ACC-REC-006-02
      - BR-CAP-ACC-REC-006-03
    preconditions: A two-business-day grace and an override are available.
    steps: 'Evaluate expected-day, weekend, holiday and final-grace boundaries.'
    expected: 'Transit and late persist through their inclusive end days, followed by the appropriate overdue state.'
    negative: false
    data_needs: No additional fixture beyond the case setup.
    bound_to:
      - >-
        services-accounting:modules/reconciliation/tests/unit/rules/outstanding-state.spec.js#is late the day
        after its expected date, over the weekend
      - >-
        services-accounting:modules/reconciliation/tests/unit/rules/outstanding-state.spec.js#is late on the
        last day of the grace
      - >-
        services-accounting:modules/reconciliation/tests/unit/rules/outstanding-state.spec.js#is overdue the
        day after the grace ends
      - >-
        services-accounting:modules/reconciliation/tests/unit/rules/outstanding-state.spec.js#is still late on
        the Tuesday when the grace runs over Columbus Day
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/settlement-items.queries.integration.spec.js#names
        the grace of the merchant account’s override and the payment a capture came from
      - TST-ACC-REC-088
      - TST-ACC-REC-072
    provenance: test
    source: >-
      services-accounting:modules/reconciliation/tests/unit/rules/outstanding-state.spec.js#is late the day
      after its expected date, over the weekend
    category: boundary
  - id: ATS-ACC-REC-006-03
    title: Outstanding list filters and refusals
    level: api
    proves:
      - BR-CAP-ACC-REC-006-04
      - BR-CAP-ACC-REC-006-05
    preconditions: 'Items span states, units and operational batches.'
    steps: 'Exercise list filters and cursors, then send unsupported state, cursor and date values.'
    expected: Valid pages retain chronological status-bearing records; invalid queries fail.
    negative: true
    data_needs: Provide outstanding fixture for this case.
    bound_to:
      - >-
        services-accounting:modules/reconciliation/tests/e2e/outstanding.e2e.spec.js#answers 200 with alpha’s
        items oldest first, each with its derived state at asOf
      - >-
        services-accounting:modules/reconciliation/tests/e2e/outstanding.e2e.spec.js#answers the calendar days
        each item has been outstanding since its local occurrence date
      - >-
        services-accounting:modules/reconciliation/tests/e2e/outstanding.e2e.spec.js#answers the claiming
        batch of a claimed item
      - >-
        services-accounting:modules/reconciliation/tests/e2e/outstanding.e2e.spec.js#filters by the states
        named, comma-separated
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/settlement-items.queries.integration.spec.js#answers
        an operational batch’s items
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/settlement-items.queries.integration.spec.js#answers
        the items whose customer label contains the search, whatever its case
      - >-
        services-accounting:modules/reconciliation/tests/e2e/outstanding.e2e.spec.js#refuses a state outside
        the vocabulary with 400
      - >-
        services-accounting:modules/reconciliation/tests/e2e/outstanding.e2e.spec.js#refuses a cursor it did
        not answer with 400
      - >-
        services-accounting:modules/reconciliation/tests/e2e/outstanding.e2e.spec.js#refuses an asOf that is
        not YYYY-MM-DD with 400
      - TST-ACC-REC-024
      - TST-ACC-REC-072
    provenance: test
    source: >-
      services-accounting:modules/reconciliation/tests/e2e/outstanding.e2e.spec.js#answers 200 with alpha’s
      items oldest first, each with its derived state at asOf
    category: validation
  - id: ATS-ACC-REC-006-04
    title: State summaries respect processor selection
    level: api
    proves:
      - BR-CAP-ACC-REC-006-06
    preconditions: Settlement records use two processors.
    steps: Read a unit summary and repeat for one processor.
    expected: 'Counts and signed amounts group by state, processor and currency within the selection.'
    negative: false
    data_needs: No additional fixture beyond the case setup.
    bound_to:
      - >-
        services-accounting:modules/reconciliation/tests/e2e/outstanding.e2e.spec.js#answers 200 with alpha’s
        counts and totals by state, processor and currency
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/settlement-items.queries.integration.spec.js#counts
        and totals the items by state, processor and currency at the date
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/settlement-items.queries.integration.spec.js#summarizes
        a processor’s items alone
      - TST-ACC-REC-024
      - TST-ACC-REC-072
    provenance: test
    source: >-
      services-accounting:modules/reconciliation/tests/e2e/outstanding.e2e.spec.js#answers 200 with alpha’s
      counts and totals by state, processor and currency
    category: rule
  - id: ATS-ACC-REC-006-05
    title: Payout suggestions before eligibility
    level: api
    proves:
      - BR-CAP-ACC-REC-006-07
    preconditions: A pending item and a free payout share the expected arrival day.
    steps: Read the settlement list and item detail.
    expected: The free compatible payout is offered despite the item not yet being eligible.
    negative: false
    data_needs: No additional fixture beyond the case setup.
    bound_to:
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/settlement-items.queries.integration.spec.js#offers
        the free payout dated on its expected date, in the list
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/settlement-items.queries.integration.spec.js#offers
        it in the detail too
      - >-
        services-accounting:modules/reconciliation/tests/e2e/outstanding.e2e.spec.js#answers 200 with the
        item, its state facts and the payout that may carry it
      - TST-ACC-REC-072
      - TST-ACC-REC-024
    provenance: test
    source: >-
      services-accounting:modules/reconciliation/tests/integration/services/persistence/settlement-items.queries.integration.spec.js#offers
      the free payout dated on its expected date, in the list
    category: edge
  - id: ATS-ACC-REC-006-06
    title: SQL and pure state agree by day
    level: api
    proves:
      - BR-CAP-ACC-REC-006-08
    preconditions: A post-cut-off capture spans the Columbus Day calendar.
    steps: Compare list results and pure status at each boundary day.
    expected: The two calculations give the same literal state throughout the boundaries.
    negative: false
    data_needs: Provide calendar fixture for this case.
    bound_to:
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/settlement-items.queries.integration.spec.js#answers
        the same literal state for every item on Friday 2026-10-09, the expected date, by the SQL and by the
        rule
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/settlement-items.queries.integration.spec.js#answers
        the same literal state for every item on Monday 2026-10-12, Columbus Day, by the SQL and by the rule
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/settlement-items.queries.integration.spec.js#answers
        the same literal state for every item on Thursday 2026-10-15, past the grace, by the SQL and by the
        rule
      - TST-ACC-REC-072
    provenance: test
    source: >-
      services-accounting:modules/reconciliation/tests/integration/services/persistence/settlement-items.queries.integration.spec.js#answers
      the same literal state for every item on Friday 2026-10-09, the expected date, by the SQL and by the
      rule
    category: invariant
  - id: ATS-ACC-REC-006-07
    title: Read permission and isolation
    level: api
    proves:
      - BR-CAP-ACC-REC-006-09
    preconditions: Two workspaces include a caller without settlement read.
    steps: 'List, summarize and inspect items as permitted and unpermitted callers.'
    expected: Missing grants are forbidden and another workspace’s items remain absent.
    negative: true
    data_needs: Provide records in each of the two isolated workspaces.
    bound_to:
      - >-
        services-accounting:modules/reconciliation/tests/e2e/outstanding.e2e.spec.js#refuses the list without
        accounting.settlement-items.read with 403
      - >-
        services-accounting:modules/reconciliation/tests/e2e/outstanding.e2e.spec.js#refuses the summary
        without accounting.settlement-items.read with 403
      - >-
        services-accounting:modules/reconciliation/tests/e2e/outstanding.e2e.spec.js#refuses tenant A’s item
        in tenant B with 404
      - >-
        services-accounting:modules/reconciliation/tests/e2e/outstanding.e2e.spec.js#lists none of tenant A’s
        items in tenant B
      - TST-ACC-REC-024
    provenance: test
    source: >-
      services-accounting:modules/reconciliation/tests/e2e/outstanding.e2e.spec.js#refuses the list without
      accounting.settlement-items.read with 403
    category: permission
  - id: ATS-ACC-REC-006-08
    title: Calendar-driven aging journey
    level: browser
    proves:
      - AS-JNY-ACC-REC-004-01
    preconditions: A capture and pending electronic check are recorded.
    steps: Inspect Outstanding Payments over successive calendar days.
    expected: 'Eligibility, expected arrival and grace produce the corresponding aging states.'
    negative: false
    data_needs: Use the isolated reconciliation fixture unit.
    bound_to:
      - >-
        react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0602.spec.ts#ACT-ACC-0602
      - TST-ACC-REC-011
    provenance: test
    source: >-
      react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0602.spec.ts#ACT-ACC-0602
    category: transition
  - id: ATS-ACC-REC-006-09
    title: Splitting and write-off change outstanding positions
    category: interaction
    level: api
    proves:
      - BR-CAP-ACC-REC-006-01
      - BR-CAP-ACC-REC-007-01
      - BR-CAP-ACC-REC-007-06
      - BR-CAP-ACC-REC-007-07
      - AS-JNY-ACC-REC-004-03
    interacts_with:
      - CAP-ACC-REC-007
    relies_on:
      - ATS-ACC-REC-006-01
      - ATS-ACC-REC-007-08
    preconditions: Use one isolated workspace with the financial records and caller roles required by the relied-on cases.
    steps:
      - do: 'Inspect a free overdue item, split it and write off the unpaid part before rereading positions.'
        expect: >-
          The parent is resolved and its parts retain the original total; the written-off part stops being
          outstanding.
        provenance: proposed
        source:
          - >-
            specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-006-see-what-money-is-in-transit-late-or-missing.md
          - >-
            specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-007-split-or-write-off-money-that-will-never-arrive-as-recorded.md
    expected: >-
      The parent is resolved and its parts retain the original total; the written-off part stops being
      outstanding.
    negative: false
    data_needs: >-
      Local merchant and bank accounts, an open operational batch and distinct preparation and approval
      callers.
    bound_to: []
    provenance: proposed
    source:
      - >-
        specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-006-see-what-money-is-in-transit-late-or-missing.md
      - >-
        specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-007-split-or-write-off-money-that-will-never-arrive-as-recorded.md
  - id: ATS-ACC-REC-006-10
    title: Detection changes overdue standing
    category: interaction
    level: api
    proves:
      - BR-CAP-ACC-REC-006-01
      - BR-CAP-ACC-REC-017-02
      - BR-CAP-ACC-REC-017-03
      - BR-CAP-ACC-REC-017-10
    interacts_with:
      - CAP-ACC-REC-017
    relies_on:
      - ATS-ACC-REC-006-01
      - ATS-ACC-REC-017-02
    preconditions: Use one isolated workspace with the financial records and caller roles required by the relied-on cases.
    steps:
      - do: Inspect an overdue free item before and after a detection pass.
        expect: The same money moves into investigation without a duplicate financial effect.
        provenance: proposed
        source:
          - >-
            specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-006-see-what-money-is-in-transit-late-or-missing.md
          - >-
            specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-017-catch-overdue-money-stale-deposits-and-drifting-totals-every.md
    expected: The same money moves into investigation without a duplicate financial effect.
    negative: false
    data_needs: >-
      Local merchant and bank accounts, an open operational batch and distinct preparation and approval
      callers.
    bound_to: []
    provenance: proposed
    source:
      - >-
        specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-006-see-what-money-is-in-transit-late-or-missing.md
      - >-
        specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-017-catch-overdue-money-stale-deposits-and-drifting-totals-every.md
  - id: ATS-ACC-REC-006-11
    title: Acceptance changes standing and assessment
    category: interaction
    level: api
    proves:
      - BR-CAP-ACC-REC-006-01
      - BR-CAP-ACC-REC-018-04
    interacts_with:
      - CAP-ACC-REC-018
    relies_on:
      - ATS-ACC-REC-006-01
      - ATS-ACC-REC-018-03
    preconditions: Use one isolated workspace with the financial records and caller roles required by the relied-on cases.
    steps:
      - do: 'Inspect overdue money and assessment, accept its blocker independently and inspect both again.'
        expect: Accepted money loses its overdue blocker while remaining represented in clearing positions.
        provenance: proposed
        source:
          - >-
            specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-006-see-what-money-is-in-transit-late-or-missing.md
          - >-
            specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-018-tell-month-end-close-what-stops-a-period-from-closing.md
    expected: Accepted money loses its overdue blocker while remaining represented in clearing positions.
    negative: false
    data_needs: >-
      Local merchant and bank accounts, an open operational batch and distinct preparation and approval
      callers.
    bound_to: []
    provenance: proposed
    source:
      - >-
        specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-006-see-what-money-is-in-transit-late-or-missing.md
      - >-
        specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-018-tell-month-end-close-what-stops-a-period-from-closing.md
evidence:
  - >-
    Bindings identify existing tests at the pinned revisions; proposed cases remain unbound and describe the
    proof still needed.
coverage:
  rule: covered
  transition: covered
  validation: covered
  permission: covered
  edge: covered
  boundary: covered
  invariant: covered
  interaction: covered
  failure: 'gap: FND-ACC-REC-051'
  concurrency: 'gap: FND-ACC-REC-051'
coverage_notes:
  design_completeness: >-
    Covered categories count specified cases, including proposed cases. Exhaustive state-transition,
    permission-key and domain-invariant traceability remains a separate proof gap.
---

# Distinguish money in transit from missing settlement: Capability Test Specification

## Coverage

| Rule | Proved by |
|---|---|
| `BR-CAP-ACC-REC-006-01` | `ATS-ACC-REC-006-01` |
| `BR-CAP-ACC-REC-006-02` | `ATS-ACC-REC-006-02` |
| `BR-CAP-ACC-REC-006-03` | `ATS-ACC-REC-006-02` |
| `BR-CAP-ACC-REC-006-04` | `ATS-ACC-REC-006-03` |
| `BR-CAP-ACC-REC-006-05` | `ATS-ACC-REC-006-03` |
| `BR-CAP-ACC-REC-006-06` | `ATS-ACC-REC-006-04` |
| `BR-CAP-ACC-REC-006-07` | `ATS-ACC-REC-006-05` |
| `BR-CAP-ACC-REC-006-08` | `ATS-ACC-REC-006-06` |
| `BR-CAP-ACC-REC-006-09` | `ATS-ACC-REC-006-07` |

## Interactions With Related Capabilities

Splitting and write-off change outstanding positions. Detection changes overdue standing. Acceptance changes standing and assessment. Proposed interaction cases require executable proof.
