---
id: ATS-ACC-REC-003
scope: CAP-ACC-REC-003
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-003-01
    title: Verification requires authority and evidence
    level: api
    proves:
      - BR-CAP-ACC-REC-003-01
      - BR-CAP-ACC-REC-003-09
    preconditions: A payout is ready for verification.
    steps: 'Omit evidence, use a caller without verify, then repeat a complete keyed verification.'
    expected: Missing evidence and permission fail; a valid repeated request records only one verification.
    negative: true
    data_needs: Provide statement asset id for this case.
    bound_to:
      - >-
        services-accounting:modules/reconciliation/tests/e2e/payouts.e2e.spec.js#refuses a verification
        without its evidence with 400 naming the field
      - >-
        services-accounting:modules/reconciliation/tests/e2e/payouts.e2e.spec.js#refuses a principal without
        accounting.payouts.verify with 403
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/payouts.integration.spec.js#answers
        the stored payout for the same key and request
      - TST-ACC-REC-025
      - TST-ACC-REC-057
    provenance: test
    source: >-
      services-accounting:modules/reconciliation/tests/e2e/payouts.e2e.spec.js#refuses a verification without
      its evidence with 400 naming the field
    category: permission
  - id: ATS-ACC-REC-003-02
    title: Bank agreement controls the accounting day
    level: api
    proves:
      - BR-CAP-ACC-REC-003-02
      - BR-CAP-ACC-REC-003-03
      - BR-CAP-ACC-REC-003-04
    preconditions: The reported payout day precedes its bank-posted day.
    steps: Verify agreement and name the same statement again.
    expected: 'Verification records person and time, accounting uses the posted day and evidence remains singular.'
    negative: false
    data_needs: Provide two-period calendar for this case.
    bound_to:
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/payouts.integration.spec.js#records
        the verification, the bank’s posted date becoming the accounting date, and keeps the statement as
        evidence
      - >-
        services-accounting:modules/reconciliation/tests/integration/db/payouts.table.integration.spec.js#refuses
        a verified payout without who verified it and when
      - >-
        services-accounting:modules/reconciliation/tests/unit/rules/payout-rules.spec.js#is the bank posted
        date once the bank verified the payout
      - >-
        services-accounting:modules/reconciliation/tests/unit/rules/payout-rules.spec.js#is the reported
        deposit date while the bank evidence is a mismatch
      - >-
        services-accounting:modules/reconciliation/tests/unit/rules/payout-rules.spec.js#is the processor
        funding date when nothing was reported
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/payouts.integration.spec.js#keeps
        one evidence file when the statement is named again
      - TST-ACC-REC-057
      - TST-ACC-REC-033
      - TST-ACC-REC-090
    provenance: test
    source: >-
      services-accounting:modules/reconciliation/tests/integration/services/persistence/payouts.integration.spec.js#records
      the verification, the bank’s posted date becoming the accounting date, and keeps the statement as
      evidence
    category: rule
  - id: ATS-ACC-REC-003-03
    title: Mismatch lifecycle and outcome consistency
    level: api
    proves:
      - BR-CAP-ACC-REC-003-05
      - BR-CAP-ACC-REC-003-06
      - BR-CAP-ACC-REC-003-07
    preconditions: The payout starts bank-unverified.
    steps: 'Supply a mismatch amount, repeat mismatch, contradict the outcome and finally verify agreement.'
    expected: 'One informative warning opens, contradictory money fails and later agreement closes it.'
    negative: false
    data_needs: No additional fixture beyond the case setup.
    bound_to:
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/payouts.integration.spec.js#keeps
        the reported date as the accounting date of a mismatch and raises a bank-mismatch exception
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/payouts.integration.spec.js#says
        what the bank showed and by how much it differs, in the exception’s title and description
        (DEF-ACT-0593)
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/payouts.integration.spec.js#raises
        no second exception for a second mismatch while the first is open
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/payouts.integration.spec.js#refuses
        a bank amount that contradicts the outcome (DEF-ACT-0593)
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/payouts.integration.spec.js#resolves
        the open mismatch when the bank’s evidence later verifies the payout
      - TST-ACC-REC-057
    provenance: test
    source: >-
      services-accounting:modules/reconciliation/tests/integration/services/persistence/payouts.integration.spec.js#keeps
      the reported date as the accounting date of a mismatch and raises a bank-mismatch exception
    category: transition
  - id: ATS-ACC-REC-003-04
    title: Finalized payout cannot be reverified
    level: api
    proves:
      - BR-CAP-ACC-REC-003-08
    preconditions: A finalized reconciliation owns the payout.
    steps: Submit another bank verification.
    expected: The service refuses verification of the reconciled record.
    negative: true
    data_needs: Provide finalized reconciliation for this case.
    bound_to:
      - >-
        services-accounting:modules/reconciliation/tests/integration/services/persistence/payouts.integration.spec.js#refuses
        a payout in a finalized reconciliation with payout-reconciled
      - TST-ACC-REC-057
    provenance: test
    source: >-
      services-accounting:modules/reconciliation/tests/integration/services/persistence/payouts.integration.spec.js#refuses
      a payout in a finalized reconciliation with payout-reconciled
    category: invariant
  - id: ATS-ACC-REC-003-05
    title: Live rejection of incomplete console verification
    level: browser
    proves:
      - BR-CAP-ACC-REC-003-10
    preconditions: An editable payout and verify permission are available.
    steps: Invoke the console verification command against the live route.
    expected: Missing required bank fields cause refusal and verification stays unset.
    negative: true
    data_needs: Provide statement asset; the live service for this case.
    bound_to: []
    provenance: proposed
    source: FND-ACC-REC-001
    category: failure
  - id: ATS-ACC-REC-003-06
    title: Verification across a period boundary
    level: api
    proves:
      - BR-CAP-ACC-REC-003-03
      - BR-CAP-ACC-REC-003-05
      - BR-CAP-ACC-REC-003-06
      - AS-JNY-ACC-REC-002-03
    preconditions: A payout is reported on the last day of a month.
    steps: 'Record mismatch, verify the correct bank line, finalize and attempt another change.'
    expected: 'The warning closes, accounting moves to the next month and finalization prevents further change.'
    negative: false
    data_needs: Use the isolated reconciliation fixture unit.
    bound_to: []
    provenance: proposed
    source: FND-ACC-REC-026
    category: interaction
  - id: ATS-ACC-REC-003-07
    title: Bank agreement concludes mismatch work
    category: interaction
    level: api
    proves:
      - BR-CAP-ACC-REC-003-05
      - BR-CAP-ACC-REC-003-06
      - BR-CAP-ACC-REC-003-07
      - BR-CAP-ACC-REC-015-07
    interacts_with:
      - CAP-ACC-REC-015
    relies_on:
      - ATS-ACC-REC-003-03
      - ATS-ACC-REC-015-06
    preconditions: Use one isolated workspace with the financial records and caller roles required by the relied-on cases.
    steps:
      - do: 'Report bank disagreement, inspect the warning and record agreement at the next version.'
        expect: The same warning closes and retains the earlier mismatch history.
        provenance: proposed
        source:
          - >-
            specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-003-prove-a-deposit-against-the-banks-own-record.md
          - >-
            specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-015-raise-work-and-resolve-reconciliation-problems.md
    expected: The same warning closes and retains the earlier mismatch history.
    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-003-prove-a-deposit-against-the-banks-own-record.md
      - >-
        specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-015-raise-work-and-resolve-reconciliation-problems.md
  - id: ATS-ACC-REC-003-08
    title: Bank day changes period assessment
    category: interaction
    level: api
    proves:
      - BR-CAP-ACC-REC-003-02
      - BR-CAP-ACC-REC-003-03
      - BR-CAP-ACC-REC-003-04
      - BR-CAP-ACC-REC-018-02
      - BR-CAP-ACC-REC-018-03
    interacts_with:
      - CAP-ACC-REC-018
    relies_on:
      - ATS-ACC-REC-003-02
      - ATS-ACC-REC-018-02
    preconditions: Use one isolated workspace with the financial records and caller roles required by the relied-on cases.
    steps:
      - do: Record agreement with a bank day in the following month and assess both months.
        expect: The payout appears in the bank month and no longer carries its payout finding in the earlier month.
        provenance: proposed
        source:
          - >-
            specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-003-prove-a-deposit-against-the-banks-own-record.md
          - >-
            specs/accounting/reconciliation/planning/capabilities/CAP-ACC-REC-018-tell-month-end-close-what-stops-a-period-from-closing.md
    expected: The payout appears in the bank month and no longer carries its payout finding in the earlier month.
    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-003-prove-a-deposit-against-the-banks-own-record.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
  permission: covered
  failure: covered
  invariant: covered
  interaction: covered
  validation: 'gap: FND-ACC-REC-048'
  edge: 'gap: FND-ACC-REC-048'
  boundary: 'gap: FND-ACC-REC-048'
  concurrency: 'gap: FND-ACC-REC-048'
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.
---

# Verify payouts using bank evidence: Capability Test Specification

## Coverage

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

## Interactions With Related Capabilities

Verification across a period boundary. Bank agreement concludes mismatch work. Bank day changes period assessment. Proposed interaction cases require executable proof.
