---
id: CAP-ACC-REC-006
title: Distinguish money in transit from missing settlement
feature: FEAT-ACC-REC-04
product_area: accounting
module: reconciliation
revision: 2
status: draft
product_intent: confirmed
implementation_evidence: observed
supersedes:
  - react-console acceptance inventory CAP-ACC-REC-008
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
intent_sources:
  - >-
    services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (§1: every money movement not yet in a
    deposit is visible, aged by the calendar)
  - >-
    services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (§4: the architecture §6 invariants hold;
    INV-17; architecture §12.1 hybrid model)
purpose: Staff need a current view of expected money for the day they are reviewing.
outcomes:
  - 'Staff distinguish settled, traveling and missing money at their selected day.'
  - Requested-day calculations avoid stale aging labels.
  - Compatible payout candidates help investigate missing arrival.
concepts:
  - CON-ACC-REC-002
actors:
  - ACT-ACC-017
  - ACT-ACC-018
  - ACT-ACC-007
  - ACT-ACC-019
surfaces:
  - console
  - api
preconditions: []
postconditions: []
permissions:
  - key: accounting.settlement-items.read
    where_checked: api
    scope: tenant
  - key: accounting.application.access
    where_checked: console
    scope: tenant
rules:
  - id: BR-CAP-ACC-REC-006-01
    proved_by: [ATS-ACC-REC-006-01, ATS-ACC-REC-006-09, ATS-ACC-REC-006-10, ATS-ACC-REC-006-11, ATS-ACC-REC-007-09, TST-ACC-REC-088]
    statement: >-
      Outstanding status is recalculated for the requested day using resolution, finalized claim, open claim,
      eligibility, hold and arrival timing in that order, then acceptance or investigation after grace.
    kind: calculation
    enforced_at:
      - service
      - database
    must_prove: true
    provenance: test
    source: >-
      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 resolved when
      the item has a resolution, even with a finalized claim;
      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
    origin: >-
      services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (§4: the architecture §6 invariants hold;
      architecture §12.3)
    examples:
      positive: A long-overdue capture claimed by a finalized reconciliation reads settled.
      negative: A capture claimed by a draft never reads overdue.
  - id: BR-CAP-ACC-REC-006-02
    proved_by: [ATS-ACC-REC-005-12, ATS-ACC-REC-006-02, TST-ACC-REC-072, TST-ACC-REC-088]
    statement: >-
      Unclaimed money stays in transit through its expected day, becomes late through its business-day grace
      and overdue afterward; a reserve without an expected release remains held.
    kind: calculation
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      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 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 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
    origin: >-
      services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (plan approved 2026-10-22 10:40 ET; §2
      scope); §1: not yet eligible, in transit, late, overdue
  - id: BR-CAP-ACC-REC-006-03
    proved_by: [ATS-ACC-REC-005-12, ATS-ACC-REC-006-02, TST-ACC-REC-072, TST-ACC-REC-088]
    statement: 'Grace uses the merchant override, then processor default, then a two-business-day fallback.'
    kind: calculation
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      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;
      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
    origin: none
  - id: BR-CAP-ACC-REC-006-04
    proved_by: [ATS-ACC-REC-006-03, TST-ACC-REC-024, TST-ACC-REC-072]
    statement: >-
      Cursor-paged settlement lists order oldest first and include requested-day status, age since occurrence
      and holder, with filters for state, unit, merchant, processor, kind, source batch, occurrence range and
      customer search.
    kind: policy
    enforced_at:
      - api
      - service
    must_prove: true
    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;
      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
    origin: >-
      services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (plan approved 2026-10-22 10:40 ET; §2
      scope)
  - id: BR-CAP-ACC-REC-006-05
    proved_by: [ATS-ACC-REC-006-03, TST-ACC-REC-024, TST-ACC-REC-072]
    statement: 'Unsupported states, malformed cursors and dates outside the accepted year-month-day shape are rejected.'
    kind: validation
    enforced_at:
      - api
    must_prove: true
    provenance: observed
    source: 'services-accounting:modules/reconciliation/aws/api/outstanding.schemas.ts:listSettlementItemsQuerySchema'
    origin: none
  - id: BR-CAP-ACC-REC-006-06
    proved_by: [ATS-ACC-REC-006-04, TST-ACC-REC-024, TST-ACC-REC-072]
    statement: >-
      Settlement summaries group requested-day counts and signed totals by state, processor and currency,
      respecting unit, merchant and processor filters.
    kind: calculation
    enforced_at:
      - service
    must_prove: true
    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;
      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
    origin: >-
      services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (plan approved 2026-10-22 10:40 ET; §2
      scope); brief: what reached settlement, what is in transit, what is missing
  - id: BR-CAP-ACC-REC-006-07
    proved_by: [ATS-ACC-REC-006-05, TST-ACC-REC-024, TST-ACC-REC-072]
    statement: >-
      An item awaiting settlement can show up to five free live payouts of its merchant and currency from one
      business day before expected arrival, even before eligibility.
    kind: calculation
    enforced_at:
      - service
    must_prove: true
    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;
      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
    origin: none
  - id: BR-CAP-ACC-REC-006-08
    proved_by: [ATS-ACC-REC-006-06, TST-ACC-REC-072]
    statement: >-
      Database list status agrees with the pure status calculation at expected-day, weekend, holiday and grace
      boundaries.
    kind: invariant
    enforced_at:
      - service
      - database
    must_prove: true
    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 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 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 Thursday 2026-10-15, past the grace, by the SQL and by the rule
    origin: none
  - id: BR-CAP-ACC-REC-006-09
    proved_by: [ATS-ACC-REC-006-07, TST-ACC-REC-024]
    statement: 'Settlement read permission controls access, and records in another workspace are absent.'
    kind: permission
    enforced_at:
      - api
    must_prove: true
    provenance: test
    source: >-
      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
    origin: 'services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D5'
  - id: BR-CAP-ACC-REC-006-10
    proved_by: []
    statement: >-
      Outstanding Payments presents the selected unit’s items outside finalized reconciliations with transit
      and overdue totals, and enables overdue-problem acceptance according to accept permission.
    kind: policy
    enforced_at:
      - console
    must_prove: false
    provenance: observed
    source: 'react-console:components/accounting/reconciliation/outstanding-screen.tsx:OutstandingScreen'
    origin: 'services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D6 (architecture §3.4 U12)'
