Skip to content

Latest commit

Β 

History

History
509 lines (466 loc) Β· 29.7 KB

File metadata and controls

509 lines (466 loc) Β· 29.7 KB

Banking Reconciliation Engine - Architecture

System Architecture Overview

Current Simulated Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    SIMULATED BANKING SYSTEM                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

    coordinated_producer.py
    (Generates fake transactions)
            β”‚
            β”œβ”€β†’ core_txns (Kafka Topic)
            β”œβ”€β†’ gateway_txns (Kafka Topic)
            └─→ mobile_txns (Kafka Topic)
                    β”‚
                    ↓
        simple_reconciliation_consumer.py
                    β”‚
                    ↓
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚ Reconciliation Engine      β”‚
        β”‚ - Match transactions      β”‚
        β”‚ - Detect mismatches       β”‚
        β”‚ - Calculate accuracy      β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                    β”‚
                    ↓
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚ PostgreSQL Database       β”‚
        β”‚ - Transactions            β”‚
        β”‚ - Mismatches              β”‚
        β”‚ - Reconciliation Results  β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                    β”‚
                    ↓
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚ React Frontend Dashboard  β”‚
        β”‚ - Real-time monitoring    β”‚
        β”‚ - Analytics & reports     β”‚
        β”‚ - Professional UI         β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Real Banking Architecture (Target)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      REAL BANKING SYSTEMS                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚ HDFC Bank   β”‚
    β”‚ REST API    β”‚
    β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
           β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚ ICICI Bank  β”‚
    β”‚ REST API    β”‚
    β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
           β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚ SBI         β”‚
    β”‚ OAuth 2.0   β”‚
    β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
           β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚ Razorpay    β”‚
    β”‚ REST API    β”‚
    β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
           β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚ Axis Bank   β”‚
    β”‚ SFTP Files  β”‚
    β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
           β”‚
           ↓
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚   bank_adapter.py        β”‚
    β”‚ - Fetch from APIs        β”‚
    β”‚ - Transform data         β”‚
    β”‚ - Handle errors          β”‚
    β”‚ - Retry logic            β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
               β”œβ”€β†’ hdfc_txns (Kafka Topic)
               β”œβ”€β†’ icici_txns (Kafka Topic)
               β”œβ”€β†’ sbi_txns (Kafka Topic)
               β”œβ”€β†’ razorpay_txns (Kafka Topic)
               └─→ axis_txns (Kafka Topic)
                       β”‚
                       ↓
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚ bank_reconciliation_consumer β”‚
        β”‚ - Consume from Kafka         β”‚
        β”‚ - Validate data              β”‚
        β”‚ - Store in database          β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                   β”‚
                   ↓
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚ Reconciliation Engine        β”‚
        β”‚ - Match transactions         β”‚
        β”‚ - Detect mismatches          β”‚
        β”‚ - Calculate accuracy         β”‚
        β”‚ - Generate reports           β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                   β”‚
                   ↓
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚ PostgreSQL Database          β”‚
        β”‚ - Real transactions          β”‚
        β”‚ - Reconciliation results     β”‚
        β”‚ - Audit logs                 β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                   β”‚
                   ↓
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚ React Frontend Dashboard     β”‚
        β”‚ - Real-time monitoring       β”‚
        β”‚ - Bank-wise analytics        β”‚
        β”‚ - Professional UI            β”‚
        β”‚ - Theme toggle               β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Component Details

