---
id: SCR-ACC-REC-003
title: Reconciliation workspace
route: '/console/{tenantId}/accounting/reconciliation/payouts/{id}'
surface: console
product_area: accounting
module: reconciliation
revision: 3
status: draft
design_intent: confirmed
origin: >-
  ACCT-M8 plan D6 (the v0 corrections; Full layout for the workspace), D1 and
  D3, approved by Andrew 2026-10-22; the built screen is the approved baseline
implementation_evidence: observed
inference: []
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
purpose: >-
  Prepare and review a deposit explanation, then submit approval or correction
  commands.
supports:
  - JNY-ACC-REC-001
  - JNY-ACC-REC-002
  - JNY-ACC-REC-003
  - JNY-ACC-REC-006
  - CAP-ACC-REC-003
  - CAP-ACC-REC-008
  - CAP-ACC-REC-009
  - CAP-ACC-REC-010
  - CAP-ACC-REC-011
  - CAP-ACC-REC-013
permission: >-
  accounting.application.access; shared loading also requires payout,
  settlement-item, reconciliation and exception read grants
entry_from:
  - SCR-ACC-REC-002 payout rows
  - SCR-ACC-REC-001 recent payouts
  - SCR-ACC-REC-004 reconciliation rows
  - Readiness and exception navigation targets
exits_to:
  - '/console/{tenantId}/accounting/reconciliation/payouts'
displays:
  - field: >-
      Payout facts (merchant account, bank account, deposit day and amount,
      source and bank verification) and the reconciliation's number, status,
      finalizer and waiver mark
    source: >-
      DOM-ACC-REC-001 and DOM-ACC-REC-003 (getReconciliationBatch, loaded
      payouts)
  - field: >-
      Suggested and all activity with kind, customer, date, amount, operational
      batch, confidence and why it matches; selection and set-aside
    source: >-
      DOM-ACC-REC-002 via listReconciliationCandidates (view all, filtered in
      the browser)
  - field: >-
      Adjustments (manual fees, reserves and adjustments) with type, amount,
      note, reference and source
    source: DOM-ACC-REC-003 manual entries
  - field: >-
      Live calculation of payout amount, net reconciled, adjustments and
      difference in words
    source: 'The on-screen draft, computed in the browser'
  - field: >-
      Original operational batches of matched payments, with what is in this
      reconciliation and what is not reconciled
    source: Browser grouping of loaded settlement items by operational batch
  - field: Activity history
    source: >-
      Browser-created creation and finalization entries; history routes are not
      called
  - field: Pending reversal reason and read-only reversed explanation
    source: >-
      Console adapter retains pending reason but omits completed reversal
      reason, requester and approver
actions:
  - label: Save Draft
    operation_id: >-
      createReconciliationBatch, releaseReconciliationItems,
      removeReconciliationManualItem, claimReconciliationItems,
      addReconciliationManualItem, updateReconciliationBatchNotes,
      dismissReconciliationItem, undismissReconciliationItem (in sequence)
    permission: accounting.reconciliation-batches.update (create for the first save)
    confirm: false
  - label: Accept Authoritative
    operation_id: acceptAuthoritativeCandidates (after saving the draft)
    permission: accounting.reconciliation-batches.update
    confirm: false
  - label: Finalize
    operation_id: finalizeReconciliationBatch (after saving the draft)
    permission: accounting.reconciliation-batches.finalize
    confirm: false
  - label: Reverse
    operation_id: reverseReconciliationBatch
    permission: accounting.reconciliation-batches.reverse
    confirm: true
  - label: Approve Reversal
    operation_id: approveReconciliationBatchReversal
    permission: accounting.reconciliation-batches.reverse
    confirm: false
  - label: Start New Reconciliation
    operation_id: createReconciliationBatch
    permission: accounting.reconciliation-batches.create
    confirm: false
  - label: Verify with Bank
    operation_id: >-
      verifyPayoutBank (sent without the evidence, posted day and outcome the
      service requires)
    permission: accounting.payouts.verify
    confirm: false
  - label: Attach Evidence (unavailable)
    operation_id: 'none: shows that document upload is not connected'
    permission: accounting.reconciliation-batches.update
    confirm: false
states:
  - loading
  - empty
  - error
  - read-only
  - inactive
validation:
  - BR-CAP-ACC-REC-008-12
  - BR-CAP-ACC-REC-009-11
  - BR-CAP-ACC-REC-010-10
  - BR-CAP-ACC-REC-011-13
  - BR-CAP-ACC-REC-013-11
  - BR-CAP-ACC-REC-003-10
  - BR-CAP-ACC-REC-020-11
patterns:
  - Full ReconPage layout
  - Sticky calculation summary
  - Selectable matching table and local filtering
  - Manual adjustment dialog
  - Reason-required reversal dialog
  - Local activity drawer
  - PermissionHint and withheld-finalize explanation
  - Service error toasts
component: >-
  components/accounting/reconciliation/workspace/workspace.tsx (ReconWorkspace),
  matching.tsx, adjustments.tsx, original-batches.tsx, summary.tsx
evidence:
  - >-
    react-console at baf6dae3:
    app/(console)/console/[tenantId]/accounting/reconciliation/payouts/[id]/page.tsx;
    components/accounting/reconciliation/workspace/*.tsx;
    lib/accounting/reconciliation/store.tsx, adapter.ts, draft.ts, client.ts;
    e2e/mock/accounting-reconciliation.mock.spec.ts.
controls: [TC-IAM-001, TC-IAM-002, TC-IAM-004, TC-IAM-005, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-005, TC-AZ-006, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-TEN-004, TC-DAT-001, TC-DAT-002, TC-DAT-003, TC-LOG-001, TC-LOG-002, TC-LOG-003, TC-LOG-004, TC-LOG-005, TC-PI-001, TC-PI-005, TC-AI-005, TC-PRV-001, TC-PRV-002]
---
# Reconciliation workspace

## What the Screen Is For

The workspace collects the effects and deductions that explain a deposit. Independent approval and subsequent correction are submitted from the same record view.

## What It Shows and Lets People Do

Selection, adjustment dialogs and notes maintain a local draft with a live difference. Save applies individual commands; authoritative acceptance and finalize synchronize first. Source-batch grouping and displayed creation or approval history are constructed locally, and completed reversal actors are omitted.

## States and Errors

Missing payouts provide a way back. Approved and reversed explanations are read-only; disqualified finalize is hidden using withheld-action metadata. Partial saving and failed reload can leave browser state behind committed changes, while bank verification lacks required evidence fields.

## Patterns It Must Respect

Full layout keeps matching beside the calculation summary. Dialogs, history drawer and permission hints describe the existing baseline; money currently uses dollar cents, and attachment is an unavailable upload action.
