S
SocietyOS
Architecture & Accounting Blueprint
◀
[01] System Architecture & Component Boundaries
[02] End-to-End Business & Accounting Workflow
[03] Target Entity Relationship (ER) Database Schema
[04] Invoicing, Accounting Posting & Payment Sequence
[05] Double-Entry Accounting Posting Flow & Rollups
[06] Member Invoice Lifecycle & Reversal State Machine
[07] Security Gate Operations: Visitor & Vehicle Workflow
▾
1 / 7
▶
⛶ Fit 90%
Notes
Present
Drag to Pan
•
Scroll to Zoom
•
←
→
Switch
•
F
Fullscreen
•
N
Notes
Indian Co-operative Housing Society Management Platform
Society Management System - System Architecture & Component Boundaries
Frontend Presentation Layer (React / Next.js SPA & PWA)
API Gateway & Security Layer
Core Backend Application Services (Modular Node.js / Laravel)
Data Persistence & Cache Layer
External Third-Party Integrations
Admin Dashboard
(Web)
Accountant Portal
(Ledger, Vouchers & Reports)
Security Guard Console
(Tablet / PWA)
Resident Mobile / Web Portal
(Invoices, Passes & Dues)
API Gateway / Reverse Proxy
(REST API Endpoints)
Auth & RBAC Middleware
(JWT / Session, Tenant Context)
Society & Structure Service
- Societies, Wings, Floors, Flats
- Members, Residents & Occupancy
Billing & Invoicing Service
- Charge Masters (Per-sqft, Flat, Metered)
- Batch Invoice Generator
- Late Fee & Interest Calculator
Payment & Receipt Service
- Payment Capture (UPI/Cheque/Bank)
- FIFO Multi-Bill Allocation Engine
- Receipt Voucher Generation
Double-Entry Accounting Engine
- 4-Tier COA Management
- Balanced Journal Posting (Dr = Cr)
- General Ledger & Vouchers (JV/RV/PV)
Financial Reporting Engine
- Trial Balance (Real-time Dr=Cr)
- Income & Expenditure Account
- Balance Sheet & Member Ledger
- Bank Reconciliation (BRS)
Visitor Management Service
- QR Visitor Passes & Gate Check-in
- Resident Approval Notifications
- Overstay & Exit Tracking
Vehicle & Parking Service
- Resident / Visitor Vehicle Registry
- Slot Allocation & Conflict Detection
Audit & Security Service
- Immutable Action Audit Trail
- Role & Policy Enforcement
Primary Database
(PostgreSQL / MongoDB Replica Set)
- Strict Multi-Tenancy ('society_id')
- ACID Multi-Entity Transactions
In-Memory Cache & Message Queue
(Redis)
- Queued Billing Runs
- Push Notification Dispatch
- Session Tokens
Object Storage (AWS S3 / MinIO)
- Invoice & Receipt PDFs
- Visitor Photos & Documents
Payment Gateway
(Razorpay / Cashfree)
- Webhook callbacks
Notification Gateway
(FCM, SMS & WhatsApp)
- Visitor alerts & payment receipts
Society Admin / Secretary
Society Accountant
Security Guard
Resident / Flat Owner
Architecture Grounding:
- Repo A implements balanced JournalEntry + JournalLine.
- Target system adds automatic event-driven link:
Billing/Payment -> Accounting posting (missing in Repo A).
- Enforces 4-tier Chart of Accounts (Category -> Group -> Subgroup -> Ledger).
Manages setup, billing, staff
Reviews COA, vouchers, BRS
Logs visitor & vehicle entry/exit
Views bills, makes payments, approves visitors
HTTPS / JSON
HTTPS / JSON
HTTPS / JSON
HTTPS / JSON
Enforces 'society_id' isolation & role permissions
Auto-posts Sales Journal Vouchers (Dr AR, Cr Income)
Auto-posts Receipt Vouchers (Dr Bank, Cr AR / Advance)
Updates Invoice status (PAID / PARTIAL)
Queries posted journal lines & balances
Validates host flat & resident status
Links vehicles to allocated flat slots
Logs billing runs
Logs voucher creations & reversals
Read / Write under Tenant Scope
Dispatches async invoice batches
Verifies digital payments
Sends resident approval alerts
Stores signed PDF receipts
Archives monthly bill PDFs
Architecture Blueprint | Target System Design (Based on AUDIT-BLUEPRINT)
Indian Co-operative Housing Society Management Platform
Society Management System - End-to-End Business & Accounting Workflow
This syntax is deprecated and the color is ignored: write ':Raise Accounting ValidationError; <<#FFCDD2>>' instead of '#FFCDD2:Raise Accounting ValidationError;'
This syntax is deprecated and the color is ignored: write ':Record Payment Failure / Cheque Bounce; <<#FFCDD2>>' instead of '#FFCDD2:Record Payment Failure / Cheque Bounce;'
This syntax is deprecated and the color is ignored: write ':Confirm Arithmetic Integrity; <<#C8E6C9>>' instead of '#C8E6C9:Confirm Arithmetic Integrity;'
This syntax is deprecated and the color is ignored: write ':Flag Critical Imbalance Warning for Accountant Review; <<#FFCDD2>>' instead of '#FFCDD2:Flag Critical Imbalance Warning for Accountant Review;'
1. Foundation & Master Data Setup
Configure Society Profile (Name, Reg. No, Address, Bank Accounts)
Open Active Financial Year (e.g., 01-Apr to 31-Mar)
Create Structure Hierarchy (Wings/Towers -> Floors -> Flats/Units)
Record Flat Attributes (Carpet Area sq.ft, Built-up Area, Unit Type)
Register Members & Residents (Owner, Tenant, Occupancy Dates)
4-Tier Hierarchy (Target Model):
- Account Category (Asset, Liability, Income, Expense)
- Account Group (e.g., Current Assets, Member Dues)
- Account Subgroup (e.g., Sundry Debtors - Maintenance)
- Ledger Account (e.g., Flat 101 Receivable, Bank A/c)
*(Resolves flat 2-level limitation found in Repo A)*
Configure 4-Tier Chart of Accounts
Charge Master supports:
- Per Sq. Ft Rate (Area * Rate)
- Fixed Rate per Flat
- Per Vehicle Charge
- Sinking / Repair Fund Formulas
Configure Billing Charge Items & Formulas
2. Maintenance Billing Run & Invoicing
Initiate Periodic Billing Run (Monthly / Quarterly)
Calculate Charges per Flat based on Active Rules
Generate Member Invoices (Unique Invoice Numbers)
Prepare Double-Entry Sales Journal Voucher (JV)
Validate Accounting Invariants:
Sum(Debits) == Sum(Credits) AND Sum(Debits) > 0
Accounting Invariant Valid?
yes
no
Sales JV:
- Debit: Accounts Receivable (Member Dues)
- Credit: Maintenance Income Ledgers
Commit Invoice & Post Journal Entry Atomically
Notify Residents (Email, Push, SMS) with PDF Invoices
Raise Accounting ValidationError
Abort Billing Run & Rollback Database Writes
3. Member Payment Collection & Receipting
Resident Submits Payment (UPI, Cheque, NEFT/RTGS, Cash)
Payment Verification / Gateway Status?
Success / Cheque Realized
Failed / Bounced
Inspect Member Outstanding Invoices
Exact Full Payment
Payment Amount vs Total Dues?
Allocate Payment to Invoice
Mark Invoice Status as PAID
Post Receipt Voucher (RV):
- Debit: Bank Account
- Credit: Accounts Receivable (Member Dues)
Partial Payment
Partial Payment
Excess / Advance Payment
Apply FIFO Allocation across Oldest Invoices
Mark Partially Paid Invoices with Remaining Balance
Post Receipt Voucher (RV):
- Debit: Bank Account
- Credit: Accounts Receivable (Member Dues)
Allocate to All Outstanding Invoices (Mark PAID)
Credit Excess Balance to Member Advance Liability
Post Receipt Voucher (RV):
- Debit: Bank Account
- Credit: Accounts Receivable (Cleared Dues)
- Credit: Member Advance Maintenance (Liability)
Generate Printable Payment Receipt (PDF)
Issue Receipt to Resident
Record Payment Failure / Cheque Bounce
Retain Invoice in UNPAID / OVERDUE Status
Post Dishonour Penalty & Bank Charges JV
yes
Cheque Bounced?
4. Society Expenses & Accounts Payable
Receive Vendor Bill (e.g., Security, Electricity, Elevator AMC)
Verify Vendor Details, GSTIN, and Service Delivery
Post Purchase Voucher (PUV):
- Debit: Relevant Expense Ledger (e.g., Security Service Exp)
- Credit: Accounts Payable (Vendor Ledger)
Approve & Execute Vendor Payment from Society Bank
Post Payment Voucher (PV):
- Debit: Accounts Payable (Vendor Ledger)
- Credit: Bank Account
- Credit: TDS Payable (if applicable)
5. General Ledger, Trial Balance & Statements
Aggregate Posted Journal Lines into General Ledger
Calculate Real-Time Account Closing Balances
Generate Trial Balance
Trial Balance Balanced: Total Dr == Total Cr?
yes
no
Confirm Arithmetic Integrity
Flag Critical Imbalance Warning for Accountant Review
Generate Income & Expenditure Account (Surplus / Deficit)
Generate Balance Sheet (Assets == Liabilities + Reserves)
6. Bank Reconciliation Statement (BRS)
Target System Capability:
*(Identified as missing in both Repo A and Repo B)*
Upload Official Bank Statement (CSV / MT940)
Match Statement Entries with Society Cash Book / Bank Ledger
Identify Unreconciled Items:
- Cheques Issued but not yet presented by Vendors
- Cheques Deposited but not yet credited by Bank
- Direct Bank Charges / Interest not yet entered in Books
Generate Bank Reconciliation Statement (BRS)
Post Necessary Adjustment JVs for Bank Charges / Interest
Business Workflow Activity Diagram | Target System Flow (Based on AUDIT-BLUEPRINT)
Indian Co-operative Housing Society Management Platform
Society Management System - Proposed Target ER Diagram
Society
id : UUID «PK»
name : VARCHAR(150)
registration_number : VARCHAR(50)
address : TEXT
currency : VARCHAR(3) [DEFAULT 'INR']
created_at : TIMESTAMP
Building
id : UUID «PK»
society_id : UUID «FK»
name : VARCHAR(100)
total_floors : INT
Flat
id : UUID «PK»
society_id : UUID «FK»
building_id : UUID «FK»
flat_number : VARCHAR(20)
floor_number : INT
carpet_area_sqft : DECIMAL(10,2)
super_builtup_area_sqft : DECIMAL(10,2)
flat_type : ENUM(1BHK, 2BHK, 3BHK, Penthouse, Commercial)
status : ENUM(Occupied, Vacant)
Resident
id : UUID «PK»
society_id : UUID «FK»
full_name : VARCHAR(150)
phone_number : VARCHAR(20)
email : VARCHAR(100)
pan_number : VARCHAR(10)
status : ENUM(Active, Inactive, MovedOut)
FlatOccupancy
id : UUID «PK»
society_id : UUID «FK»
flat_id : UUID «FK»
resident_id : UUID «FK»
occupancy_type : ENUM(Owner_Residing, Tenant, Co_Owner)
start_date : DATE
end_date : DATE
is_primary_contact : BOOLEAN
ChargeItem
id : UUID «PK»
society_id : UUID «FK»
income_ledger_account_id : UUID «FK»
name : VARCHAR(100)
calculation_method : ENUM(Per_Sqft, Fixed_Per_Flat, Per_Vehicle, Equal_Split, Metered)
rate : DECIMAL(12,2)
is_mandatory : BOOLEAN
is_taxable : BOOLEAN
Invoice
id : UUID «PK»
society_id : UUID «FK»
flat_id : UUID «FK»
financial_year_id : UUID «FK»
invoice_number : VARCHAR(50) «UNIQUE»
billing_period : VARCHAR(20)
invoice_date : DATE
due_date : DATE
total_amount : DECIMAL(12,2)
paid_amount : DECIMAL(12,2)
balance_amount : DECIMAL(12,2)
status : ENUM(Draft, Posted, Partially_Paid, Paid, Overdue, Cancelled)
journal_entry_id : UUID «FK, UNIQUE»
InvoiceLine
id : UUID «PK»
invoice_id : UUID «FK»
charge_item_id : UUID «FK»
description : VARCHAR(200)
quantity : DECIMAL(10,2)
rate : DECIMAL(12,2)
line_total : DECIMAL(12,2)
Payment
id : UUID «PK»
society_id : UUID «FK»
flat_id : UUID «FK»
payment_date : DATE
amount_received : DECIMAL(12,2)
payment_mode : ENUM(UPI, Cheque, NEFT_RTGS, Cash, Gateway)
reference_number : VARCHAR(100)
cheque_number : VARCHAR(30)
cheque_clearance_date : DATE
receipt_number : VARCHAR(50) «UNIQUE»
status : ENUM(Pending, Realized, Bounced, Refunded)
journal_entry_id : UUID «FK, UNIQUE»
PaymentAllocation
id : UUID «PK»
payment_id : UUID «FK»
invoice_id : UUID «FK»
allocated_amount : DECIMAL(12,2)
is_advance : BOOLEAN
AccountCategory
id : UUID «PK»
code : VARCHAR(10) «UNIQUE»
name : ENUM(Asset, Liability, Income, Expense)
normal_balance : ENUM(Debit, Credit)
AccountGroup
id : UUID «PK»
account_category_id : UUID «FK»
code : VARCHAR(20)
name : VARCHAR(100)
AccountSubgroup
id : UUID «PK»
account_group_id : UUID «FK»
code : VARCHAR(30)
name : VARCHAR(100)
LedgerAccount
id : UUID «PK»
society_id : UUID «FK»
account_subgroup_id : UUID «FK»
account_code : VARCHAR(50)
account_name : VARCHAR(150)
opening_balance : DECIMAL(14,2)
current_balance : DECIMAL(14,2)
is_active : BOOLEAN
is_system_locked : BOOLEAN
JournalEntry
id : UUID «PK»
society_id : UUID «FK»
financial_year_id : UUID «FK»
voucher_type : ENUM(JV, RV, PV, SV, PUV)
voucher_number : VARCHAR(50) «UNIQUE»
entry_date : DATE
narration : TEXT
total_debit : DECIMAL(14,2)
total_credit : DECIMAL(14,2)
source_document_type : VARCHAR(50)
source_document_id : UUID
status : ENUM(Posted, Reversed)
JournalLine
id : UUID «PK»
journal_entry_id : UUID «FK»
ledger_account_id : UUID «FK»
flat_id : UUID «FK, NULLABLE»
vendor_id : UUID «FK, NULLABLE»
debit : DECIMAL(14,2)
credit : DECIMAL(14,2)
line_narration : VARCHAR(255)
Vendor
id : UUID «PK»
society_id : UUID «FK»
payable_ledger_account_id : UUID «FK»
vendor_name : VARCHAR(150)
gstin : VARCHAR(15)
pan : VARCHAR(10)
phone : VARCHAR(20)
PurchaseInvoice
id : UUID «PK»
society_id : UUID «FK»
vendor_id : UUID «FK»
invoice_number : VARCHAR(50)
invoice_date : DATE
total_amount : DECIMAL(12,2)
tds_amount : DECIMAL(12,2)
status : ENUM(Unpaid, Partially_Paid, Paid)
journal_entry_id : UUID «FK, UNIQUE»
FinancialYear
id : UUID «PK»
society_id : UUID «FK»
year_name : VARCHAR(20)
start_date : DATE
end_date : DATE
is_closed : BOOLEAN
BankAccount
id : UUID «PK»
society_id : UUID «FK»
ledger_account_id : UUID «FK, UNIQUE»
bank_name : VARCHAR(100)
account_number : VARCHAR(50)
ifsc_code : VARCHAR(20)
branch_name : VARCHAR(100)
BankReconciliation
id : UUID «PK»
society_id : UUID «FK»
bank_account_id : UUID «FK»
statement_date : DATE
statement_closing_balance : DECIMAL(14,2)
book_closing_balance : DECIMAL(14,2)
difference : DECIMAL(14,2)
status : ENUM(Draft, Reconciled)
financial_year
bank_account
bank_reconciliation
has
contains
houses
tracks
occupies
configures
calculates
billed to
itemizes
remits
allocates
settles
contains
contains
classifies
owns
records
consists of
updates
auto-posts
auto-posts
contracts
submits
auto-posts
has AP ledger
maps to Income ledger
operates in
maintains
maps to Asset ledger
reconciles
Proposed Target Schema (Resolves 2-tier COA and billing isolation in audited repos)
Indian Co-operative Housing Society Management Platform
Maintenance Invoicing, Accounting Posting & Payment Settlement Sequence
Society Admin
Billing Service
Accounting Service
Database
Resident
Payment Service
Society Admin
Billing Service
Accounting Service
Database
(Atomic Transaction)
Resident
Payment Service
Society Admin
Billing Service
Accounting Service
Database
(Atomic Transaction)
Resident
Payment Service
Phase 1: Invoice Generation & Balanced Journal Posting
Request Invoice Generation (Period: June 2026, Wing: Tower-A)
Fetch Active Flats (Area sq.ft) & Charge Items (Rates)
Return 50 Flats & Approved Charge Master
Calculate Line Charges per Flat
[Illustrative: 1,000 sq.ft * ₹2.50 = ₹2,500 Service
+ ₹1,500 Sinking + ₹1,000 Parking = ₹5,000 Total]
Begin Database Transaction (ACID / Multi-Doc Session)
Insert Invoices (status: DRAFT) & InvoiceLines
Invoices Staged (e.g., Inv #INV-2026-0101)
Request Sales Journal Voucher Creation
(Inv #INV-2026-0101, Amount: ₹5,000.00)
Construct Journal Lines:
- Debit: Member Dues AR (Flat 101) = ₹5,000.00
- Credit: Service Charge Income = ₹2,500.00
- Credit: Sinking Fund Reserve = ₹1,500.00
- Credit: Parking Income = ₹1,000.00
Validate Invariant:
Total Debits (₹5,000.00) == Total Credits (₹5,000.00)
AND Total Debits > 0
alt
[Invariant Validation Succeeded]
Insert JournalEntry (Type: SV, status: POSTED) & JournalLines
Update Ledger Account Balances (AR Dr, Income Cr)
Journal Entry #JV-2026-0501 Posted
Update Invoice status -> POSTED (Link journal_entry_id)
Commit Transaction
Invoicing Run Complete (50 Invoices Generated & Posted)
[Invariant Validation Failed (Total Dr != Total Cr)]
Throw AccountingBalanceException("Unbalanced debits/credits")
Rollback Database Transaction
Error: Billing run aborted; all staged changes rolled back
Phase 2: Resident Payment, Allocation & Receipting
Submit Payment (e.g., ₹5,000 via UPI / Gateway / Cheque)
Begin Database Transaction
Fetch Member Outstanding Invoices (FIFO Order)
Return Inv #INV-2026-0101 (Balance: ₹5,000.00)
Allocate Payment to Invoice
(Allocated: ₹5,000.00, Remaining Inv Balance: ₹0.00)
Insert Payment Record & PaymentAllocation
Update Invoice (paid_amount = ₹5,000, balance = ₹0, status = PAID)
Request Receipt Voucher Posting
(Payment Ref: UPI-98765, Amount: ₹5,000.00)
Construct Journal Lines:
- Debit: Society Bank Account = ₹5,000.00
- Credit: Member Dues AR (Flat 101) = ₹5,000.00
Validate Invariant: Total Dr (₹5,000) == Total Cr (₹5,000)
alt
[Receipt Posting Succeeded]
Insert JournalEntry (Type: RV, status: POSTED) & JournalLines
Update Ledger Balances (Bank Dr, AR Cr)
Receipt Voucher #RV-2026-0801 Posted
Insert Printable Money Receipt (Receipt #REC-2026-0101)
Commit Transaction
Payment Confirmed & Instant PDF Receipt Issued
[Payment Gateway / Cheque Bounced or Posting Error]
Rollback Database Transaction
Insert Payment Record (status: FAILED / BOUNCED)
Commit
Payment Failed / Transaction Rolled Back
Sequence Diagram | Target System Transaction Flow (Based on AUDIT-BLUEPRINT)
Indian Co-operative Housing Society Management Platform
Double-Entry Accounting Posting Flow & Financial Statement Rollup
1. Source Business Events
2. Balanced Journal Entries (Journal Vouchers - JV/RV/PV)
3. General Ledger (Account-wise Aggregations)
Asset Ledgers
Liability Ledgers
Income Ledgers
Expense Ledgers
4. Real-time Trial Balance
5. Final Statutory Financial Statements
Event A: Maintenance Invoicing
[Monthly Maintenance Run]
Event B: Member Standard Payment
[Invoice Settlement]
Event C: Society Operating Expense
[Security Agency Bill Paid]
Event D: Advance / Excess Payment
[Member pays ₹8,000 against ₹5,000 bill]
JV #001: Sales / Billing Voucher
Debit:
Member Dues Receivable [Asset] : ₹5,000.00
Credit:
Maintenance Income [Income] : ₹5,000.00
*Invariant Check: Dr ₹5,000 == Cr ₹5,000*
RV #001: Receipt Voucher
Debit:
Society Bank Account [Asset] : ₹5,000.00
Credit:
Member Dues Receivable [Asset] : ₹5,000.00
*Invariant Check: Dr ₹5,000 == Cr ₹5,000*
PV #001: Payment / Expense Voucher
Debit:
Security Service Expense [Expense] : ₹15,000.00
Credit:
Society Bank Account [Asset] : ₹15,000.00
*Invariant Check: Dr ₹15,000 == Cr ₹15,000*
RV #002: Advance Receipt Voucher
Debit:
Society Bank Account [Asset] : ₹8,000.00
Credit:
Member Dues Receivable [Asset] : ₹5,000.00
Credit:
Member Advance Maintenance [Liability] : ₹3,000.00
*Invariant Check: Dr ₹8,000 == Cr (₹5,000 + ₹3,000)*
Ledger: Society Bank Account
- RV #001: Dr ₹5,000
- PV #001: Cr ₹15,000
- RV #002: Dr ₹8,000
Net Balance (Dr): -₹2,000
(or from Opening Bal)
Ledger: Member Dues Receivable
- JV #001: Dr ₹5,000
- RV #001: Cr ₹5,000
- RV #002: Cr ₹5,000
Net Balance: ₹0.00
Ledger: Member Advance Maintenance
- RV #002: Cr ₹3,000
Net Balance (Cr): ₹3,000.00
Ledger: Maintenance Income
- JV #001: Cr ₹5,000
Net Balance (Cr): ₹5,000.00
Ledger: Security Service Expense
- PV #001: Dr ₹15,000
Net Balance (Dr): ₹15,000.00
Trial Balance Summary
1. Society Bank Account: [Dr ₹28,000* | Cr ₹15,000] -> Net Dr ₹13,000*
2. Member Dues Receivable: [Dr ₹5,000 | Cr ₹5,000] -> ₹0.00
3. Member Advance Liability: Net Cr ₹3,000
4. Maintenance Income: Net Cr ₹5,000
5. Security Expense: Net Dr ₹15,000
6. Opening Equity/Capital*: Net Cr ₹20,000
Total Debits == Total Credits (Balanced)
Income & Expenditure Account
(For the Year Ended)
Expenditure:
- Security Expense: ₹15,000.00
Income:
- Maintenance Income: ₹5,000.00
Net Deficit / (Surplus)
transferred to Balance Sheet
Balance Sheet
(As on Date)
Liabilities & Reserves:
- Reserve / Member Capital Fund
- Member Advance Maintenance (₹3,000.00)
- Net Surplus / (Deficit) from I&E
Assets:
- Bank Balance
- Member Dues Receivable (₹0.00)
- Fixed Assets
Total Assets == Total Liabilities + Reserves
Important Accounting Notice:
All ledger mappings and monetary figures are
illustrative examples
to demonstrate
double-entry mechanics. Final classification must be validated by a qualified Indian society auditor.
Auto-post on Bill Run
Auto-post on Payment
Post on Expense Approval
Post on Excess Payment
Updates Dr
Updates Cr
Updates Dr
Updates Cr
Updates Dr
Updates Cr
Updates Dr
Updates Cr
Updates Cr
Income & Expense Ledgers
Asset & Liability Ledgers
Net Surplus / Deficit Transferred to Reserves
Accounting Flow Diagram | Illustrative Double-Entry Mechanics (Subject to Auditor Sign-off)
Indian Co-operative Housing Society Management Platform
Member Maintenance Invoice Lifecycle & Reversal State Machine
Draft
Line items calculated from area/rules
No journal entry posted yet
Editable by billing operator
Cancelled_Draft
Draft deleted or archived
No financial ledger footprint
Posted
Invoice published to Resident Portal
Member Dues Receivable active in ledger
PDF generated with unique invoice number
Partially_Paid
Partial payment realized in society bank
Remaining balance displayed on portal
Overdue
Grace period expired
Late fee / interest policy applied
Member marked on Defaulters List
Paid
Outstanding balance = 0
Payment receipt issued to member
Receivable ledger fully settled
Reversed
Invoice marked VOID / REVERSED
Linked to Reversal Journal Voucher
Detailed cancellation reason & audit log recorded
Critical Accounting Principle:
Once an invoice transitions from
Draft
to
Posted
,
it becomes a legally enforceable accounting claim.
SILENT DELETION IS FORBIDDEN.
Any correction MUST produce an offsetting Reversal JV
or Credit Note to preserve the audit trail.
Billing run initiated
(Charges computed per flat)
Admin approves & finalizes run
[ACTION: Auto-post Sales JV]
Dr: Member Dues AR / Cr: Income
Discarded before posting
(No accounting impact)
Member remits partial payment (< Total)
[ACTION: Post Receipt Voucher for partial amount]
Invoice balance updated (Balance > 0)
Member remits exact full payment
[ACTION: Post Receipt Voucher for full amount]
Invoice balance = 0
Payment due date passes without payment
[RULE: System flags invoice as delinquent]
Subsequent payment clears remaining balance
[ACTION: Post Receipt Voucher for remainder]
Invoice balance = 0
Due date passes with outstanding balance
[RULE: System flags partial balance as overdue]
Member makes partial payment towards overdue bill
Member clears full overdue principal + interest
Billing error discovered (e.g. wrong flat area)
[MANDATORY ACCOUNTING CONTROL]
Post Reversal JV: Dr Income / Cr Member AR
*(Silent database deletion is strictly prohibited)*
Billing dispute resolved via Credit Note
[CONTROL: Post Credit Note / Reversal JV]
*(Any excess collected refunded or credited to Advance)*
Bad debt write-off approved by AGM
[CONTROL: Post Bad Debt JV: Dr Provision / Cr AR]
State Machine Diagram | Invoice Lifecycle & Accounting Controls (Based on AUDIT-BLUEPRINT)
Indian Co-operative Housing Society Management Platform
Security Gate Operations: Visitor Verification, Vehicle & Parking Workflow
This syntax is deprecated and the color is ignored: write ':Resident Clicks 'ALLOW ENTRY'; <<#C8E6C9>>' instead of '#C8E6C9:Resident Clicks 'ALLOW ENTRY';'
This syntax is deprecated and the color is ignored: write ':Resident Clicks 'DENY ENTRY'; <<#FFCDD2>>' instead of '#FFCDD2:Resident Clicks 'DENY ENTRY';'
This syntax is deprecated and the color is ignored: write ':Entry Disallowed Due to Lack of Authorization; <<#FFCDD2>>' instead of '#FFCDD2:Entry Disallowed Due to Lack of Authorization;'
1. Arrival at Society Gate
Visitor / Vehicle arrives at Main Entrance
Entry Category?
Resident Vehicle
Visitor / Guest / Delivery / Cab
Scan RFID Tag / Automatic Number Plate Recognition (ANPR)
Registered in Society Vehicle Registry?
yes
unrecognized
Display Allocated Parking Slot (e.g., Stilt #S-14);
Open Automatic Boom Barrier
Log Entry Timestamp in Vehicle Movement Log
Halt at Guard Booth for Manual Inspection
Guard approaches Visitor at Gate Console
2. Visitor Verification & Registration
Has Pre-Approved QR Pass?
yes - Pre-Approved Guest
no - Walk-in / Unannounced Visitor
Guard Scans Digital QR Code via Security Console
System validates Pass Validity, Destination Flat & Dates
Pass Validated Automatically
Guard Enters Visitor Details on Console:
- Full Name & Mobile Phone Number
- Destination Flat Number
- Category: Guest / Courier-Delivery / Cab / Service-Workman
- Purpose of Visit
Visitor Has Vehicle?
yes
pedestrian
Record Vehicle Registration Number
Select Vehicle Type: 2-Wheeler / 4-Wheeler
Visitor Parking Slots Available?
yes
no slots
Assign Temporary Visitor Parking Slot (e.g., V-03)
Alert Guard: No Visitor Parking Available
Direct Driver to Park Outside / Drop-off Only
Note: Pedestrian / Cab Drop-off
Capture Visitor Photo (Console WebCam / Camera)
3. Resident Authorization
System dispatches instant Push Notification & SMS
to Registered Host Resident(s) of Destination Flat
Approved
Resident Response on Mobile App?
Resident Clicks 'ALLOW ENTRY'
Generate Electronic Gate Pass
Rejected
Denied / Rejected
No Response / Timeout after 2 Mins
Resident Clicks 'DENY ENTRY'
Guard Notified: Entry Denied by Resident
Visitor Directed to Leave Premises
Log Entry Rejection in Security Audit Log
Guard Manual Intercom / Phone Call Confirmed?
yes
no
Guard Manual Override with Vocal Approval
Generate Electronic Gate Pass
Entry Disallowed Due to Lack of Authorization
4. Entry & On-Premises State
Log Inward Timestamp & Issue Digital Pass (SMS / Slip)
Open Gate / Boom Barrier for Visitor
Status Updated to:
ON_PREMISES
Background Monitor: Track Overstay if duration exceeds 4 hours
5. Visitor Departure & Check-out
Visitor arrives at Exit Gate
Guard Searches Pass by Mobile No, Flat No, or Vehicle Plate
Guard Confirms Visitor Identity & Clicks
CHECK-OUT
System Logs Outward Departure Timestamp
Release Visitor Parking Slot back to Available Pool
yes
Visitor Allocated Temporary Parking Slot?
Status Updated to:
COMPLETED / CHECKED_OUT
Calculate Total Dwell Time on Premises
Archive Record in Permanent Visit History Log
Open Exit Barrier
Security Workflow Activity Diagram | Gate Operations (Based on AUDIT-BLUEPRINT)
◀
1 / 7
▶
−
100%
+
Fit
1:1
⬇ SVG