scenarios:
  - id: SC-CAP-ACC-REC-006-01
    given: The five-hundred-dollar post-cut-off gift spans the holiday and two-day grace.
    when: 'Review Monday, Tuesday and Friday positions.'
    then: It progresses from not eligible to transit to overdue.
    provenance: test
    source: >-
      services-accounting:modules/reconciliation/tests/e2e/reconciliation-scenario.e2e.spec.js#step 9: has the
      gift not yet eligible on 2026-10-12 (Columbus Day) and in transit on 2026-10-13
  - id: SC-CAP-ACC-REC-006-02
    given: The explained items are held by a finalized reconciliation.
    when: Inspect outstanding money.
    then: Those items are settled and only the separate gift remains outstanding.
    provenance: test
    source: >-
      services-accounting:modules/reconciliation/tests/e2e/reconciliation-scenario.e2e.spec.js#step 9: has
      every claimed item settled, the gift the only item outstanding
edge_cases:
  - id: SC-CAP-ACC-REC-006-03
    given: An item is overdue today but had reached only its expected day earlier.
    when: Read its earlier-day state.
    then: The historical position is in transit.
    provenance: test
    source: >-
      services-accounting:modules/reconciliation/tests/e2e/outstanding.e2e.spec.js#derives the state at the
      asOf given: the overdue item was in transit on its expected date
constraints: []
depends_on:
  - CAP-ACC-REC-005
related:
  - CAP-ACC-REC-007
  - CAP-ACC-REC-017
  - CAP-ACC-REC-018
journeys:
  - JNY-ACC-REC-004
open_questions: []
evidence:
  - >-
    Examined supporting service material: outstanding.routes.ts (listSettlementItems,
    summarizeSettlementItems, getSettlementItem), outstanding.schemas.ts, outstanding-api-mapper.ts,
    services/persistence/settlement-items.ts (reads), rules/outstanding-state.ts;
    db/settlement-items.table.ts; tests e2e/outstanding.e2e.spec.js, integration
    settlement-items.queries.integration.spec.js, unit/rules/outstanding-state.spec.js.
  - >-
    Examined supporting console material: components/accounting/reconciliation/outstanding-screen.tsx,
    lib/accounting/reconciliation/adapter.ts.
controls: [TC-IAM-001, TC-IAM-002, TC-IAM-004, TC-IAM-005, TC-IAM-006, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-006, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-DAT-001, TC-DAT-002, TC-DAT-003, TC-LOG-004, TC-PI-001, TC-PI-002, TC-PI-005, TC-PRV-001, TC-PRV-002]
exercised_by: [FAS-ACC-REC-04-01, FAS-ACC-REC-04-02, FAS-ACC-REC-04-03, FAS-ACC-REC-04-04, FAS-ACC-REC-04-05]
suites: [TST-ACC-REC-024, TST-ACC-REC-072, TST-ACC-REC-088]
---

# Distinguish money in transit from missing settlement

## Purpose

Staff need a current view of expected money for the day they are reviewing.

## How It Works

A bookkeeper chooses the relevant unit and day, then inspects the outstanding ledger. Rhythm combines dates, active holdings and resolutions into the displayed state. Candidate payouts help the bookkeeper investigate where expected money might have gone. Historical day selection can differ from today’s state without modifying the record. Missing permission or invalid selection stops the read.

## Relationships

Effect recording supplies items, exception detection follows overdue states and readiness uses the same financial position.
