Skip to main content

Reconciliation System

For step-by-step logic, edge cases, and testing checklist, see Reconciliation Logic.

Overview

The reconciliation system in CONA automatically identifies and processes matching general ledger entries to balance accounts. It groups entries by reconciliation identifiers (GIDs) and processes them when credits equal debits, ensuring accurate financial record-keeping.

Key Concepts

Reconciliation Groups

  • Definition: Collections of general ledger entries that share the same reconciliation identifier (GID)
  • Eligibility: Groups are reconcilable when:
    • Total balance equals zero (credits = debits)
    • Contains multiple entries (minimum 2)
    • Entries are on accounts marked to_be_reconciled = true

Reconciliation Identifiers (GIDs)

  • Credit GID: credit_should_reconcile_gid - identifies credit entries for reconciliation
  • Debit GID: debit_should_reconcile_gid - identifies debit entries for reconciliation
  • Purpose: Groups related transactions (e.g., invoice + payment) for automatic reconciliation

Account Configuration

  • Chart of Accounts: to_be_reconciled field determines which accounts participate in reconciliation
  • Typical Accounts: receivables, payables, clearing accounts

System Architecture

Database Schema

Core Components

  1. @cona/core Package
    • get-reconciliation-groups.ts - Finds reconcilable groups
    • process-reconciliation-group.ts - Processes and reconciles groups
  2. Temporal Workflows Package
    • sync-reconciliation-global.ts - Orchestrates organization-wide reconciliation
    • sync-organization-reconciliation.ts - Processes single organization
    • Activities that wrap core functions
  3. Web Application
    • Manual reconciliation actions
    • Search and filtering capabilities
    • Reconciliation management UI

Reconciliation Process Flow

1. Group Discovery

2. Group Processing

3. Automated Workflow

Manual vs Automated Reconciliation

Automated Reconciliation

  • Trigger: Temporal scheduled workflow
  • Scope: All organizations with auto-reconciliation enabled
  • Processing: Batch processing with concurrency limits
  • Monitoring: Comprehensive logging and error handling

Manual Reconciliation

  • Trigger: User action from web interface
  • Scope: Single organization or account
  • Processing: On-demand reconciliation
  • Interface: Search, filter, and process specific entries

Key Features

Account-Specific Reconciliation

  • Only accounts marked to_be_reconciled = true participate
  • Separate tracking for credit and debit sides
  • Flexible account configuration per organization

Document Connection

  • Automatically connects related documents during reconciliation
  • Links invoices, payments, and other related transactions
  • Maintains audit trail of connected documents

Batch Processing

  • Handles large volumes with pagination
  • Configurable batch sizes for performance tuning
  • Concurrent processing across organizations

Error Handling

  • Graceful failure handling in workflows
  • Detailed logging for debugging
  • Rollback capabilities for failed reconciliations

API Interfaces

Core Functions

Web Actions