Skip to content

CAP-ACC-REC-006Distinguish money in transit from missing settlement

Markdown

CAP-ACC-REC-006

Distinguish money in transit from missing settlement

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationObserved

KindCapabilityProduct areaAccountingModuleReconciliationRevision2

Read atservices-accounting f47cb263react-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

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.
Surfaces
consoleapi
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)

Controls

22 controls apply, from the corpus control catalogue.

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

Permissions

KeyChecked atScope
accounting.settlement-items.readapitenant
accounting.application.accessconsoletenant

Business Rules

10 rules, 9 to be proved before approval. A rule's product intent is derived from its origin: 10 confirmed by a product decision, the rest inheriting this capability's confirmed.

IdRuleKindEnforced atProvenance
01must prove
Confirmed
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.
✓ A long-overdue capture claimed by a finalized reconciliation reads settled.✗ A capture claimed by a draft never reads overdue.
origin: services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (§4: the architecture §6 invariants hold; architecture §12.3)
calculationservice, databasetest
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
02must prove
Confirmed
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.
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
calculationservicetest
03must prove
Confirmed
Grace uses the merchant override, then processor default, then a two-business-day fallback.
calculationservicetest
04must prove
Confirmed
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.
origin: services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (plan approved 2026-10-22 10:40 ET; §2 scope)
policyapi, servicetest
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
05must prove
Confirmed
Unsupported states, malformed cursors and dates outside the accepted year-month-day shape are rejected.
validationapiobserved
06must prove
Confirmed
Settlement summaries group requested-day counts and signed totals by state, processor and currency, respecting unit, merchant and processor filters.
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
calculationservicetest
07must prove
Confirmed
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.
calculationservicetest
08must prove
Confirmed
Database list status agrees with the pure status calculation at expected-day, weekend, holiday and grace boundaries.
invariantservice, databasetest
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
09must prove
Confirmed
Settlement read permission controls access, and records in another workspace are absent.
permissionapitest
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
10
Confirmed
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.
policyconsoleobserved

Scenarios

IdGivenWhenThenProvenance
01The five-hundred-dollar post-cut-off gift spans the holiday and two-day grace.Review Monday, Tuesday and Friday positions.It progresses from not eligible to transit to overdue.test
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
02The explained items are held by a finalized reconciliation.Inspect outstanding money.Those items are settled and only the separate gift remains outstanding.test
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

IdGivenWhenThenProvenance
03An item is overdue today but had reached only its expected day earlier.Read its earlier-day state.The historical position is in transit.test
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

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.