1. Data Sources (Banks)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    BANK DATA SOURCES                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                               β”‚
β”‚  HDFC Bank                                                   β”‚
β”‚  β”œβ”€ API Type: REST                                          β”‚
β”‚  β”œβ”€ Auth: OAuth 2.0 Bearer Token                            β”‚
β”‚  β”œβ”€ Endpoint: https://api.hdfcbank.com/v1/transactions      β”‚
β”‚  └─ Rate Limit: 1000 req/hour                               β”‚
β”‚                                                               β”‚
β”‚  ICICI Bank                                                  β”‚
β”‚  β”œβ”€ API Type: REST                                          β”‚
β”‚  β”œβ”€ Auth: API Key + Bearer Token                            β”‚
β”‚  β”œβ”€ Endpoint: https://api.icicibank.com/v2/transactions     β”‚
β”‚  └─ Rate Limit: 500 req/hour                                β”‚
β”‚                                                               β”‚
β”‚  SBI (State Bank of India)                                   β”‚
β”‚  β”œβ”€ API Type: REST                                          β”‚
β”‚  β”œβ”€ Auth: OAuth 2.0                                         β”‚
β”‚  β”œβ”€ Endpoint: https://api.sbi.co.in/api/v1/transactions     β”‚
β”‚  └─ Rate Limit: 2000 req/hour                               β”‚
β”‚                                                               β”‚
β”‚  Razorpay (Payment Gateway)                                  β”‚
β”‚  β”œβ”€ API Type: REST                                          β”‚
β”‚  β”œβ”€ Auth: Basic Auth (Key + Secret)                         β”‚
β”‚  β”œβ”€ Endpoint: https://api.razorpay.com/v1/payments          β”‚
β”‚  └─ Rate Limit: Unlimited                                   β”‚
β”‚                                                               β”‚
β”‚  Axis Bank                                                   β”‚
β”‚  β”œβ”€ API Type: SFTP File Transfer                            β”‚
β”‚  β”œβ”€ Auth: SFTP Credentials                                  β”‚
β”‚  β”œβ”€ Path: /transactions/axis/                               β”‚
β”‚  └─ Frequency: Daily/Hourly                                 β”‚
β”‚                                                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2. Data Adapter Layer

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              BANK DATA ADAPTER (bank_adapter.py)             β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                               β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚ BankDataAdapter Class                               β”‚   β”‚
β”‚  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€   β”‚
β”‚  β”‚                                                       β”‚   β”‚
β”‚  β”‚ Methods:                                             β”‚   β”‚
β”‚  β”‚ β€’ fetch_from_hdfc_api()                              β”‚   β”‚
β”‚  β”‚ β€’ fetch_from_icici_api()                             β”‚   β”‚
β”‚  β”‚ β€’ fetch_from_sbi_api()                               β”‚   β”‚
β”‚  β”‚ β€’ fetch_from_razorpay()                              β”‚   β”‚
β”‚  β”‚ β€’ fetch_from_sftp()                                  β”‚   β”‚
β”‚  β”‚ β€’ send_to_kafka()                                    β”‚   β”‚
β”‚  β”‚ β€’ standardize_*_transaction()                        β”‚   β”‚
β”‚  β”‚                                                       β”‚   β”‚
β”‚  β”‚ Features:                                            β”‚   β”‚
β”‚  β”‚ βœ“ Error handling & retry logic                       β”‚   β”‚
β”‚  β”‚ βœ“ Data transformation                                β”‚   β”‚
β”‚  β”‚ βœ“ Kafka producer integration                         β”‚   β”‚
β”‚  β”‚ βœ“ Logging & monitoring                               β”‚   β”‚
β”‚  β”‚                                                       β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

3. Message Queue (Kafka)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    KAFKA MESSAGE QUEUE                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                               β”‚
β”‚  Topics:                                                     β”‚
β”‚  β”œβ”€ hdfc_txns          (HDFC transactions)                   β”‚
β”‚  β”œβ”€ icici_txns         (ICICI transactions)                  β”‚
β”‚  β”œβ”€ sbi_txns           (SBI transactions)                    β”‚
β”‚  β”œβ”€ razorpay_txns      (Razorpay transactions)               β”‚
β”‚  └─ axis_txns          (Axis transactions)                   β”‚
β”‚                                                               β”‚
β”‚  Features:                                                   β”‚
β”‚  βœ“ Scalable message processing                              β”‚
β”‚  βœ“ Fault tolerance                                          β”‚
β”‚  βœ“ Real-time data streaming                                 β”‚
β”‚  βœ“ Consumer group management                                β”‚
β”‚                                                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

