---
id: JNY-ACC-REC-003
title: Reverse and replace an incorrect approved explanation
feature: FEAT-ACC-REC-03
product_area: accounting
module: reconciliation
revision: 2
status: draft
product_intent: confirmed
implementation_evidence: observed
supersedes:
  - react-console acceptance journey ACT-ACC-0600
  - react-console acceptance journey ACT-ACC-0601
  - react-console acceptance journey ACT-ACC-0611
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
actor: ACT-ACC-018
goal: >-
  Correct finalized financial work while preserving the original explanation, mirrors and replacement
  approval.
capabilities:
  - CAP-ACC-REC-008
  - CAP-ACC-REC-011
  - CAP-ACC-REC-012
  - CAP-ACC-REC-013
  - CAP-ACC-REC-014
  - CAP-ACC-REC-018
screens:
  - '/console/{tenantId}/accounting/reconciliation/payouts/{id}'
steps:
  - 'n': 1
    surface: finalizeReconciliationBatch
    action: Begin with a finalized explanation containing an incorrect fee.
    capability: CAP-ACC-REC-011
    expected: The approved record is protected against ordinary edits.
    provenance: test
    source: >-
      react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0600.spec.ts#ACT-ACC-0600
  - 'n': 2
    surface: voidReconciliationBatch
    action: 'Attempt note changes, draft void and claim release.'
    capability: CAP-ACC-REC-012
    expected: The protected state rejects these correction attempts.
    provenance: test
    source: >-
      react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0600.spec.ts#ACT-ACC-0600
  - 'n': 3
    surface: reverseReconciliationBatch
    action: Try reversal as a preparer without its approval grant.
    capability: CAP-ACC-REC-013
    expected: Missing reversal permission prevents the command.
    provenance: test
    source: >-
      react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0600.spec.ts#ACT-ACC-0600
  - 'n': 4
    surface: reverseReconciliationBatch
    action: Have the approver reverse with a recorded reason in an open period.
    capability: CAP-ACC-REC-013
    expected: Mirror requests are created and original payout and claims are released.
    provenance: test
    source: >-
      react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0600.spec.ts#ACT-ACC-0600
  - 'n': 5
    surface: createReconciliationBatch
    action: Prepare the corrected deposit explanation and obtain finalize approval.
    capability: CAP-ACC-REC-008
    expected: A replacement becomes finalized and subsequent recognition keys distinguish repeated item accounting.
    provenance: test
    source: >-
      react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0600.spec.ts#ACT-ACC-0600
  - 'n': 6
    surface: getReconciliationReadiness
    action: Reassess the selected period.
    capability: CAP-ACC-REC-018
    expected: 'No reversal approval remains pending, but unposted accounting continues to appear until posting.'
    provenance: test
    source: >-
      react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0600.spec.ts#ACT-ACC-0600
alternates:
  - from_step: 4
    condition: The approved explanation belongs to a closed period.
    path: Request reversal and obtain independent approval once the selected batch is in an open period.
    outcome: The mirrors use that open-period date and self-approval remains forbidden.
    provenance: test
    source: >-
      react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0601.spec.ts#ACT-ACC-0601
failures:
  - from_step: 4
    condition: No open operational batch can carry reversal accounting.
    path: Reject the reversal.
    outcome: Rollback preserves finalized holdings without a mirror or event.
    provenance: test
    source: >-
      services-accounting:modules/reconciliation/tests/integration/services/batch-lifecycle/reverse-batch.integration.spec.js#writes
      nothing: the batch finalized at its version, its claims held, no mirror, no event
  - from_step: 1
    condition: The requested posting currency has an unsupported exponent.
    path: Reject finalization’s posting request.
    outcome: The explanation remains open with the currency refusal.
    provenance: test
    source: >-
      services-accounting:modules/reconciliation/tests/integration/services/persistence/reconciliation-ledger-postings.integration.spec.js#refuses
      a currency whose exponent is not 2 (409, `unsupported-currency-exponent`), writing nothing
rules_in_play:
  - BR-CAP-ACC-REC-013-01
  - BR-CAP-ACC-REC-013-03
  - BR-CAP-ACC-REC-013-04
  - BR-CAP-ACC-REC-013-05
  - BR-CAP-ACC-REC-013-07
  - BR-CAP-ACC-REC-014-05
  - BR-CAP-ACC-REC-018-06
assertions:
  - id: AS-JNY-ACC-REC-003-01
    statement: Reversal mirrors the outstanding original accounting and releases its financial holdings.
    provenance: test
    source: >-
      react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0600.spec.ts#ACT-ACC-0600
  - id: AS-JNY-ACC-REC-003-02
    statement: The replacement becomes the deposit’s active explanation with distinct subsequent recognition keys.
    provenance: test
    source: >-
      react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0600.spec.ts#ACT-ACC-0600
  - id: AS-JNY-ACC-REC-003-03
    statement: 'Closed-period reversal needs independent approval, and late finalized accounting is marked accordingly.'
    provenance: test
    source: >-
      react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0601.spec.ts#ACT-ACC-0601
e2e_policy: required
e2e_reason: >-
  Browser coverage is needed to establish the staff workflow across screens; separate API evidence supports
  the financial and permission decisions.
evidence:
  - >-
    Journey verification uses the pinned command, refusal and assertion sources listed below. Mock evidence
    establishes only the command behavior described in its assertion.
  - >-
    react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0600.spec.ts#ACT-ACC-0600
  - >-
    react-console:acceptance/accounting/playwright/journeys/reconciliation-close/ACT-ACC-0601.spec.ts#ACT-ACC-0601
  - >-
    services-accounting:modules/reconciliation/tests/integration/services/batch-lifecycle/reverse-batch.integration.spec.js#writes
    nothing: the batch finalized at its version, its claims held, no mirror, no event
  - >-
    services-accounting:modules/reconciliation/tests/integration/services/persistence/reconciliation-ledger-postings.integration.spec.js#refuses
    a currency whose exponent is not 2 (409, `unsupported-currency-exponent`), writing nothing
proved_by: []
---

# Reverse and replace an incorrect approved explanation

## Story

An approver finds a mistake after the explanation has been finalized. Ordinary correction is unavailable, so they record a reversal reason, obtain independent approval when the period requires it and prepare a new explanation. Both the earlier record and its replacement remain available for review.