4. Consumer & Processing

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚         BANK RECONCILIATION CONSUMER                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                               β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚ BankReconciliationConsumer                          β”‚   β”‚
β”‚  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€   β”‚
β”‚  β”‚                                                       β”‚   β”‚
β”‚  β”‚ Process:                                             β”‚   β”‚
β”‚  β”‚ 1. Consume from Kafka topics                         β”‚   β”‚
β”‚  β”‚ 2. Validate transaction data                         β”‚   β”‚
β”‚  β”‚ 3. Save to database                                  β”‚   β”‚
β”‚  β”‚ 4. Add to reconciliation engine                      β”‚   β”‚
β”‚  β”‚ 5. Log events                                        β”‚   β”‚
β”‚  β”‚                                                       β”‚   β”‚
β”‚  β”‚ Features:                                            β”‚   β”‚
β”‚  β”‚ βœ“ Multi-topic consumption                            β”‚   β”‚
β”‚  β”‚ βœ“ Data validation                                    β”‚   β”‚
β”‚  β”‚ βœ“ Error handling                                     β”‚   β”‚
β”‚  β”‚ βœ“ Audit logging                                      β”‚   β”‚
β”‚  β”‚                                                       β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

5. Reconciliation Engine

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           RECONCILIATION ENGINE                              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                               β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚ ReconciliationEngine                                β”‚   β”‚
β”‚  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€   β”‚
β”‚  β”‚                                                       β”‚   β”‚
β”‚  β”‚ Matching Logic:                                      β”‚   β”‚
β”‚  β”‚ β€’ Match by transaction ID                            β”‚   β”‚
β”‚  β”‚ β€’ Match by amount + timestamp                        β”‚   β”‚
β”‚  β”‚ β€’ Match by account + amount                          β”‚   β”‚
β”‚  β”‚                                                       β”‚   β”‚
β”‚  β”‚ Mismatch Detection:                                  β”‚   β”‚
β”‚  β”‚ β€’ Amount mismatch (6%)                               β”‚   β”‚
β”‚  β”‚ β€’ Status mismatch (4%)                               β”‚   β”‚
β”‚  β”‚ β€’ Time mismatch (2%)                                 β”‚   β”‚
β”‚  β”‚ β€’ Currency mismatch (1%)                             β”‚   β”‚
β”‚  β”‚ β€’ Missing fields (1%)                                β”‚   β”‚
β”‚  β”‚                                                       β”‚   β”‚
β”‚  β”‚ Output:                                              β”‚   β”‚
β”‚  β”‚ β€’ Reconciliation status (MATCHED/MISMATCH)           β”‚   β”‚
β”‚  β”‚ β€’ Mismatch details                                   β”‚   β”‚
β”‚  β”‚ β€’ Success rate calculation                           β”‚   β”‚
β”‚  β”‚                                                       β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

6. Data Storage

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              POSTGRESQL DATABASE                             β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                               β”‚
β”‚  Tables:                                                     β”‚
β”‚  β”œβ”€ transactions                                             β”‚
β”‚  β”‚  β”œβ”€ txn_id (PK)                                           β”‚
β”‚  β”‚  β”œβ”€ amount                                                β”‚
β”‚  β”‚  β”œβ”€ currency                                              β”‚
β”‚  β”‚  β”œβ”€ status                                                β”‚
β”‚  β”‚  β”œβ”€ source (bank)                                         β”‚
β”‚  β”‚  β”œβ”€ timestamp                                             β”‚
β”‚  β”‚  └─ ... (other fields)                                    β”‚
β”‚  β”‚                                                            β”‚
β”‚  β”œβ”€ reconciliation_results                                   β”‚
β”‚  β”‚  β”œβ”€ txn_id (FK)                                           β”‚
β”‚  β”‚  β”œβ”€ status (MATCHED/MISMATCH)                             β”‚
β”‚  β”‚  β”œβ”€ sources (array of banks)                              β”‚
β”‚  β”‚  └─ timestamp                                             β”‚
β”‚  β”‚                                                            β”‚
β”‚  β”œβ”€ mismatches                                               β”‚
β”‚  β”‚  β”œβ”€ id (PK)                                               β”‚
β”‚  β”‚  β”œβ”€ txn_id (FK)                                           β”‚
β”‚  β”‚  β”œβ”€ type (mismatch type)                                  β”‚
β”‚  β”‚  β”œβ”€ severity (HIGH/MEDIUM/LOW)                            β”‚
β”‚  β”‚  └─ details                                               β”‚
β”‚  β”‚                                                            β”‚
β”‚  └─ audit_logs                                               β”‚
β”‚     β”œβ”€ id (PK)                                               β”‚
β”‚     β”œβ”€ action                                                β”‚
β”‚     β”œβ”€ timestamp                                             β”‚
β”‚     └─ details                                               β”‚
β”‚                                                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

7. Frontend Dashboard

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚            REACT FRONTEND DASHBOARD                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                               β”‚
β”‚  Pages:                                                      β”‚
β”‚  β”œβ”€ Overview Dashboard                                       β”‚
β”‚  β”‚  β”œβ”€ KPI Cards (transactions, accuracy, etc.)              β”‚
β”‚  β”‚  β”œβ”€ Real-time charts                                      β”‚
β”‚  β”‚  └─ Recent transactions                                   β”‚
β”‚  β”‚                                                            β”‚
β”‚  β”œβ”€ Transactions                                             β”‚
β”‚  β”‚  β”œβ”€ Live transaction table                                β”‚
β”‚  β”‚  β”œβ”€ Filter by bank/status                                 β”‚
β”‚  β”‚  └─ Transaction details                                   β”‚
β”‚  β”‚                                                            β”‚
β”‚  β”œβ”€ Mismatches                                               β”‚
β”‚  β”‚  β”œβ”€ Mismatch list                                         β”‚
β”‚  β”‚  β”œβ”€ Severity indicators                                   β”‚
β”‚  β”‚  └─ Investigation tools                                   β”‚
β”‚  β”‚                                                            β”‚
β”‚  β”œβ”€ Analytics                                                β”‚
β”‚  β”‚  β”œβ”€ Bank-wise statistics                                  β”‚
β”‚  β”‚  β”œβ”€ Reconciliation trends                                 β”‚
β”‚  β”‚  └─ Performance metrics                                   β”‚
β”‚  β”‚                                                            β”‚
β”‚  └─ System Health                                            β”‚
β”‚     β”œβ”€ Service status                                        β”‚
β”‚     β”œβ”€ Performance metrics                                   β”‚
β”‚     └─ Alerts                                                β”‚
β”‚                                                               β”‚
β”‚  Features:                                                   β”‚
β”‚  βœ“ Professional UI (no emojis)                               β”‚
β”‚  βœ“ Dark/Light theme toggle                                   β”‚
β”‚  βœ“ Real-time updates                                         β”‚
β”‚  βœ“ Responsive design                                         β”‚
β”‚  βœ“ INR currency formatting                                   β”‚
β”‚                                                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Data Flow Diagram

Bank APIs
   β”‚
   β”œβ”€β†’ HDFC API ──┐
   β”œβ”€β†’ ICICI API ──
   β”œβ”€β†’ SBI API ────
   β”œβ”€β†’ Razorpay ───
   └─→ Axis SFTP ──
                  β”‚
                  ↓
          bank_adapter.py
          (Transform & Validate)
                  β”‚
                  β”œβ”€β†’ Kafka: hdfc_txns
                  β”œβ”€β†’ Kafka: icici_txns
                  β”œβ”€β†’ Kafka: sbi_txns
                  β”œβ”€β†’ Kafka: razorpay_txns
                  └─→ Kafka: axis_txns
                          β”‚
                          ↓
          bank_reconciliation_consumer
          (Consume & Process)
                          β”‚
                          β”œβ”€β†’ PostgreSQL (Save)
                          └─→ Reconciliation Engine
                                  β”‚
                                  β”œβ”€β†’ Match Transactions
                                  β”œβ”€β†’ Detect Mismatches
                                  β”œβ”€β†’ Calculate Accuracy
                                  └─→ Generate Reports
                                          β”‚
                                          β”œβ”€β†’ PostgreSQL (Store Results)
                                          └─→ Frontend Dashboard
                                                  β”‚
                                                  β”œβ”€β†’ Real-time Monitoring
                                                  β”œβ”€β†’ Analytics & Reports
                                                  └─→ Professional UI

Deployment Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    PRODUCTION DEPLOYMENT                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚ Docker Containers                                       β”‚ β”‚
β”‚  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚
β”‚  β”‚                                                           β”‚ β”‚
β”‚  β”‚ β€’ kafka-kafka-1 (Kafka Broker)                           β”‚ β”‚
β”‚  β”‚ β€’ kafka-zookeeper-1 (Zookeeper)                          β”‚ β”‚
β”‚  β”‚ β€’ reconciliation_postgres (PostgreSQL)                   β”‚ β”‚
β”‚  β”‚ β€’ backend-api (FastAPI Backend)                          β”‚ β”‚
β”‚  β”‚ β€’ frontend (React Frontend)                              β”‚ β”‚
β”‚  β”‚ β€’ bank-producer (Real Bank Producer)                     β”‚ β”‚
β”‚  β”‚ β€’ bank-consumer (Bank Reconciliation Consumer)           β”‚ β”‚
β”‚  β”‚                                                           β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚ Monitoring & Logging                                    β”‚ β”‚
β”‚  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚
β”‚  β”‚                                                           β”‚ β”‚
β”‚  β”‚ β€’ Application Logs (bank_producer.log)                   β”‚ β”‚
β”‚  β”‚ β€’ Error Tracking                                         β”‚ β”‚
β”‚  β”‚ β€’ Performance Metrics                                    β”‚ β”‚
β”‚  β”‚ β€’ Alert System                                           β”‚ β”‚
β”‚  β”‚                                                           β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Technology Stack

Frontend:
β”œβ”€ React 18
β”œβ”€ Axios (HTTP Client)
β”œβ”€ CSS (Professional Styling)
└─ Theme Toggle (Dark/Light)

Backend:
β”œβ”€ FastAPI (Python)
β”œβ”€ PostgreSQL (Database)
β”œβ”€ SQLAlchemy (ORM)
└─ Pydantic (Data Validation)

Message Queue:
β”œβ”€ Apache Kafka
β”œβ”€ Zookeeper
└─ kafka-python (Client)

Data Processing:
β”œβ”€ Python 3.9+
β”œβ”€ Requests (HTTP)
β”œβ”€ Paramiko (SFTP)
└─ Cryptography (Encryption)

Infrastructure:
β”œβ”€ Docker
β”œβ”€ Docker Compose
└─ Linux/Windows

Scalability Considerations

Horizontal Scaling

  • Multiple Kafka brokers for high throughput
  • Multiple consumer instances for parallel processing
  • Load balancer for frontend/backend

Vertical Scaling

  • Increase database resources
  • Increase Kafka broker memory
  • Optimize reconciliation engine

Performance Optimization

  • Database indexing on frequently queried fields
  • Kafka partition optimization
  • Caching layer (Redis)
  • Query optimization

Last Updated: December 27, 2025 Version: 1.0